Difference between revisions of "IS-Cache"
(→Usage) |
|||
(17 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | The IS-Cache provides simple and flexible methods for retrieving and caching the Endpoint references of gCube web services published in the IS. | + | The IS-Cache provides simple and flexible methods for retrieving and caching the Endpoint references of gCube web services published in the IS. A component that uses the IS-Cache library, is able to retrieve Endpoint references for: |
+ | * services' Running Instances | ||
+ | * factory services' Running Instances | ||
+ | * Web Service statefull resources | ||
+ | |||
+ | Additionally the IS-Cache provides an option for further restricting the final results, by using custom filtering criteria. | ||
+ | |||
+ | ==Usage== | ||
+ | |||
+ | The first step for using the ISCache is to create an instance for a specific scope through the following constructor | ||
+ | |||
+ | <source lang="java"> | ||
+ | |||
+ | /** | ||
+ | * Constructor | ||
+ | * @param scope scope | ||
+ | */ | ||
+ | public ISCache(GCUBEScope scope); | ||
+ | |||
+ | </source> | ||
+ | |||
+ | Then using this instance a component can find the EPRs for services' RIs by using the following method | ||
+ | |||
+ | <source lang="java"> | ||
+ | |||
+ | /** | ||
+ | * Get the running instances (array of URLs) of the specified service | ||
+ | * | ||
+ | * @param srvClass | ||
+ | * service class | ||
+ | * @param srvName | ||
+ | * service name | ||
+ | * @param srvType | ||
+ | * service type | ||
+ | * @return the running instances (array of URLs) of the specified service | ||
+ | * @throws Exception | ||
+ | * in case of error; most probably due to the fact that the | ||
+ | * specified service is not registered. | ||
+ | * @see org.gcube.informationsystem.cache.ISCacheMBean#getEPRsFor(String, String, | ||
+ | * String) | ||
+ | */ | ||
+ | public EndpointReference[] getEPRsFor(String srvClass, String srvName, String srvType); | ||
+ | |||
+ | </source> | ||
+ | |||
+ | For example consider the case where a component needs to find the EPRs of the "SearchSystemService": | ||
+ | |||
+ | <source lang="java"> | ||
+ | |||
+ | EndpointReference[] eprs = isCache.getEPRsFor("Search", "SearchSystemService", "SIMPLE"); | ||
+ | </source> | ||
+ | |||
+ | There are three options for the "srvType" option: | ||
+ | * SIMPLE - for all the service's EPRs (including the factory porttypes of this service) | ||
+ | * FACTORY - for the service's endpoints that contain the word "Factory" (this means that we need only the factory porttypes of this service) | ||
+ | * STATEFULL - for the EPRs of the WS resources of a statefull service | ||
+ | |||
+ | Note that the ISCache periodically harvests the IS, in order to retrieve information for the requested services. Thus, the results of the afforementioned method are pre-fetched(after the first request for a specific service). | ||
+ | |||
+ | The ISCache also provides an option for custom filtering criteria through the following method: | ||
+ | |||
+ | <source lang="java"> | ||
+ | |||
+ | /** | ||
+ | * Add new filtering criterion on a specific service on a given type. This | ||
+ | * filtering criterion applies only for the given service type. | ||
+ | * | ||
+ | * @param srvClass | ||
+ | * service class | ||
+ | * @param srvName | ||
+ | * service name | ||
+ | * @param srvType | ||
+ | * service type | ||
+ | * @param critVar | ||
+ | * criterion r-value | ||
+ | * @param critVal | ||
+ | * criterion l-value | ||
+ | * @return true if the critVar has not been added before; false otherwise | ||
+ | * @throws Exception | ||
+ | * in case of error | ||
+ | * @see org.gcube.informationsystem.cache.ISCacheMBean#addFilterCriterion(String, | ||
+ | * String, String, String, String) | ||
+ | */ | ||
+ | public boolean addFilterCriterion(String srvClass, String srvName, | ||
+ | String srvType, String critVar, String critVal); | ||
+ | |||
+ | </source> | ||
+ | |||
+ | For each filtering criteria added, we add a new [[ IS-Client#Pre-defined_Queries:_Querying_GCUBEResources | AtomicCondition ]] to the [[ IS-Client | ISClient ]] query for the corresponding service(defined by the srvClass, srvName, srvType triple ). The new AtomicCondition contains the pair "critVar" - "critVal": | ||
+ | |||
+ | <source lang="java"> | ||
+ | new AtomicCondition(critVar, critVal) | ||
+ | </source> | ||
+ | |||
+ | For more details read the javadoc of the ISCache. |
Latest revision as of 10:56, 13 October 2011
The IS-Cache provides simple and flexible methods for retrieving and caching the Endpoint references of gCube web services published in the IS. A component that uses the IS-Cache library, is able to retrieve Endpoint references for:
- services' Running Instances
- factory services' Running Instances
- Web Service statefull resources
Additionally the IS-Cache provides an option for further restricting the final results, by using custom filtering criteria.
Usage
The first step for using the ISCache is to create an instance for a specific scope through the following constructor
/** * Constructor * @param scope scope */ public ISCache(GCUBEScope scope);
Then using this instance a component can find the EPRs for services' RIs by using the following method
/** * Get the running instances (array of URLs) of the specified service * * @param srvClass * service class * @param srvName * service name * @param srvType * service type * @return the running instances (array of URLs) of the specified service * @throws Exception * in case of error; most probably due to the fact that the * specified service is not registered. * @see org.gcube.informationsystem.cache.ISCacheMBean#getEPRsFor(String, String, * String) */ public EndpointReference[] getEPRsFor(String srvClass, String srvName, String srvType);
For example consider the case where a component needs to find the EPRs of the "SearchSystemService":
EndpointReference[] eprs = isCache.getEPRsFor("Search", "SearchSystemService", "SIMPLE");
There are three options for the "srvType" option:
- SIMPLE - for all the service's EPRs (including the factory porttypes of this service)
- FACTORY - for the service's endpoints that contain the word "Factory" (this means that we need only the factory porttypes of this service)
- STATEFULL - for the EPRs of the WS resources of a statefull service
Note that the ISCache periodically harvests the IS, in order to retrieve information for the requested services. Thus, the results of the afforementioned method are pre-fetched(after the first request for a specific service).
The ISCache also provides an option for custom filtering criteria through the following method:
/** * Add new filtering criterion on a specific service on a given type. This * filtering criterion applies only for the given service type. * * @param srvClass * service class * @param srvName * service name * @param srvType * service type * @param critVar * criterion r-value * @param critVal * criterion l-value * @return true if the critVar has not been added before; false otherwise * @throws Exception * in case of error * @see org.gcube.informationsystem.cache.ISCacheMBean#addFilterCriterion(String, * String, String, String, String) */ public boolean addFilterCriterion(String srvClass, String srvName, String srvType, String critVar, String critVal);
For each filtering criteria added, we add a new AtomicCondition to the ISClient query for the corresponding service(defined by the srvClass, srvName, srvType triple ). The new AtomicCondition contains the pair "critVar" - "critVal":
new AtomicCondition(critVar, critVal)
For more details read the javadoc of the ISCache.