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


Reply via email to