Hot to make JBoss 5 EJB Remoting & Embedded EJB3 go togethe
mtrimpe Dec 6, 2006 10:54 AMI have the following scenario, that must arise more often in the future:
A Swing Client App that; must be able to connect to an EJB3 service on a remote JBoss5; must be able to run that same EJB3 service locally via Embedded EJB3 container.
I currently have the following maven dependencies:
<!-- JBoss Microcontainer dependencies --> <dependency> <groupId>microcontainer.jboss.ejb3</groupId> <artifactId>hibernate-all</artifactId> </dependency> <dependency> <groupId>microcontainer.jboss.ejb3</groupId> <artifactId>jboss-ejb3-all</artifactId> </dependency> <dependency> <groupId>microcontainer.jboss.ejb3</groupId> <artifactId>thirdparty-all</artifactId> </dependency> <!-- JBoss Client dependencies - REFERENCE ${jboss.home}\client\...... --> <dependency> <groupId>jboss</groupId> <artifactId>all-client</artifactId> </dependency> <dependency> <groupId>jboss</groupId> <artifactId>ejb3-client</artifactId> </dependency> <dependency> <groupId>jboss</groupId> <artifactId>aop-jdk50-client</artifactId> </dependency> <dependency> <groupId>jboss</groupId> <artifactId>aspect-jdk50-client</artifactId> </dependency> <!-- JBoss EJB3 dependencies --> <dependency> <groupId>jboss</groupId> <artifactId>ejb3x</artifactId> </dependency> <dependency> <groupId>ejb3</groupId> <artifactId>persistence</artifactId> </dependency>
However running the testcases that startup the embedded EJB3 container I now get:
ERROR 06-12 16:48:25,234 (KernelErrors.java:validate:78) -Failed deployment: persistence.units:jar=classes.jar,unitName=Ga4EjbPrototype java.lang.NoClassDefFoundError: org/hibernate/engine/query/sql/NativeSQLQueryReturn at org.hibernate.cfg.annotations.QueryBinder.bindSqlResultsetMapping(QueryBinder.java:295) at org.hibernate.cfg.AnnotationBinder.bindQueries(AnnotationBinder.java:239) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:404) at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:452) at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:268) at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1034) java.lang.RuntimeException: Problems scanning classpath at org.jboss.ejb3.embedded.EJB3StandaloneBootstrap.scanClasspath(EJB3StandaloneBootstrap.java:281) at org.growthanalyser.ga4.connection.LocalConnectionFactory.startupEJB3Container(LocalConnectionFactory.java:56) at org.growthanalyser.ga4.connection.LocalConnectionFactory.initialize(LocalConnectionFactory.java:25) at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1015) at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154) at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:751) at org.hibernate.ejb.Ejb3Configuration.createContainerEntityManagerFactory(Ejb3Configuration.java:350) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:119) at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:264) 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.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:55) at org.growthanalyser.ga4.connection.LocalConnectionFactoryTest.testConnectionFactory(LocalConnectionFactoryTest.java:9) 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.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:107) at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.dispatchJoinPoint(KernelControllerContextAction.java:75) at org.jboss.kernel.plugins.dependency.LifecycleAction.installAction(LifecycleAction.java:115) at org.jboss.kernel.plugins.dependency.KernelControllerContextAction.install(KernelControllerContextAction.java:100) at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:226) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:709) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:429) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:538) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:472) at junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:274) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:177) at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:79) at org.jboss.kernel.plugins.dependency.AbstractKernelController.install(AbstractKernelController.java:73) at org.jboss.ejb3.MCKernelAbstraction.install(MCKernelAbstraction.java:131) at org.jboss.ejb3.Ejb3Deployment.startPersistenceUnits(Ejb3Deployment.java:467) at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:317) at org.jboss.ejb3.embedded.EJB3StandaloneDeployer.start(EJB3StandaloneDeployer.java:478) at org.jboss.ejb3.embedded.EJB3StandaloneBootstrap.scanClasspath(EJB3StandaloneBootstrap.java:274) at org.growthanalyser.ga4.connection.LocalConnectionFactory.startupEJB3Container(LocalConnectionFactory.java:56) at org.growthanalyser.ga4.connection.LocalConnectionFactory.initialize(LocalConnectionFactory.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:210) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:135 ) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:122) at org.apache.maven.surefire.Surefire.run(Surefire.java:129) at org.growthanalyser.ga4.connection.LocalConnectionFactoryTest.testConnectionFactory(LocalConnectionFactoryTest .java:9) 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 junit.framework.TestCase.runTest(TestCase.java:154) at junit.framework.TestCase.runBare(TestCase.java:127) at junit.framework.TestResult$1.protect(TestResult.java:106) at junit.framework.TestResult.runProtected(TestResult.java:124) at junit.framework.TestResult.run(TestResult.java:109) at junit.framework.TestCase.run(TestCase.java:118) 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.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:269) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:788) at junit.framework.TestSuite.runTest(TestSuite.java:208) at junit.framework.TestSuite.run(TestSuite.java:203) 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.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:210) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:135 ) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:122) at org.apache.maven.surefire.Surefire.run(Surefire.java:129) 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.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:269) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:788)
This error stops occurring when I remove the jboss-clientall dependency
This is probably because the JBoss 5 client has a newer version of hibernate that conflicts with that of the Embedded EJB3 container, but how do I fix it?