Deploying User Code
In addition to peer class loading, you can deploy user code by configuring UriDeploymentSpi
. With this approach, you specify the location of your libraries in the node configuration.
GridGain scans the location periodically and redeploys the classes if they change.
The location may be a file system directory or an HTTP(S) location.
When GridGain detects that the libraries are removed from the location, the classes are undeployed from the cluster.
You can specify multiple locations (of different types) by providing both directory paths and http(s) URLs.
Items that can be deployed via UriDeploymentSpi
are:
-
GridGain compute tasks
-
GridGain services
-
Java POJO that aren’t included in the classpath
For a more detailed description of all UriDeploymentSpi
-based deployment cases, see this tutorial.
Deploying from a Local Directory
To deploy libraries from a file system directory, add the directory path to the list of URIs in the UriDeploymentSpi
configuration.
The directory must exist on the nodes where it is specified and contain jar files with the classes you want to deploy.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="deploymentSpi">
<bean class="org.apache.ignite.spi.deployment.uri.UriDeploymentSpi">
<property name="temporaryDirectoryPath" value="/tmp/temp_ignite_libs"/>
<property name="uriList">
<list>
<value>file://freq=2000@localhost/home/username/user_libs</value>
</list>
</property>
</bean>
</property>
</bean>
</beans>
IgniteConfiguration cfg = new IgniteConfiguration();
UriDeploymentSpi deploymentSpi = new UriDeploymentSpi();
deploymentSpi.setUriList(Arrays.asList("file://freq=2000@localhost/home/username/user_libs"));
cfg.setDeploymentSpi(deploymentSpi);
try (Ignite ignite = Ignition.start(cfg)) {
//execute the task represented by a class located in the "user_libs" directory
ignite.compute().execute("org.mycompany.HelloWorldTask", "My Args");
}
This API is not presently available for C#/.NET. You can use XML configuration.
This API is not presently available for C++. You can use XML configuration.
You can pass the following parameter in the URL:
Parameter | Description | Default Value |
---|---|---|
|
Scanning frequency in milliseconds. |
|
Deploying from a URL
To deploy libraries from an http(s) location, add the URL to the list of URIs in the UriDeploymentSpi
configuration.
GridGain parses the HTML file to find the HREF attributes of all <a>
tags on the page.
The references must point to the jar files you want to deploy.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="deploymentSpi">
<bean class="org.apache.ignite.spi.deployment.uri.UriDeploymentSpi">
<property name="temporaryDirectoryPath" value="/tmp/temp_ignite_libs"/>
<property name="uriList">
<list>
<value>http://username:password;freq=10000@www.mysite.com:110/ignite/user_libs</value>
</list>
</property>
</bean>
</property>
</bean>
</beans>
IgniteConfiguration cfg = new IgniteConfiguration();
UriDeploymentSpi deploymentSpi = new UriDeploymentSpi();
deploymentSpi.setUriList(Arrays
.asList("http://username:password;freq=10000@www.mysite.com:110/ignite/user_libs"));
cfg.setDeploymentSpi(deploymentSpi);
try (Ignite ignite = Ignition.start(cfg)) {
//execute the task represented by a class located in the "user_libs" url
ignite.compute().execute("org.mycompany.HelloWorldTask", "My Args");
}
This API is not presently available for C#/.NET. You can use XML configuration.
This API is not presently available for C++. You can use XML configuration.
You can pass the following parameter in the URL:
Parameter | Description | Default Value |
---|---|---|
|
Scanning frequency in milliseconds. |
|
© 2024 GridGain Systems, Inc. All Rights Reserved. Privacy Policy | Legal Notices. GridGain® is a registered trademark of GridGain Systems, Inc.
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.