Software Version: JBoss Client from JBoss 4.2.2 drop.

I'm trying to do a JNDI lookup of a JMS Connection Factory in my component. 
This is a plain Java component. I am trying to do a JNDI lookup from a plain 
Java object. Several of my componnets can run in the same JVM under different 
classloaders. I'm loading jboss client jars in each of these component 
classloaders such that each classloader has its own copy of client jars. Each 
component does a JNDI lookup for the same named object.

The second (and consequent) component that does a lookup fails with a 
ClassCastException. The second component is looking up an object created by the 
first component. Though the classname matches, the classloader is different and 
hence the ClassCastException.


  | caused by: javax.naming.NamingException: Could not dereference object [Root 
exception is java.lang.ClassCastException: org.jboss.naming.LinkRefPair]
  |     at 
org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1298)
  |     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:763)
  |     at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:627)
  |     at javax.naming.InitialContext.lookup(InitialContext.java:351)
  |         ...
  |         ...
  |     at sun.rmi.transport.Transport$1.run(Transport.java:153)
  |     at java.security.AccessController.doPrivileged(Native Method)
  |     at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
  |     at 
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
  |     at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:707)
  |     at java.lang.Thread.run(Thread.java:595)
  | Caused by: java.lang.ClassCastException: org.jboss.naming.LinkRefPair
  |     at 
org.jboss.naming.LinkRefPairObjectFactory.getObjectInstance(LinkRefPairObjectFactory.java:66)
  |     at 
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
  |     at 
org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1273)
  |     at 
org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1290)
  |     ... 70 more
  |     
  | 

I looked at the JBoss source and the object returned by the lookup at 
org.jnp.interfaces.NamingContext.lookup(javax.naming.Name) (line 667) is 
fetching the offending object.

Is there a way to provide isolation at component level in the client code? I 
see there is a way to do it for components (enterprise applications) running 
under the J2EE container as stated at 
http://www.jboss.org/community/wiki/classloadingconfiguration

Please note that unfortunately for me, it is not an option for me to load the 
jboss client jars under the JRE's ext classloader which is the ancestor of all 
my component classloaders. I have to provide isolation at the component level.

Thanks
Praveen 

View the original post : 
http://www.jboss.org/index.html?module=bb&op=viewtopic&p=4255132#4255132

Reply to the post : 
http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=4255132
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to