[JBoss Cache: Core Edition] - Re: Failure Detection when group coordinator dies
by luckywhd
"manik.surtani(a)jboss.com" wrote : Have you tried using both?
I quess we cold try if that helps...
Below is a bit more detailed example of the hanging up of our cluster. It isn't excatly the same I described above (new coordinator is assigned when current dies), but still deals with the problem related to coordinator.
Nodes in the cluster: A,B,C,D,E,F
1. Node A (the current coordinator) is shut down
-> Node C becomes a new coordinator
2. Node A is restarted
-> Node A sees two candidates for the coordinator: itself and C
-> Node A's join message to node C times out, A is unable to join the cluster
3. Node E is restarted
-> Node E sees two candidates for the coordinator: node A (node A is currently dead!) and C
-> Node E's join message to node C times out, E is unable to join the cluster
4. Node C is shut down
-> Node B becomes a new coordinator
5. Node A, E and C are restarted
-> each node is able to join the cluster
Summary of the problems encountered:
- nodes were unable to join the cluster when it was assigned a new coordinator (C)
- even though ex-coordinator (A) was down, it was still seen as a candidate for the coordinator
- new coordinator (C) had to be shut down and new coordinator voted (B) in order to get the cluster working again
I'm wondering if the problem might be in shutting down the original coordinator (A). Here are the log messages of node A (10.195.0.121) when it is shut down, the missing ACK is from node C (10.195.0.123), which becomes a new coordinator:
| 12:00:09,500 INFO [resin-destroy] TreeCache:1616 - stopService(): closing the channel
| 12:00:11,567 WARN [ViewHandler] GMS:409 - failed to collect all ACKs (5) for view [10.195.0.121:60413|44] [10.195.0.123:48908, 10.195.0.112:35954, 10.195.0.122:54362, 10.195.0.120:38607, 10.195.0.105:54567] after 2000ms, missing ACKs from [10.195.0.123:48908] (received=[10.195.0.112:35954, 10.195.0.120:38607, 10.195.0.105:54567, 10.195.0.121:60413, 10.195.0.122:54362]), local_addr=10.195.0.121:60413
| 12:00:11,572 INFO [resin-destroy] TreeCache:1622 - stopService(): stopping the dispatcher
| 12:00:12,073 WARN [resin-destroy] TreeCache:413 - Unexpected error during removal. jboss.cache:service=TreeCache-Invalidation-Cluster-prod
| javax.management.InstanceNotFoundException: jboss.system:service=ServiceController
| at com.caucho.jmx.AbstractMBeanServer.invoke(AbstractMBeanServer.java:728)
| at org.jboss.system.ServiceMBeanSupport.postDeregister(ServiceMBeanSupport.java:409)
| at com.caucho.jmx.MBeanContext.unregisterMBean(MBeanContext.java:304)
| at com.caucho.jmx.MBeanContext.destroy(MBeanContext.java:565)
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
| at java.lang.reflect.Method.invoke(Method.java:585)
| at com.caucho.loader.WeakCloseListener.classLoaderDestroy(WeakCloseListener.java:86)
| at com.caucho.loader.Environment.closeGlobal(Environment.java:621)
| at com.caucho.server.resin.ResinServer.destroy(ResinServer.java:653)
| at com.caucho.server.resin.Resin$1.run(Resin.java:639)
|
When the A (10.195.0.121) is shut down, nodes B,D,E,F log:
| 12:00:09,559 INFO [UpHandler (STATE_TRANSFER)] TreeCache:5673 - viewAccepted(): [10.195.0.121:60413|44] [10.195.0.123:48908, 10.195.0.112:35954, 10.195.0.122:54362, 10.195.0.120:38607, 10.195.0.105:54567]
| 12:00:36,662 INFO [UpHandler (STATE_TRANSFER)] TreeCache:5673 - viewAccepted(): [10.195.0.123:48910|44] [10.195.0.123:48910, 10.195.0.112:35956, 10.195.0.122:54364, 10.195.0.120:38610, 10.195.0.105:54569]
|
but node C (10.195.0.123) only logs:
| 12:00:36,662 INFO [UpHandler (STATE_TRANSFER)] TreeCache:5673 - viewAccepted(): [10.195.0.123:48910|44] [10.195.0.123:48910, 10.195.0.112:35956, 10.195.0.122:54364, 10.195.0.120:38610, 10.195.0.105:54569]
|
And here's what we get when we are trying to start nodes A and E when C is coordinator:
| 16:03:06,847 WARN [DownHandler (GMS)] GMS:339 - there was more than 1 candidate for coordinator: {10.195.0.121:60413=1, 10.195.0.123:48908=3}
| 16:03:11,887 WARN [DownHandler (GMS)] GMS:127 - join(10.195.0.112:42521) sent to 10.195.0.123:48908 timed out, retrying
| 16:03:15,907 WARN [DownHandler (GMS)] GMS:339 - there was more than 1 candidate for coordinator: {10.195.0.121:60413=1, 10.195.0.123:48908=3}
| 16:03:20,920 WARN [DownHandler (GMS)] GMS:127 - join(10.195.0.112:42521) sent to 10.195.0.123:48908 timed out, retrying
| ...
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4165253#4165253
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4165253
17 years, 10 months
[Installation, Configuration & DEPLOYMENT] - FATAL [org.jboss.serial.persister.RegularObjectPersister] er
by sentcs
Hi,
I am using JBOSS 4.0.4 with Suse Linux 9 for my application. And i am getting following problem randomly while running my applicaton. In my application, we are using jboss-messaging-1.0.1.GA.
I don't know in which scenario JBOSS throw this exception.
Please let me know immediately since we are facing this issue in client place.
FATAL [org.jboss.serial.persister.RegularObjectPersister] error
| java.lang.reflect.InvocationTargetException
| at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
| at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java(Compiled Code))
| at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
| at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeSlotWithMethod(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeSlotWithFields(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.persister.ArrayPersister.saveObjectArray(ArrayPersister.java:110)
| at org.jboss.serial.persister.ArrayPersister.writeData(ArrayPersister.java:101)
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeSlotWithFields(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeSlotWithFields(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.persister.ArrayPersister.saveObjectArray(ArrayPersister.java:110)
| at org.jboss.serial.persister.ArrayPersister.writeData(ArrayPersister.java:101)
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeSlotWithFields(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeSlotWithFields(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeSlotWithFields(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.defaultWrite(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.persister.RegularObjectPersister.writeData(RegularObjectPersister.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.describeObject(ObjectDescriptorFactory.java(Compiled Code))
| at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectOutput.writeObject(DataContainer.java(Compiled Code))
| at org.jboss.serial.io.JBossObjectOutputStream.writeObjectOverride(JBossObjectOutputStream.java(Compiled Code))
| at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java(Compiled Code))
| at org.jboss.remoting.serialization.impl.java.JavaSerializationManager.sendObject(JavaSerializationManager.java(Compiled Code))
| at org.jboss.remoting.marshal.serializable.SerializableMarshaller.write(SerializableMarshaller.java(Compiled Code))
| at org.jboss.jms.server.remoting.JMSWireFormat.write(JMSWireFormat.java(Compiled Code))
| at org.jboss.remoting.transport.socket.ServerThread.versionedWrite(ServerThread.java(Compiled Code))
| at org.jboss.remoting.transport.socket.ServerThread.processInvocation(ServerThread.java(Compiled Code))
| at org.jboss.remoting.transport.socket.ServerThread.dorun(ServerThread.java(Compiled Code))
| at org.jboss.remoting.transport.socket.ServerThread.run(ServerThread.java:261)
| Caused by: java.lang.NullPointerException
| at org.jboss.mx.loading.RepositoryClassLoader.findClass(RepositoryClassLoader.java(Compiled Code))
| at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
| at org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java(Compiled Code))
| at org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java(Compiled Code))
| at java.lang.ClassLoader.loadClass(ClassLoader.java(Compiled Code))
| at org.jboss.serial.persister.ObjectOutputStreamProxy.putFields(ObjectOutputStreamProxy.java:188)
| at java.security.Permissions.writeObject(Permissions.java:384)
| ... 57 more
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4165252#4165252
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4165252
17 years, 10 months
Delivery Status Notification (Failure)
by postmaster@lists.jboss.org
This is an automatically generated Delivery Status Notification.
Delivery to the following recipients failed.
nnkorotk@localhost
17 years, 10 months
[JBoss jBPM] - Can we assign mulptiple swimalnes to a task??
by sumit.jbpm
Can we assign mulptiple swimalnes to a task??
What I want to ask is that; is there any possibilty through the "jPDL tags" to assign more than one groups or users (where each of the user is belongs to a different group, say there are 2 users one belonging to "Finance" group and the other belonging to "Marketting") to a task???
Will the jpdl look like the following in that case??
<?xml version="1.0" encoding="UTF-8"?>
|
| <process-definition
| xmlns="urn:jbpm.org:jpdl-3.2" name="GrantingProcess">
| <swimlane name="Sales">
| </swimlane>
| <swimlane name="CM">
| </swimlane>
| <swimlane name="CD">
| </swimlane>
| <start-state name="start">
| <transition name="" to="CreateReservation"></transition>
| </start-state>
| <end-state name="end1"></end-state>
| <task-node name="CreateReservation">
| <task name="CreateReservation" swimlane="Sales, CM"></task>
| <transition name="" to="Grant Approval"></transition>
| </task-node>
| <task-node name="Grant Approval">
| <task name="GrantApproval" swimlane="CM, CD">
| </task>
| <transition name="" to="ApprovalDecision"></transition>
|
| </task-node>
| <decision name="ApprovalDecision" >
| <handler class = "com.framework.workflow.handlers.ApprovalHandler"/>
| <transition name="Rejected" to="CreateReservation"></transition>
| <transition name="Approved" to="end1"></transition>
| </decision>
| </process-definition>
Waiting for any help or suggestions.
Thanks in advance!!
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4165245#4165245
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4165245
17 years, 10 months
[Beginners Corner] - Need a healp in configuring CacheLoders
by ramalakshmi.nvs
Hi,
How can i configure both JDBCCacheLoader and TcpDelegatingCacheLoader.
<?xml version="1.0" encoding="UTF-8"?>
<!-- ===================================================================== -->
<!-- -->
<!-- Sample TreeCache Service Configuration -->
<!-- -->
<!-- ===================================================================== -->
<!-- ==================================================================== -->
<!-- Defines TreeCache configuration -->
<!-- ==================================================================== -->
<depends optional-attribute-name="Cache" proxy-type="attribute">jboss.cache:service=HttpCache
jboss:service=Naming
jboss:service=TransactionManager
${jboss.bind.address:15.76.223.144}
7001
<!--
Configure the TransactionManager
-->
org.jboss.cache.GenericTransactionManagerLookup
<!--
Isolation level : SERIALIZABLE
REPEATABLE_READ (default)
READ_COMMITTED
READ_UNCOMMITTED
NONE
-->
READ_COMMITTED
<!--
Valid modes are LOCAL
REPL_ASYNC
REPL_SYNC
INVALIDATION_ASYNC
INVALIDATION_SYNC
-->
REPL_SYNC
<!--
Just used for async repl: use a replication queue
-->
false
<!--
Replication interval for replication queue (in ms)
-->
0
<!--
Max number of elements which trigger replication
-->
0
<!-- Name of cluster. Needs to be the same for all clusters, in order
to find each other
-->
cache_cluster
<!-- JGroups protocol stack properties. Can also be a URL,
e.g. file:/home/bela/default.xml
-->
<!-- UDP: if you have a multihomed machine,
set the bind_addr attribute to the appropriate NIC IP address, e.g bind_addr="192.168.0.2"
-->
<!-- UDP: On Windows machines, because of the media sense feature
being broken with multicast (even after disabling media sense)
set the loopback attribute to true -->
<UDP mcast_addr="228.4.5.6" mcast_port="48866"
ip_ttl="64" ip_mcast="true"
mcast_send_buf_size="150000" mcast_recv_buf_size="80000"
ucast_send_buf_size="150000" ucast_recv_buf_size="80000"
loopback="false" bind_addr="15.76.223.144" />
<PING timeout="2000" num_initial_members="3"
up_thread="false" down_thread="false"/>
<MERGE2 min_interval="10000" max_interval="20000"/>
<!-- <FD shun="true" up_thread="true" down_thread="true" />-->
<FD_SOCK/>
<VERIFY_SUSPECT timeout="1500"
up_thread="false" down_thread="false"/>
<pbcast.NAKACK gc_lag="50" retransmit_timeout="600,1200,2400,4800"
max_xmit_size="8192" up_thread="false" down_thread="false"/>
<UNICAST timeout="600,1200,2400" window_size="100" min_threshold="10"
down_thread="false"/>
<pbcast.STABLE desired_avg_gossip="20000"
up_thread="false" down_thread="false"/>
<FRAG frag_size="8192"
down_thread="false" up_thread="false"/>
<pbcast.GMS join_timeout="5000" join_retry_timeout="2000"
shun="true" print_local_addr="true"/>
<pbcast.STATE_TRANSFER up_thread="true" down_thread="true"/>
<!--
Whether or not to fetch state on joining a cluster
NOTE this used to be called FetchStateOnStartup and has been renamed to be more descriptive.
-->
true
<!--
The max amount of time (in milliseconds) we wait until the
initial state (ie. the contents of the cache) are retrieved from
existing members in a clustered environment
-->
15000
<!--
Number of milliseconds to wait until all responses for a
synchronous call have been received.
-->
15000
<!-- Max number of milliseconds to wait for a lock acquisition -->
10000
<!-- TCPDelegatingCacheLoader -->
<!--
Indicate whether to use region based marshalling or not. Set this to true if you are running under a scoped
class loader, e.g., inside an application server. Default is "false".
-->
<!-- if passivation is true, only the first cache loader is used; the rest are ignored -->
false
<!-- comma delimited FQNs to preload -->
/
<!-- are the cache loaders shared in a cluster? -->
true
<!-- we can now have multiple cache loaders, which get chained -->
org.jboss.cache.loader.tcp.TcpDelegatingCacheLoader
host=15.76.223.144
port=7001
<!-- the 'cacheloader' element may be repeated -->
org.jboss.cache.loader.JDBCCacheLoader
<!-- same as the old CacheLoaderConfig attribute -->
cache.jdbc.table.name=JCACHE
cache.jdbc.table.create=false
cache.jdbc.table.drop=false
cache.jdbc.fqn.column=fqn
cache.jdbc.fqn.type=varchar(500)
cache.jdbc.node.column=node
cache.jdbc.node.type=blob
cache.jdbc.parent.column=parent
cache.jdbc.driver=oracle.jdbc.OracleDriver
cache.jdbc.url=jdbc:oracle:thin:@sdp3pf1.india.hp.com:1521:TPFDB
cache.jdbc.user=lakshmi
cache.jdbc.password=lakshmi
cache.jdbc.datasource=tpfDBDS
<!-- whether the cache loader writes are asynchronous -->
false
<!-- only one cache loader in the chain may set fetchPersistentState to true.
An exception is thrown if more than one cache loader sets this to true. -->
true
<!-- determines whether this cache loader ignores writes - defaults to false. -->
false
<!-- if set to true, purges the contents of this cache loader when the cache starts up.
Defaults to false. -->
false
when I configure as above iam getting the following exception.
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream
.java:2232)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputS
tream.java:2698)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:750
)
at java.io.ObjectInputStream.(ObjectInputStream.java:268)
at org.jboss.cache.loader.tcp.TcpDelegatingCacheLoader.init(TcpDelegatin
gCacheLoader.java:109)
at org.jboss.cache.loader.tcp.TcpDelegatingCacheLoader.start(TcpDelegati
ngCacheLoader.java:86)
at org.jboss.cache.loader.ChainingCacheLoader.start(ChainingCacheLoader.
java:377)
at org.jboss.cache.loader.CacheLoaderManager.startCacheLoader(CacheLoade
rManager.java:353)
at org.jboss.cache.TreeCache.startService(TreeCache.java:1535)
at jsp_servlet.__jcache.createCache(__jcache.java:125)
at jsp_servlet.__jcache._jspService(__jcache.java:480)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:34)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run
(StubSecurityHelper.java:223)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecuri
tyHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.jav
a:283)
at weblogic.servlet.internal.ServletStubImpl.onAddToMapException(Servlet
StubImpl.java:391)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.jav
a:309)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.jav
a:175)
plz healp me out how to configure both the CacheLoders.
Thanks,
Ramalakshmi
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4165243#4165243
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4165243
17 years, 10 months
[EJB 3.0] - Most Important Conference for SOA marketplace in India
by Shaguf
Success lies in business agility, and SOA can offer it in full measure. The SOA marketplace in India is witnessing a blistering growth, with large and SME organizations beginning to move beyond the planning stages to realising enterprise-wide SOA deployments. Gain strategic, technical, and business insights into developing, managing and governing a service-oriented architecture within enterprises at Business Technology Summit 2008, held 22-26 September 2008 in Mumbai and Bangalore. For updates on the speakers and program visit: http://www.btsummit.com/speakers.html.
The SOA track at BT Summit 2008 covers SOA Middleware/ Platforms, SOA Governance, SOA Lifecycle Management, BPM-enabled SOA, Open Source Enablement of SOA, SOA In Collaboration, Enterprise Service Bus (ESB), SOA Consulting & Services, SOA/Systems Integration, SOA Application Management and Support, SOA Compliance, SOA Testing, SOA Patterns/Anti-Patterns, SOA Security, SOA/Service Delivery Improvements, SOA/Mergers & Acquisitions and SOA Performance & Scalability.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4165240#4165240
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4165240
17 years, 10 months