***  This class provides Binary Compatibility only, not Source Compatibility  ***

com.sas.services.discovery
Class JVMAttribute

com.sas.services.discovery.JVMAttribute
All Implemented Interfaces:
ServiceAttributeInterface, java.io.Serializable

public final class JVMAttribute

A foundation service discovery attribute which may be used to locate a service which has been instantiated in the local JVM or the same JVM as another previously discovered service.

When a service is deployed, a JVMAttribute will be added to its service discovery configuration. This will enable one to find a service that is deployed in a particular JVM.

Examples

Examples are provided to find a service that was deployed in:

Example 1: Find a service that was deployed in this JVM

To find a service that was instantiated in this JVM, define a service template that specifies one or more interfaces that the desired service must implement and this attribute using its default constructor.

The following example shows how to define a service template that can be used to discover an Authentication service that was deployed in this JVM.


import com.sas.services.discovery.DiscoveryService;
import com.sas.services.discovery.JVMAttribute;
import com.sas.services.discovery.ServiceAttributeInterface;
import com.sas.services.discovery.ServiceTemplate;
import com.sas.services.security.AuthenticationServiceInterface;

...

// specify the desired service type(s)
Class[] desiredServiceTypes = new Class[] {
   AuthenticationServiceInterface.class};

// specify the optional attributes to be used to qualify a discovery lookup
// to include only those services which were instantiated in this JVM
ServiceAttributeInterface[] serviceAttributes =
   new ServiceAttributeInterface[] {
      new JVMAttribute()};

// create a service lookup template specifying the required
// service interface(s) and a service attribute for a
// service that was instantiated in this JVM
ServiceTemplate serviceTemplate = new ServiceTemplate(
   desiredServiceTypes,
   serviceAttributes);

// discover a service satisfying the service template
AuthenticationServiceInterface authenticationService = (AuthenticationServiceInterface)
   DiscoveryService.defaultInstance().findService(serviceTemplate);

Example 2: Find a service that was deployed in the same JVM as another service

To find a service that was deployed in the same JVM as a previously discovered service, define a service template that specifies one or more interfaces that the desired service must implement and a JVMAttribute initialized with the desired ID which may be queried from a service's JVMAttribute stored in its service discovery configuration.

The following example shows how to define a service template that can be used to discover an Authentication Service that was instantiated in the same JVM as another service.


import com.sas.services.ServiceConfigurationInterface;
import com.sas.services.discovery.DiscoveryService;
import com.sas.services.discovery.JVMAttribute;
import com.sas.services.discovery.ServiceAttributeInterface;
import com.sas.services.discovery.ServiceDiscoveryConfigurationInterface;
import com.sas.services.discovery.ServiceTemplate;
import com.sas.services.security.AuthenticationServiceInterface;
import com.sas.services.user.UserServiceInterface;

...

// specify the desired service type(s)
final Class[] desiredServiceTypes = new Class[] {
   AuthenticationServiceInterface.class};

// part 1: 
// find a foundation User service and determine its JVM ID 
// from its service discovery configuration, so that we
// can lookup another service that was instantiated in the same JVM

ServiceTemplate serviceTemplate = new ServiceTemplate(
   new Class[] {UserServiceInterface.class});
RemoteServiceInterface userService = 
   DiscoveryService.defaultInstance().findService(serviceTemplate);

ServiceDiscoveryConfigurationInterface serviceDiscoveryConfig = 
   (ServiceDiscoveryConfigurationInterface) userService.getServiceConfiguration(
      ServiceConfigurationInterface.CONFIGURATION_SERVICE_DISCOVERY);
String jvmId = serviceDiscoveryConfig.getJVMId();

if (jvmId != null) {
   // part 2:
   // find a Authentication service that was deployed in the same JVM as the
   // previously discovered User service

   // specify the optional attributes to be used to qualify a discovery lookup
   // to include only those services which are not accessible to remote clients
   ServiceAttributeInterface[] serviceAttributes =
      new ServiceAttributeInterface[] {
         new JVMAttribute(jvmId)}; // ID of the desired JVM

   // create a service lookup template specifying the required
   // service interface(s) and a service attribute for a
   // service that was instantiated in the same JVM as the previously
   // discovered User service
   ServiceTemplate serviceTemplate = new ServiceTemplate(
      desiredServiceTypes,
      serviceAttributes);

   // discover a service satisfying the service template
   AuthenticationServiceInterface authenticationService = (AuthenticationServiceInterface)
      DiscoveryService.defaultInstance().findService(serviceTemplate);
}
 

Since:
9.2
See Also:
Serialized Form

Field Summary
static java.lang.String JVM_ID
          Identifier unique to this JVM that can be used to determine whether another service was instantiated in the same JVM.
 
Fields inherited from class com.sas.services.discovery.IdAttribute
id, idType
 
Constructor Summary
JVMAttribute()
          Constructs an instance of a service discovery attribute that is initialized with an identifier representing this JVM.
JVMAttribute(java.lang.String id)
          Constructs a service discovery attribute which may be used to lookup a service which has been instantiated in a JVM with the specified ID.
 
Method Summary
 
Methods inherited from class com.sas.services.discovery.IdAttribute
getFieldNameToValueMap
 
Methods inherited from class com.sas.services.AbstractServiceAttribute
equals, hashCode, toString
 

Field Detail

JVM_ID

public static final java.lang.String JVM_ID
Identifier unique to this JVM that can be used to determine whether another service was instantiated in the same JVM.

Constructor Detail

JVMAttribute

public JVMAttribute()
Constructs an instance of a service discovery attribute that is initialized with an identifier representing this JVM.

Use this constructor to instantiate a service discovery attribute to be associated with a service that is being instantiated in this JVM.

A discovery service consumer can use this constructor to create a service discovery attribute which may be used to locate a service that has been instantiated in the same JVM.

This constructor initializes the value of the id to the value of this JVM's id.


JVMAttribute

public JVMAttribute(java.lang.String id)
Constructs a service discovery attribute which may be used to lookup a service which has been instantiated in a JVM with the specified ID.

Parameters:
id - The ID of the JVM attribute.

If you wish to locate a foundation service that has been started in the same JVM use the default constructor JVMAttribute() instead.


***  This class provides Binary Compatibility only, not Source Compatibility  ***




Copyright © 2009 SAS Institute Inc. All Rights Reserved.