0 Replies Latest reply on Oct 16, 2006 8:05 AM by mskonda

    Scoping XA Recovery?

    mskonda Apprentice

      Here's what I'm doing:

      I have a local server with no JMS and a remote JMS server.

      I have configured the local server to talk to remote JMS server. Everyone is happy.

      However, I tured on my XARecovery and landed into bigger problems. Here's the explanation:

      1. The RecoveryManager tries to get hold of ConnectionFactory - this CF belongs to remote JMS

      2. When it's acessing the CF, a ClassNotFoundException is thrown:

      java.lang.NoClassDefFoundError: org/jboss/aop/JoinPointInfo
      
      16:46:44,143 INFO [STDOUT] at java.lang.Class.getDeclaredFields0(Native Method)
      
      16:46:44,143 INFO [STDOUT] at java.lang.Class.privateGetDeclaredFields(Class.java:2232)
      
      16:46:44,143 INFO [STDOUT] at java.lang.Class.getDeclaredField(Class.java:1852)
      
      16:46:44,143 INFO [STDOUT] at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1555)
      
      16:46:44,143 INFO [STDOUT] at java.io.ObjectStreamClass.access$600(ObjectStreamClass.java:47)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:381)
      
      16:46:44,144 INFO [STDOUT] at java.security.AccessController.doPrivileged(Native Method)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:373)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:268)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:504)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1546)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
      
      16:46:44,144 INFO [STDOUT] at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
      
      16:46:44,145 INFO [STDOUT] at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
      
      16:46:44,145 INFO [STDOUT] at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
      
      16:46:44,145 INFO [STDOUT] at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
      
      16:46:44,145 INFO [STDOUT] at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
      
      16:46:44,145 INFO [STDOUT] at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:57)
      
      16:46:44,145 INFO [STDOUT] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:637)
      
      16:46:44,145 INFO [STDOUT] at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
      
      16:46:44,145 INFO [STDOUT] at javax.naming.InitialContext.lookup(InitialContext.java:351)
      
      16:46:44,145 INFO [STDOUT] at org.jboss.util.naming.Util.lookup(Util.java:200)
      
      16:46:44,145 INFO [STDOUT] at org.jboss.jms.recovery.XAResourceWrapper.getConnectionFactory(XAResourceWrapper.java:326)
      
      16:46:44,146 INFO [STDOUT] at org.jboss.jms.recovery.XAResourceWrapper.connect(XAResourceWrapper.java:276)
      
      16:46:44,146 INFO [STDOUT] at org.jboss.jms.recovery.XAResourceWrapper.getDelegate(XAResourceWrapper.java:240)
      
      16:46:44,146 INFO [STDOUT] at org.jboss.jms.recovery.XAResourceWrapper.getTransactionTimeout(XAResourceWrapper.java:198)
      
      16:46:44,146 INFO [STDOUT] at org.jboss.jms.recovery.JMSProviderXAResourceRecovery.hasMoreResources(JMSProviderXAResourceRecovery.java:87)
      
      16:46:44,146 INFO [STDOUT] at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.resourceInitiatedRecovery(XARecoveryModule.java:594)
      
      16:46:44,146 INFO [STDOUT] at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkSecondPass(XARecoveryModule.java:162)
      
      16:46:44,146 INFO [STDOUT] at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWork(PeriodicRecovery.java:237)
      
      16:46:44,146 INFO [STDOUT] at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:163)


      3. The above class is present in one of the messaging libraries(jboss-aop.jar). However I can't deploy this jar as it conflicts with server's aop library (hence the messaging is scoped)

      So,

      a. Can I have a scoped XA Recovery where the required libraries (from messaging) can be provided for the recovery module to go up and running happily?

      b. If yes, what is the procedure (I know the procedure for scoping - I want to know how I can do the same with XA Recovery module, i.e, is there an mbean service that starts up the RM?)

      Or, is there any better way of doing?

      Any pointers are much appreciated.

      Thanks
      Madhu