[jboss-user] [JBoss/Spring Integration] - CastClassException NamedXmlApplicationContext

Saish do-not-reply at jboss.com
Thu Jun 26 12:15:34 EDT 2008


I have been trying to integrate JBoss, EJB3, JPA and Spring together.  After a *lot* of experimentation, I finally stumbled on how to have the WAR Spring beans access the EAR Spring beans via JNDI.  

However, this solution has in some way interfered with regular SLSB deployment within JBoss.  I am getting a CastClassException on org.jboss.naming.util.createSubcontext:69 org.jboss.spring.factory.NamedXmlApplicationContext.

I am running JBoss 4.2.2-GA and Spring 2.5.4.  I have tried both the 2.0 and 2.1 distros of the Spring Deployer.  My application set-up (from the EAR down) is:


  | META-INF
  |   application.xml
  |   jboss-app.xml
  | foo.sping
  |   META-INF
  |        jboss-spring.xml
  |        [all other Spring JAR files]
  | foo.jar
  |   META-INF
  |        ejb.jar.xml
  |        persistence.xml
  | foo.war
  |   META-INF
  |        beanRefContext.xml (loads the EAR application context via JNDI)
  |   WEB-INF
  |        applicationContext.xml (blank)
  |        web.xml
  | 

The SLSB is extremely simple.  Basically it just has an isAlive() method returning boolean.  Here is the stack.


  | java.lang.ClassCastException: org.jboss.spring.factory.NamedXmlApplicationContext
  |         at org.jboss.util.naming.Util.createSubcontext(Util.java:69)
  |         at org.jboss.util.naming.Util.rebind(Util.java:125)
  |         at org.jboss.util.naming.Util.rebind(Util.java:113)
  |         at org.jboss.ejb3.stateless.BaseStatelessProxyFactory.bindProxy(BaseStatelessProxyFactory.java:231)
  |         at org.jboss.ejb3.stateless.BaseStatelessProxyFactory.start(BaseStatelessProxyFactory.java:216)
  |         at org.jboss.ejb3.stateless.StatelessLocalProxyFactory.start(StatelessLocalProxyFactory.java:101)
  |         at org.jboss.ejb3.ProxyDeployer.start(ProxyDeployer.java:105)
  |         at org.jboss.ejb3.SessionContainer.start(SessionContainer.java:157)
  |         at org.jboss.ejb3.stateless.StatelessContainer.start(StatelessContainer.java:102)
  |         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 org.jboss.ejb3.ServiceDelegateWrapper.startService(ServiceDelegateWrapper.java:103)
  |         at org.jboss.system.ServiceMBeanSupport.jbossInternalStart(ServiceMBeanSupport.java:289)
  |         at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)
  |         at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
  |         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  |         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  |         at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
  |         at $Proxy0.start(Unknown Source)
  |         at org.jboss.system.ServiceController.start(ServiceController.java:417)
  |         at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
  |         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |         at java.lang.reflect.Method.invoke(Method.java:585)
  |         at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
  |         at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
  |         at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
  |         at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
  |         at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
  |         at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
  |         at $Proxy84.start(Unknown Source)
  |         at org.jboss.ejb3.JmxKernelAbstraction.install(JmxKernelAbstraction.java:120)
  |         at org.jboss.ejb3.Ejb3Deployment.registerEJBContainer(Ejb3Deployment.java:301)
  |         at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:362)
  | 

This first SLSB is causing the issue.  Existing JPA entity beans load fine.


  | @Local
  | @Stateless
  | 
  | public class TestEjb implements Test {
  | 
  | 	public boolean isAlive() {
  | 		return true;
  | 	}
  | }
  | 

I did read in another post that the issue was having Spring JAR files in the deployer that are incompatible with those in server/default/lib.  I have the full-blown spring.jar in server/default/lib and have removed all JAR's from the deployer except spring-deployer.jar.  

My guess is that JBoss is looking in the nested JNDI context that beanRefContext.xml created and finding an instance of ApplicationContext rather than Context.  But I have no idea how to fix it.

Thanks!

- Saish

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

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4160930



More information about the jboss-user mailing list