Hi, We have configured our Maven project to use different JPAs: Toplink, Hibernate and OpenJPA. We have managed to make them work properly and we have chosen Toplink as our primary JPA. After extensive application development I checked if other providers still work. And there was a surprise - Hibernate does not. When OpenEJB uses hibernate it does not registers EJBs. What influence can have JPA on EJB container?
>>>>>when OpenEJB uses OpenJPA or Toplink, ejbs are registered properly (log >>>>>below) : INFO - Jndi(name=AccountEntFacadeLocal) --> Ejb(deployment-id=AccountEntFacade) INFO - Jndi(name=GroupFacadeLocal) --> Ejb(deployment-id=GroupFacade) INFO - Jndi(name=PersonAccountFacadeLocal) --> Ejb(deployment-id=PersonAccountFacade) INFO - Jndi(name=LecturerManagerLocal) --> Ejb(deployment-id=LecturerManager) INFO - Jndi(name=StudentManagerLocal) --> Ejb(deployment-id=StudentManager) INFO - Jndi(name=StudentEndpointRemote) --> Ejb(deployment-id=StudentEndpoint) INFO - Created Ejb(deployment-id=AccountEntFacade, ejb-name=AccountEntFacade, container=Default Stateless Container) INFO - Created Ejb(deployment-id=GroupFacade, ejb-name=GroupFacade, container=Default Stateless Container) INFO - Created Ejb(deployment-id=PersonAccountFacade, ejb-name=PersonAccountFacade, container=Default Stateless Container) INFO - Created Ejb(deployment-id=LecturerManager, ejb-name=LecturerManager, container=Default Stateless Container) INFO - Created Ejb(deployment-id=StudentManager, ejb-name=StudentManager, container=Default Stateless Container) INFO - Created Ejb(deployment-id=StudentEndpoint, ejb-name=StudentEndpoint, container=Default Stateful Container) >>>>>When OpenEJB uses Hibernate: INFO - Undeploying app: D:\JavaProg\MySamples\EJB\Sample5\JEEMavenProject2\EjbServiceCore\target\classes ERROR - Application could not be deployed: D:\JavaProg\MySamples\EJB\Sample5\JEEMavenProject2\EjbServiceCore\target\classes org.apache.openejb.OpenEJBException: createApplication.failed [D:\JavaProg\MySamples\EJB\Sample5\JEEMavenProject2\EjbServiceCore\target\classes]: null at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:592) at org.apache.openejb.assembler.classic.Assembler.buildContainerSystem(Assembler.java:338) at org.apache.openejb.assembler.classic.Assembler.build(Assembler.java:250) at org.apache.openejb.OpenEJB$Instance.<init>(OpenEJB.java:149) at org.apache.openejb.OpenEJB.init(OpenEJB.java:288) at org.apache.openejb.OpenEJB.init(OpenEJB.java:267) 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:597) at org.apache.openejb.loader.OpenEJBInstance.init(OpenEJBInstance.java:36) at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:62) at org.apache.openejb.client.LocalInitialContextFactory.init(LocalInitialContextFactory.java:51) at org.apache.openejb.client.LocalInitialContextFactory.getInitialContext(LocalInitialContextFactory.java:40) at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667) at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:288) at javax.naming.InitialContext.init(InitialContext.java:223) at javax.naming.InitialContext.<init>(InitialContext.java:197) at pl.zsk.sos.ejb.endpoint.StudentEndpointBeanTest.setUpClass(StudentEndpointBeanTest.java:63) 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:597) at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74) at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50) at org.junit.internal.runners20.B08ef-0or8-eA20nd 0Af9:te26rR:4un5 neplr..zrusknProtected(BeforeAndAfterRunner.java:33) at org.junit.internal.runners20.B08ef-0or8-eA20nd 0Af9:te26rR:4un5 neplr..zrusknProtected(BeforeAndAfterRunner.java:33) .sos.ejb.endpoint.StudentEndpointBeanTest setUpClass at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) fejsow javax.naming.NameN aott FoundExorg.caeppactiheon.m: avNena.smure "PersonAccountFacadeLocal" not found. javax.naming.NameN aott FoundExorg.caeppactiheon.m: avNena.smure "PersonAccountFacadeLocal" not found. efire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:172) tDirectoryTestSuite.execute(AbstractDir ecatoryt orTg.eapstacShueit.oepe.nejajbva.c:1or27e.) tDirectoryTestSuite.execute(AbstractDir ecatoryt orTg.eapstacShueit.oepe.nejajbva.c:1or27e.) iv m.naming.IvmContext.lookup(IvmContext.java:129) at javax.naming.InitialContext.lookup(InitialContext.java:392) at pl.zsk.sos.ejb.endpoint.StudentEndpointBeanTest.setUpClass(StudentEndpointBeanTest.java:64) 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:597) at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74) at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33) at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) at org.apache.maven.surefire.Surefire.run(Surefire.java:177) 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:597) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997) iv m.n at org.apache.maven.surefire.Surefire.run(Surefire.java:177) 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:597) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997) Caused by: java.lang.AssertionError at org.hibernate.cfg.AnnotationBinder.getElementsToProcess(AnnotationBinder.java:770) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:622) 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:1115) at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1233) at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:154) at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:869) at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:407) at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:126) at org.apache.openejb.assembler.classic.PersistenceBuilder.createEntityManagerFactory(PersistenceBuilder.java:183) at org.apache.openejb.assembler.classic.Assembler.createApplication(Assembler.java:454) ... 36 more 2008-08-20 09:26:45 pl.zsk.sos.ejb.endpoint.StudentEndpointBeanTest$1 call INFO: TEST W KONTEKSCIE TRANZAKCJI testCreateStudent[prepareCreateStudent] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.391 sec <<< FAILURE! Running pl.zsk.sos.ejb.manager.StudentManagerBeanTest 2008-08-20 09:26:45 pl.zsk.sos.ejb.manager.StudentManagerBeanTest setUpClass INFO: Uruchomienie contextu do pobrania interfejsow 2008-08-20 09:26:45 pl.zsk.sos.ejb.manager.StudentManagerBeanTest setUpClass INFO: Blad wyszukania EJB i pobrania interfejsow javax.naming.NameNotFoundException: Name "PersonAccountFacadeLocal" not found. at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:172) at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:129) at javax.naming.InitialContext.lookup(InitialContext.java:392) at pl.zsk.sos.ejb.manager.StudentManagerBeanTest.setUpClass(StudentManagerBeanTest.java:67) 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:597) at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74) at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50) at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33) at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140) at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127) at org.apache.maven.surefire.Surefire.run(Surefire.java:177) 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:597) at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338) at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997) >>>>> Maven2 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <parent> <artifactId>JEEMavenProject</artifactId> <groupId>zsk.samples</groupId> <version>1.0</version> </parent> <modelVersion>4.0.0</modelVersion> <groupId>zsk.samples</groupId> <artifactId>EjbServiceCore</artifactId> <packaging>ejb</packaging> <version>2.0</version> <name>EjbServiceCore</name> <url>http://maven.apache.org</url> <profiles> <profile> <id>TestEJB_OpenJPA</id> <activation> <property> <name>env</name> <value>testOpenJPA</value> </property> </activation> <dependencies> <dependency> <groupId>org.apache.openjpa</groupId> <artifactId>openjpa</artifactId> <version>1.1.0</version> <scope>test</scope> </dependency> </dependencies> <build> <resources> <resource> <directory>src/test/resources/OpenJPA</directory> </resource> </resources> </build> </profile> <profile> <id>TestEJB_Hibernate</id> <activation> <property> <name>env</name> <value>testhibernate</value> </property> </activation> <dependencies> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate</artifactId> <version>3.2.5.ga</version> <exclusions> <exclusion> <groupId>cglib</groupId> <artifactId>cglib</artifactId> </exclusion> <exclusion> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> </exclusion> </exclusions> <scope>test</scope> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib-nodep</artifactId> <version>2.1_3</version> <scope>test</scope> </dependency> <dependency> <groupId>asm</groupId> <artifactId>asm</artifactId> <version>2.2.3</version> <scope>test</scope> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.2.1.ga</version> <exclusions> <exclusion> <groupId>javax.persistence</groupId> <artifactId>persistence-api</artifactId> </exclusion> </exclusions> <scope>test</scope> </dependency> </dependencies> <build> <resources> <resource> <directory>src/test/resources/Hibernate</directory> </resource> </resources> </build> </profile> <profile> <id>TestEJB_Toplink</id> <activation> <property> <name>env</name> <value>testtoplink</value> </property> </activation> <dependencies> <dependency> <groupId>toplink.essentials</groupId> <artifactId>toplink-essentials-agent</artifactId> <version>2.1-SNAPSHOT</version> <scope>test</scope> </dependency> <dependency> <groupId>toplink.essentials</groupId> <artifactId>toplink-essentials</artifactId> <version>2.1-SNAPSHOT</version> <scope>test</scope> </dependency> <dependency> <groupId>zsk.samples</groupId> <artifactId>ToplinkExternalContainer</artifactId> <version>1.0</version> <scope>test</scope> </dependency> </dependencies> <build> <resources> <resource> <directory>src/test/resources/Toplink</directory> </resource> </resources> </build> </profile> </profiles> <dependencies> <dependency> <groupId>org.apache.openejb</groupId> <artifactId>openejb-core</artifactId> <version>3.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.openejb</groupId> <artifactId>javaee-api</artifactId> <version>5.0-1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derby</artifactId> <version>10.2.2.0</version> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.derby</groupId> <artifactId>derbyclient</artifactId> <version>10.2.2.0</version> <scope>test</scope> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.1</version> <scope>test</scope> </dependency> <dependency> <groupId>zsk.samples</groupId> <artifactId>DataObjects</artifactId> <version>2.3</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy</id> <phase>process-resources</phase> <goals> <goal>copy</goal> </goals> <configuration> <artifactItems> <artifactItem> <groupId>zsk.samples</groupId> <artifactId>DataObjects</artifactId> <version>2.3</version> <type>jar</type> <outputDirectory>${project.build.directory}/classes</outputDirectory> </artifactItem> </artifactItems> </configuration> </execution> </executions> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.5</source> <target>1.5</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>2.2</version> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-ejb-plugin</artifactId> <configuration> <archive> <manifest> <addClasspath>true</addClasspath> </manifest> </archive> <generateClient>true</generateClient> <clientIncludes> <!--Dołącz do klienta tylko "zdalne interfejsy"--> <clientInclude>zsk/samples/EjbService/*Remote.class</clientInclude> </clientIncludes> <ejbVersion>3.0</ejbVersion> </configuration> </plugin> </plugins> </build> <properties> <netbeans.hint.deploy.server>J2EE</netbeans.hint.deploy.server> </properties> </project> Thanks in advance Regards -- Marcin Kwapisz Division of Computer Networks Technical Univeristy of Lodz, Poland