DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
Overview
Geronimo now has some basic support for SFSB clustering. If you would like to give it a try then here are some instructions.
Create a clustered EJB module.
- SFSBs must implement Serializable even if they are EJB3 SFSBs.
- In the geronimo-openejb DD, include the 'openejb-clustering-wadi' element.
I have done some testing with an OpenEJB example, namely CounterImpl, that you can co from https://svn.apache.org/repos/asf/openejb/trunk/openejb3/examples/simple-stateful. Note that you need to update CounterImpl so that it implements Serializable.
And here is the geronimo-opejnejb.xml plan I am using:
| Code Block | ||||
|---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar xmlns="http://geronimo.apache.org/xml/ns/j2ee/ejb/openejb-2.0"
xmlns:wadi="http://geronimo.apache.org/xml/ns/openejb-clustering-wadi-1.2">
<environment>
<moduleId>
<groupId>org.codehaus.wadi</groupId>
<artifactId>wadi-openejb</artifactId>
<version>2.0-SNAPSHOT</version>
<type>jar</type>
</moduleId>
</environment>
<wadi:openejb-clustering-wadi>
<wadi:deltaReplication>false</wadi:deltaReplication>
</wadi:openejb-clustering-wadi>
</ejb-jar>
|
Deploy clustering EJB Module
Create and start an additional Geronimo Server
- To create another instance, say NODE2, you can execute the following commands from the Geronimo install dir:
Panel mkdir NODE2
cp -r var NODE2
perl -pi -e 's/PortOffset=0/PortOffset=1/' NODE2/var/config/config-substitutions.properties
perl -pi -e 's/clusterNodeName=NODE/clusterNodeName=NODE2/' NODE2/var/config/config-substitutions.properties
- To start this instance, within gshell type:
Panel geronimo/start-server -G server.name=NODE2 -b
Test the clustered SFSBs
If you are also using CounterImpl, then you can use this snippet:
| Code Block |
|---|
Properties properties = new Properties();
properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
properties.setProperty(Context.PROVIDER_URL, "ejbd://0.0.0.0:4201");
InitialContext remoteContext = new InitialContext(properties);
CounterRemote counterRemote = (CounterRemote) remoteContext.lookup("CounterImplRemote");
int cpt = counterRemote.increment();
System.out.println(cpt);
cpt = counterRemote.increment();
System.out.println(cpt);
cpt = counterRemote.increment();
System.out.println(cpt);
|
To actually trial the clustering:
- put a breakpoint on the last increment;
- kill -9 the 'default' Geronimo Server
- continue your debug session. 3 should be printed.
This is a test demonstrating replication.