|
GridGain 2.1.0
Java API Specification |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.gridgain.grid.spi.GridSpiAdapter
org.gridgain.grid.spi.deployment.uri.GridUriDeploymentSpi
@GridSpiInfo(author="GridGain Systems",
url="www.gridgain.org",
email="support@gridgain.com",
version="x.x")
@GridSpiMultipleInstancesSupport(value=true)
public class GridUriDeploymentSpi
Implementation of GridDeploymentSpi which can deploy tasks from
different sources like file system folders, FTP, email and HTTP.
There are different ways to deploy tasks in grid and every deploy method
depends on selected source protocol. This SPI is configured to work
with a list of URI's. Every URI contains all data about protocol/transport
plus configuration parameters like credentials, scan frequency, and others.
When SPI establishes a connection with a URI, it downloads deployable units
to the temporary directory in order to prevent it from any changes while
scanning. Use method setTemporaryDirectoryPath(String))
to set custom temporary folder for downloaded deployment units.
SPI tracks all changes of every given URI. This means that if any file is
changed or deleted, SPI will re-deploy or delete corresponding tasks.
Note that the very first call to GridUriDeploymentSpi.findResource(String) findClassLoader(String)}
is blocked until SPI finishes scanning all URI's at least once.
There are several deployable unit types supported:
GAR file structure (file or directory ending with '.gar'):
META-INF/
|
- gridgain.xml
- ...
lib/
|
-some-lib.jar
- ...
xyz.class
...
GridTask interface. In that case, all grid task classes must have a
public no-argument constructor. Use GridTaskAdapter adapter for
convenience when creating grid tasks.
By default, all downloaded GAR files that have digital signature in META-INF folder will be verified and and deployed only if signature is valid.
java.net.URI documentation.
[scheme:][//authority][path][?query][#fragment]
Every URI defines its own deployment repository which will be scanned for any changes. URI itself has all information about protocol, connectivity, scan intervals and other parameters.
URI's may contain special characters, like spaces. If encodeUri
flag is set to true (see GridUriDeploymentSpi.setEncodeUri(boolean)), then
URI 'path' field will be automatically encoded. By default this flag is
set to true.
setTemporaryDirectoryPath(String)).
GridUriDeploymentSpi.setUriList(List)). If not
specified, then URI specified by DFLT_DEPLOY_DIR is used.
setEncodeUri(boolean)).
Following parameters are supported for FILE protocol:
| Parameter | Description | Optional | Default |
|---|---|---|---|
| freq | File directory scan frequency in milliseconds. | Yes | 5000 ms specified in DFLT_DISK_SCAN_FREQUENCY. |
setEncodeUri(boolean) parameter must
be set to true (which is default behavior).
file://freq=5000@localhost/c:/Program files/gridgain/deployment
GridTask interface.
This protocol comes very handy during development, as it allows developer
to specify IDE compilation output folder as URI and all task classes
in that folder will be deployed automatically.
Following parameters are supported for CLASSES protocol:
| Parameter | Description | Optional | Default |
|---|---|---|---|
| freq | File directory scan frequency in milliseconds. | Yes | 5000 ms specified in DFLT_DISK_SCAN_FREQUENCY. |
setEncodeUri(boolean) parameter must
be set to true (which is default behavior).
classes://freq=5000@localhost/c:/Program files/gridgain/deployment
| Parameter | Description | Optional | Default |
|---|---|---|---|
| freq | FTP location scan frequency in milliseconds. | Yes | 300000 ms specified in DFLT_FTP_SCAN_FREQUENCY. |
| username:password | FTP username and password specified in standard URI server-based authority format. | No | --- |
ftp://username:password;freq=10000@localhost:21/gridgain/deployment
The following parameters are supported for Mail protocols:
| Parameter | Description | Optional | Default |
|---|---|---|---|
| freq | Main inbox scan frequency in milliseconds. | Yes | 300000 ms specified in DFLT_MAIL_SCAN_FREQUENCY. |
| username:password | Mail username and password specified in standard URI server-based authority format. | No | --- |
| auth |
Connection type. Can be one of the following:
|
Yes | none |
| subj | Subject filter for mail messages used by SPI. All messages with different subjects will be ignored. | Yes |
'grid.email.deploy.msg' specified in
DFLT_MAIL_SUBJECT
|
pop3://username:password;auth=ssl;freq=120000@pop.gmail.com:995
The following parameters are supported for HTTP protocols:
| Parameter | Description | Optional | Default |
|---|---|---|---|
| freq | HTTP directory scan frequency in milliseconds. | Yes | 300000 ms specified in DFLT_HTTP_SCAN_FREQUENCY. |
| username:password | Optional HTTP directory username and password specified in standard URI server-based authority format. | Yes | --- |
http://username:password;freq=10000@www.mysite.com:110/gridgain/deployment
GridUriDeploymentSpi deploySpi = new GridUriDeploymentSpi();
GridConfigurationAdapter cfg = new GridConfigurationAdapter();
List<String> uris = new ArrayList<String>(5);
uris.add("http://www.site.com/tasks");
uris.add("ftp://ftpuser:password;freq=10000@localhost:21/gg-test/deployment");
uris.add("file://freq=20000@localhost/c:/Program files/gg-deployment");
uris.add("pop3://test%20user:test%20password;subj=grid.deploy.subj;auth=none@pop.mail.ru:110");
uris.add("classes:///c:/Java_Projects/myproject/out");
// Set URIs.
deploySpi.setUriList(uris);
// Override temporary directory path.
deploySpi.setTemporaryDirectoryPath("c:/tmp/grid");
// Override default deployment SPI.
cfg.setDeploymentSpi(deploySpi);
// Start grid.
GridFactory.start(cfg);
<bean id="grid.custom.cfg" class="org.gridgain.grid.GridConfigurationAdapter" singleton="true">
...
<property name="deploymentSpi">
<bean class="org.gridgain.grid.spi.deployment.uri.GridUriDeploymentSpi">
<property name="temporaryDirectoryPath" value="c:/tmp/grid"/>
<property name="uriList">
<list>
<value>http://www.site.com/tasks</value>
<value>ftp://ftpuser:password;freq=10000@localhost:21/gg-test/deployment</value>
<value>file://freq=20000@localhost/c:/Program files/gg-deployment</value>
<value>pop3://test%20user:test%20password;subj=grid.deploy.subj;auth=none@pop.mail.ru:110</value>
<value>classes:///c:/Java_Projects/myproject/out</value>
</list>
</property>
</bean>
</property>
...
</bean>
For information about Spring framework visit www.springframework.org
See Also:
Documentation
Email Support
Online Forums
Issue Tracking
Author: 2005-2008 Copyright © GridGain Systems. All Rights Reserved. ver. 2.1.0
GridDeploymentSpi
![]() |
![]() |
![]() |
![]() |
| Field Summary | |
|---|---|
static String |
DEPLOY_TMP_ROOT_NAME
Default temporary directory name relative to file path GridUriDeploymentSpi.setTemporaryDirectoryPath(String)} (value is gg.deploy). |
static String |
DFLT_DEPLOY_DIR
Default deployment directory where SPI will pick up GAR files (value is work/deployment/file). |
static int |
DFLT_DISK_SCAN_FREQUENCY
Default scan frequency for file:// and classes:// protocols (value is 5000). |
static int |
DFLT_FTP_SCAN_FREQUENCY
Default scan frequency for ftp:// protocol (value is 300000). |
static int |
DFLT_HTTP_SCAN_FREQUENCY
Default scan frequency for http:// protocol (value is 300000). |
static int |
DFLT_MAIL_SCAN_FREQUENCY
Default scan frequency for pop3://, pop3s://, imap://, imaps:// protocols (value is 300000 which is 5 minutes). |
static String |
DFLT_MAIL_SUBJECT
Default Mail subject. |
static String |
XML_DESCRIPTOR_PATH
Default task description file path and name (value is META-INF/gridgain.xml). |
| Constructor Summary | |
|---|---|
GridUriDeploymentSpi()
|
|
| Method Summary | |
|---|---|
GridDeploymentResource |
findResource(String rsrcName)
Finds class loader for the given class. |
protected List<String> |
getConsistentAttributeNames()
Returns back list of attributes that should be consistent for this SPI. |
String |
getTemporaryDirectoryPath()
Gets temporary directory path. |
List<String> |
getUriList()
Gets list of URIs that are processed by SPI. |
boolean |
register(ClassLoader ldr,
Class<?> rsrc)
Registers a class loader with this SPI. |
void |
setEncodeUri(boolean encodeUri)
Indicates that URI must be encoded before usage. |
void |
setListener(GridDeploymentListener lsnr)
Sets deployment event listener. |
void |
setTemporaryDirectoryPath(String tmpDirPath)
Sets absolute path to temporary directory which will be used by deployment SPI to keep all deployed classes in. |
void |
setUriList(List<String> uriList)
Sets list of URI which point to GAR file and which should be scanned by SPI for the new tasks. |
void |
spiStart(String gridName)
This method is called to start SPI. |
void |
spiStop()
This method is called to stop SPI. |
String |
toString()
|
boolean |
unregister(String rsrcName)
Unregisters all class loaders that have a class with given name or have a class with give GridTaskName value. |
| Methods inherited from class org.gridgain.grid.spi.GridSpiAdapter |
|---|
assertParameter, configInfo, createSpiAttributeName, getAuthor, getGridGainHome, getLocalNodeId, getName, getNodeAttributes, getSpiContext, getStartTimestamp, getStartTimestampFormatted, getUpTime, getUpTimeFormatted, getVendorEmail, getVendorUrl, getVersion, onContextDestroyed, onContextInitialized, registerMBean, setName, setSpiContext, startInfo, startStopwatch, stopInfo, unregisterMBean |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.gridgain.grid.spi.GridSpi |
|---|
getName, getNodeAttributes, onContextDestroyed, onContextInitialized |
| Methods inherited from interface org.gridgain.grid.spi.GridSpiManagementMBean |
|---|
getAuthor, getGridGainHome, getLocalNodeId, getName, getStartTimestamp, getStartTimestampFormatted, getUpTime, getUpTimeFormatted, getVendorEmail, getVendorUrl, getVersion |
| Field Detail |
|---|
public static final String DFLT_DEPLOY_DIR
public static final int DFLT_DISK_SCAN_FREQUENCY
public static final int DFLT_FTP_SCAN_FREQUENCY
public static final int DFLT_HTTP_SCAN_FREQUENCY
public static final int DFLT_MAIL_SCAN_FREQUENCY
public static final String DFLT_MAIL_SUBJECT
public static final String XML_DESCRIPTOR_PATH
public static final String DEPLOY_TMP_ROOT_NAME
GridUriDeploymentSpi.setTemporaryDirectoryPath(String)} (value is gg.deploy).
| Constructor Detail |
|---|
public GridUriDeploymentSpi()
| Method Detail |
|---|
@GridSpiConfiguration(optional=true) public void setTemporaryDirectoryPath(String tmpDirPath)
If not provided, default value is java.io.tmpdir system property value.
tmpDirPath - Temporary directory path.@GridSpiConfiguration(optional=true) public void setUriList(List<String> uriList)
If not provided, default value is list with file://${GRIDGAIN_HOME}/work/deployment/file element.
uriList - GAR file URIs.@GridSpiConfiguration(optional=true) public void setEncodeUri(boolean encodeUri)
If not provided, default value is true.
encodeUri - true if every URI should be encoded and
false otherwise.public String getTemporaryDirectoryPath()
getTemporaryDirectoryPath in interface GridUriDeploymentSpiMBeanpublic List<String> getUriList()
getUriList in interface GridUriDeploymentSpiMBeanpublic void setListener(GridDeploymentListener lsnr)
setListener in interface GridDeploymentSpilsnr - Listener for deployment events.
public void spiStop()
throws GridSpiException
spiStop in interface GridSpiGridSpiException - Thrown in case of any error during SPI stop.
public void spiStart(String gridName)
throws GridSpiException
spiStart in interface GridSpiGridSpiException - Throws in case of any error during SPI start.gridName - Name of grid instance this SPI is being started for
(null for default grid).public GridDeploymentResource findResource(String rsrcName)
findResource in interface GridDeploymentSpirsrcName - Class name or class alias to find class loader for.
public boolean register(ClassLoader ldr,
Class<?> rsrc)
throws GridSpiException
The array of classes passed in should be checked for presence of
GridTaskName annotations. The classes that have this annotation
should be accessible by this name from GridDeploymentSpi.findResource(String) method.
register in interface GridDeploymentSpiGridSpiException - If registration failed.ldr - Class loader to register.rsrc - Class that should be checked for aliases.
Currently the only alias in the system is GridTaskName for
task classes; in future, there may be others.
public boolean unregister(String rsrcName)
GridTaskName value.
unregister in interface GridDeploymentSpirsrcName - Either class name or GridTaskName value for a class
whose class loader needs to be unregistered.
protected List<String> getConsistentAttributeNames()
getConsistentAttributeNames in class GridSpiAdapterpublic String toString()
toString in class Object
|
GridGain 2.1.0
Java API Specification |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
|
GridGain - Grid Computing Made Simple, ver. 2.1.0.19122008
2005-2008 Copyright © GridGain Systems. All Rights Reserved. |
|
|