此内容没有您所选择的语言版本。
9.4. Implement an HA Singleton
The following procedure demonstrates how to deploy of a Service that is wrapped with the SingletonService decorator and used as a cluster-wide singleton service. The service activates a scheduled timer, which is started only once in the cluster.
Procedure 9.3. Implement an HA Singleton Service
- Write the HA singleton service application. The following is a simple example of a- Servicethat is wrapped with the- SingletonServicedecorator to be deployed as a singleton service. A complete example can be found in the- cluster-ha-singletonquickstart that ships with Red Hat JBoss Enterprise Application Platform 6. This quickstart contains all the instructions to build and deploy the application.- Create a service. The following listing is an example of a service:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Create an activator that installs the - Serviceas a clustered singleton.The following listing is an example of a Service activator that installs the- HATimerServiceas a clustered singleton service:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Note The above code example uses a class,- org.jboss.as.clustering.singleton.SingletonService, that is part of the JBoss EAP private API. A public API will become available in the EAP 7 release and the private class will be deprecated, but this classes will be maintained and available for the duration of the EAP 6.x release cycle.
- Create a ServiceActivator File Create a file named- org.jboss.msc.service.ServiceActivatorin the application's- resources/META-INF/services/directory. Add a line containing the fully qualified name of the ServiceActivator class created in the previous step.- org.jboss.as.quickstarts.cluster.hasingleton.service.ejb.HATimerServiceActivator - org.jboss.as.quickstarts.cluster.hasingleton.service.ejb.HATimerServiceActivator- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Create a Singleton bean that implements a timer to be used as a cluster-wide singleton timer. This Singleton bean must not have a remote interface and you must not reference its local interface from another EJB in any application. This prevents a lookup by a client or other component and ensures the SingletonService has total control of the Singleton.- Create the Scheduler interface - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- Create the Singleton bean that implements the cluster-wide singleton timer. - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
 
- Start each JBoss EAP 6 instance with clustering enabled. To enable clustering for standalone servers, you must start each server with the- HAprofile, using a unique node name and port offset for each instance.- For Linux, use the following command syntax to start the servers:EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSET EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSETCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example 9.5. Start multiple standalone servers on Linux EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node1 EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100 $ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node1 $ EAP_HOME/bin/standalone.sh --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
- For Microsoft Windows, use the following command syntax to start the servers:EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSET EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=UNIQUE_NODE_NAME -Djboss.socket.binding.port-offset=PORT_OFFSETCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example 9.6. Start multiple standalone servers on Microsoft Windows C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node1 C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100 C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node1 C:> EAP_HOME\bin\standalone.bat --server-config=standalone-ha.xml -Djboss.node.name=node2 -Djboss.socket.binding.port-offset=100Copy to Clipboard Copied! Toggle word wrap Toggle overflow 
 - Note If you prefer not to use command line arguments, you can configure the- standalone-ha.xmlfile for each server instance to bind on a separate interface.
- Deploy the application to the servers The following Maven command deploys the application to a standalone server running on the default ports.- mvn clean install jboss-as:deploy - mvn clean install jboss-as:deploy- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow To deploy to additional servers, pass the server name. if it is on a different host, pass the host name and port number on the command line:- mvn clean package jboss-as:deploy -Djboss-as.hostname=localhost -Djboss-as.port=10099 - mvn clean package jboss-as:deploy -Djboss-as.hostname=localhost -Djboss-as.port=10099- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow See the- cluster-ha-singletonquickstart that ships with JBoss EAP 6 for Maven configuration and deployment details.