Registry Service Tutorial 3 - Discovering Resources in a Registry
This tutorial describes how to discover resources in a registry
Tutorials on how to use the GRIA Client Interface API
Page
15
of
15.
We must declare the proxy to our Registry Service and find our registry resource.
private static String REG_ID
= "40894e36-16240474-0116-241035c3-0001";
private static String REGISTRY_SERVICE_ENDPOINT
= "https://hostname:port/gria-client-mgt/services/CltMgtRegistryService";
StateRepository repository = new MemoryStateRepository();
RemoteCltMgtRegistryService registryService = (RemoteCltMgtRegistryService)
repository.getOrCreateObject(RemoteCltMgtRegistryService.class,
ConversationID.getEPR(REGISTRY_SERVICE_ENDPOINT));
CltMgtRegistryResourceConversation reg = null;
try {
EndpointReferenceType[] eprs = registryService.getResources();
for(EndpointReferenceType epr : eprs){
if(ConversationID.getConversationFromEPR(epr).equals(REG_ID))
reg = repository.getOrCreateObject(CltMgtRegistryResourceConversation.class,epr);
}
} catch (RemoteException e) {
throw new RuntimeException(e);
}
if(reg==null)
throw new RuntimeException("Could not get Resource '"+REG_ID+"'");
else
System.out.println("Found Registry '"+reg+"'");
Now we call getRegisteredResources on the Registry with the parameter 'Reference' and it returns a list of EPR's registered.
try {
for(EndpointReferenceType epr : reg.getRegisteredResources("Reference"))
System.out.println("Resource :"+ConversationID.getURLReferenceFromEPR(epr));
} catch (RemoteException e) {
throw new RuntimeException(e);
}
Full Java Code
package workflow;
import java.rmi.RemoteException;
import javax.swing.JOptionPane;
import org.apache.axis.message.addressing.EndpointReferenceType;
import com.sun.corba.se.spi.legacy.connection.GetEndPointInfoAgainException;
import uk.ac.soton.ecs.iam.grid.client.staterepos.MemoryStateRepository;
import uk.ac.soton.ecs.iam.grid.comms.client.Conversation;
import uk.ac.soton.ecs.iam.grid.comms.client.DataConversation;
import uk.ac.soton.ecs.iam.grid.comms.client.RemoteDataService;
import uk.ac.soton.ecs.iam.grid.comms.client.RemoteService;
import uk.ac.soton.ecs.iam.grid.comms.client.SLAConversation;
import uk.ac.soton.ecs.iam.grid.comms.client.StateRepository;
import uk.ac.soton.itinnovation.grid.client.registry.CltMgtRegistryResourceConversation;
import uk.ac.soton.itinnovation.grid.client.registry.RemoteCltMgtRegistryService;
import uk.ac.soton.itinnovation.grid.types.ConversationID;
import uk.ac.soton.itinnovation.grid.types.MatchRule;
import uk.ac.soton.itinnovation.grid.types.PolicyRule;
import uk.ac.soton.itinnovation.grid.types.SubjectDescription;
public class RegistryTutorial3 {
private static String REG_ID
= "40894e36-16240474-0116-241035c3-0001";
private static String REGISTRY_SERVICE_ENDPOINT
= "https://hostname:port/gria-client-mgt/services/CltMgtRegistryService";
public static void main(String[] args) {
StateRepository repository = new MemoryStateRepository();
RemoteCltMgtRegistryService registryService = (RemoteCltMgtRegistryService)
repository.getOrCreateObject(RemoteCltMgtRegistryService.class,
ConversationID.getEPR(REGISTRY_SERVICE_ENDPOINT));
CltMgtRegistryResourceConversation reg = null;
try {
EndpointReferenceType[] eprs = registryService.getResources();
for(EndpointReferenceType epr : eprs){
if(ConversationID.getConversationFromEPR(epr).equals(REG_ID))
reg = repository.getOrCreateObject(CltMgtRegistryResourceConversation.class,epr);
}
} catch (RemoteException e) {
throw new RuntimeException(e);
}
if(reg==null)
throw new RuntimeException("Could not get Resource '"+REG_ID+"'");
else
System.out.println("Found Registry '"+reg+"'");
try {
for(EndpointReferenceType epr : reg.getRegisteredResources("Reference"))
System.out.println("Resource :"+ConversationID.getURLReferenceFromEPR(epr));
} catch (RemoteException e) {
throw new RuntimeException(e);
}
}
}
