First, my apologies in advance is this should be posted on a Hibernate board. But this seems more of a configuration issue specific to Geronimo so...
Geronimo: v2.1.4 Hibernate core: v3.3.2 Derby Network Server: v10.4.2 I was able to get Hibernate working as my JPA provider (instead of OpenJPA) for my EJB3 module. However, as an academic/learning exercise, I have been trying to get Hibernate core working as my persistence layer for my EJB3 module. The problem I'm seeing is that during the Hibernate Configuration.buildSessionFactory() call, a JNDI exception is thrown stating that the datasource could not be found. I have an application-scoped managed datasource declared for my EAR as follows: application.xml: <?xml version="1.0" encoding="UTF-8"?> <application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:application="http://java.sun.com/xml/ns/javaee/application_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" id="Application_ID" version="5"> <display-name>PsopEAR5_Test</display-name> <module> <connector>Derby/tranql-connector-derby-client-local-1.4.rar</connector> </module> <module> <web> <web-uri>Psop_Servlet25_Jsp21.war</web-uri> <context-root>Psop_Servlet25_Jsp21</context-root> </web> </module> <module> <ejb>Psop_Ejb30_Hibernate33.jar</ejb> </module> </application> geronimo-application.xml: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <app:application xmlns:app="http://geronimo.apache.org/xml/ns/j2ee/application-2.0" xmlns:client="http://geronimo.apache.org/xml/ns/j2ee/application-client-2.0" xmlns:conn="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2" xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2" xmlns:ejb="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:name="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:pers="http://java.sun.com/xml/ns/persistence" xmlns:pkgen="http://openejb.apache.org/xml/ns/pkgen-2.1" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:web="http://geronimo.apache.org/xml/ns/j2ee/web-2.0.1" application-name="PsopEAR5_Test"> <dep:environment> <dep:moduleId> <dep:groupId>default</dep:groupId> <dep:artifactId>PsopEAR5_Test</dep:artifactId> <dep:version>1.0</dep:version> <dep:type>car</dep:type> </dep:moduleId> <dep:dependencies /> </dep:environment> <app:module> <!-- This connector module is provided by Geronimo to wrap the JDBC client driver needed to access a Derby Network Server data source. --> <app:connector>Derby/tranql-connector-derby-client-local-1.4.rar</app:connector> <!-- This deployment plan provides the vendor-specific details (eg. Derby-specific requirements) about the data source. --> <app:alt-dd>Derby/derby-network-server-plan.xml</app:alt-dd> </app:module> </app:application> derby-network-server-plan.xml: <?xml version="1.0" encoding="UTF-8"?> <connector xmlns="http://geronimo.apache.org/xml/ns/j2ee/connector-1.2"> <dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.2"> <dep:moduleId> <dep:groupId>console.dbpool</dep:groupId> <dep:artifactId>jdbc_psop_derbyDs1</dep:artifactId> <dep:version>1.0</dep:version> <dep:type>rar</dep:type> </dep:moduleId> <dep:dependencies> <dep:dependency> <dep:groupId>org.apache.geronimo.configs</dep:groupId> <dep:artifactId>system-database</dep:artifactId> <dep:version>2.1.4</dep:version> <dep:type>car</dep:type> </dep:dependency> </dep:dependencies> </dep:environment> <resourceadapter> <outbound-resourceadapter> <connection-definition> <connectionfactory-interface>javax.sql.DataSource</connectionfactory-interface> <connectiondefinition-instance> <name>jdbc/psop/derbyDs1</name> <config-property-setting name="DatabaseName">E:\PSOP\Databases\Derby\PSOP_DATABASE</config-property-setting> <config-property-setting name="Password">app</config-property-setting> <config-property-setting name="UserName">app</config-property-setting> <config-property-setting name="LoginTimeout"/> <connectionmanager> <local-transaction/> <single-pool> <max-size>10</max-size> <min-size>0</min-size> <match-one/> </single-pool> </connectionmanager> </connectiondefinition-instance> </connection-definition> </outbound-resourceadapter> </resourceadapter> </connector> My EJB3 module metadata is as follows: ejb-jar.xml (essentially empty since I'm using EJB3 annotations): <?xml version="1.0" encoding="UTF-8"?> <ejb-jar xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:ejb="http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd" version="3.0"> <description>PSOP model implemented with EJB 3.0. PSOP persistence implemented with Hibernate 3.3 (native).</description> <display-name>Psop_Ejb30_Hibernate33</display-name> </ejb-jar> openejb-jar.xml (all of the dependency jars were copied into the Geronimo repository): <?xml version="1.0" encoding="UTF-8" standalone="no"?> <openejb-jar xmlns="http://openejb.apache.org/xml/ns/openejb-jar-2.2" xmlns:naming="http://geronimo.apache.org/xml/ns/naming-1.2" xmlns:sec="http://geronimo.apache.org/xml/ns/security-2.0" xmlns:sys="http://geronimo.apache.org/xml/ns/deployment-1.2"> <sys:environment> <sys:moduleId> <sys:groupId>default</sys:groupId> <sys:artifactId>Psop_Ejb30_Hibernate33</sys:artifactId> <sys:version>1.0</sys:version> <sys:type>car</sys:type> </sys:moduleId> <sys:dependencies> <sys:dependency> <sys:groupId>psop_hibernate</sys:groupId> <sys:artifactId>core</sys:artifactId> <sys:version>3.3</sys:version> <sys:type>jar</sys:type> </sys:dependency> <sys:dependency> <sys:groupId>psop_hibernate</sys:groupId> <sys:artifactId>antlr</sys:artifactId> <sys:version>2.7.6</sys:version> <sys:type>jar</sys:type> </sys:dependency> <sys:dependency> <sys:groupId>psop_hibernate</sys:groupId> <sys:artifactId>commons-collections</sys:artifactId> <sys:version>3.1</sys:version> <sys:type>jar</sys:type> </sys:dependency> <sys:dependency> <sys:groupId>psop_hibernate</sys:groupId> <sys:artifactId>dom4j</sys:artifactId> <sys:version>1.6.1</sys:version> <sys:type>jar</sys:type> </sys:dependency> <sys:dependency> <sys:groupId>psop_hibernate</sys:groupId> <sys:artifactId>javassist</sys:artifactId> <sys:version>3.9.0.GA</sys:version> <sys:type>jar</sys:type> </sys:dependency> <sys:dependency> <sys:groupId>psop_hibernate</sys:groupId> <sys:artifactId>jta</sys:artifactId> <sys:version>1.1</sys:version> <sys:type>jar</sys:type> </sys:dependency> <sys:dependency> <sys:groupId>psop_hibernate</sys:groupId> <sys:artifactId>GeronimoTransactionManager</sys:artifactId> <sys:version>1.0</sys:version> <sys:type>jar</sys:type> </sys:dependency> <sys:dependency> <sys:groupId>org.slf4j</sys:groupId> <sys:artifactId>slf4j-api</sys:artifactId> <sys:version>1.4.3</sys:version> <sys:type>jar</sys:type> </sys:dependency> </sys:dependencies> </sys:environment> </openejb-jar> hibernate.cfg.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory name="jdbc/psop/hibernateSf1"> <!-- Derby Network Server data source as configured in the EAR --> <property name="hibernate.connection.datasource">jdbc/psop/derbyDs1</property> <!-- Derby SQL dialect --> <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property> <!-- Transaction manager lookup class for Geronimno manually provided. --> <property name="hibernate.transaction.manager_lookup_class">org.hibernate.transaction.GeronimoTransactionManagerLookup</property> <!-- Transaction manager factory class provided by Hibernate. --> <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory</property> <!-- Show and print nice SQL on stdout --> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <!-- List of XML mapping files --> <mapping resource="META-INF/mappings/com/psop/model/hibernate/PlayerHibernateEntity.hbm.xml"/> </session-factory> </hibernate-configuration> Here is the code that tries to build the SessionFactory: Configuration hibernateConfiguration = new Configuration().configure( "/META-INF/hibernate.cfg.xml" ); hibernateConfiguration.setProperty( org.hibernate.cfg.Environment.JNDI_CLASS, "org.apache.openejb.client.RemoteInitialContextFactory" ) ); hibernateConfiguration.setProperty( org.hibernate.cfg.Environment.JNDI_URL, "ejbd://localhost:4201" ); sessionFactorySingleInstance = hibernateConfiguration.buildSessionFactory(); // throws JNDI exception // as a test, if I do a JNDI lookup on "jdbc/psop/derbyDs1", I get the same exception Here is the exception that occurs during publishing (I'm using Eclipse Ganymede with GEP): javax.naming.NameNotFoundException: /jdbc/psop/derbyDs1 does not exist in the system. Check that the app was successfully deployed. at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:277) at javax.naming.InitialContext.lookup(Unknown Source) at com.psop.model.ejb.config.EjbHibernateModelConfig.initializeSessionFactory(EjbHibernateModelConfig.java:234) at com.psop.model.ejb.config.EjbHibernateModelConfig.initializeModel(EjbHibernateModelConfig.java:292) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:158) at org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:141) at org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:67) at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:210) at org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:188) at org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165) at org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:238) at org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:129) at org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:164) at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:122) at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:84) at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:60) at org.apache.openejb.server.ServicePool$2.run(ServicePool.java:78) at org.apache.openejb.server.ServicePool$3.run(ServicePool.java:101) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Geronimo log (I don't see any binding of the datasource to JNDI here): 2009-11-14 14:30:06,903 INFO [config] Configuring Service(id=Default Stateless Container, type=Container, provider-id=Default Stateless Container) 2009-11-14 14:30:06,903 INFO [config] Configuring Service(id=Default Stateful Container, type=Container, provider-id=Default Stateful Container) 2009-11-14 14:30:06,903 INFO [config] Configuring Service(id=Default BMP Container, type=Container, provider-id=Default BMP Container) 2009-11-14 14:30:06,903 INFO [config] Configuring Service(id=Default CMP Container, type=Container, provider-id=Default CMP Container) 2009-11-14 14:30:06,903 INFO [config] Configuring app: default/PsopEAR5_Test/1.0/car 2009-11-14 14:30:06,919 INFO [OpenEJB] Auto-deploying ejb ejb/psop/ejbHibernateFinder: EjbDeployment(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateFinder) 2009-11-14 14:30:06,919 INFO [OpenEJB] Auto-deploying ejb ejb/psop/ejbHibernateDestroyer: EjbDeployment(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateDestroyer) 2009-11-14 14:30:06,919 INFO [OpenEJB] Auto-deploying ejb ejb/psop/ejbHibernateCreator: EjbDeployment(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateCreator) 2009-11-14 14:30:06,919 INFO [OpenEJB] Auto-deploying ejb ejb/psop/ejbHibernateModelConfig: EjbDeployment(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateModelConfig) 2009-11-14 14:30:06,919 INFO [config] Loaded Module: default/PsopEAR5_Test/1.0/car 2009-11-14 14:30:07,810 INFO [KernelContextGBean] bound gbean default/PsopEAR5_Test/1.0/car?J2EEApplication=default/PsopEAR5_Test/1.0/car,JCAConnectionFactory=jdbc/psop/derbyDs1,JCAResource=Derby/tranql-connector-derby-client-local-1.4.rar,ResourceAdapter=Derby/tranql-connector-derby-client-local-1.4.rar,ResourceAdapterModule=Derby/tranql-connector-derby-client-local-1.4.rar,j2eeType=JCAManagedConnectionFactory,name=jdbc/psop/derbyDs1 at name default/PsopEAR5_Test/JCAManagedConnectionFactory/jdbc/psop/derbyDs1 2009-11-14 14:30:07,810 INFO [startup] Assembling app: C:\Documents and Settings\Bevon Palod\Local Settings\Temp\geronimo-deploymentUtil3743899707090395072.jar 2009-11-14 14:30:07,872 INFO [startup] Jndi(name=ejb/psop/ejbHibernateFinderRemote) --> Ejb(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateFinder) 2009-11-14 14:30:07,872 INFO [startup] Jndi(name=ejb/psop/ejbHibernateDestroyerRemote) --> Ejb(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateDestroyer) 2009-11-14 14:30:07,872 INFO [startup] Jndi(name=ejb/psop/ejbHibernateCreatorRemote) --> Ejb(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateCreator) 2009-11-14 14:30:07,872 INFO [startup] Jndi(name=ejb/psop/ejbHibernateModelConfigRemote) --> Ejb(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateModelConfig) 2009-11-14 14:30:07,872 INFO [startup] Created Ejb(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateFinder, ejb-name=ejb/psop/ejbHibernateFinder, container=Default Stateless Container) 2009-11-14 14:30:07,872 INFO [startup] Created Ejb(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateDestroyer, ejb-name=ejb/psop/ejbHibernateDestroyer, container=Default Stateless Container) 2009-11-14 14:30:07,872 INFO [startup] Created Ejb(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateCreator, ejb-name=ejb/psop/ejbHibernateCreator, container=Default Stateless Container) 2009-11-14 14:30:07,872 INFO [startup] Created Ejb(deployment-id=Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateModelConfig, ejb-name=ejb/psop/ejbHibernateModelConfig, container=Default Stateless Container) 2009-11-14 14:30:07,872 INFO [startup] Deployed Application(path=C:\Documents and Settings\Bevon Palod\Local Settings\Temp\geronimo-deploymentUtil3743899707090395072.jar) 2009-11-14 14:30:08,013 INFO [OpenEJB] invoking method create on Psop_Ejb30_Hibernate33.jar/ejb/psop/ejbHibernateModelConfig 2009-11-14 14:30:08,013 INFO [OpenEJB] finished invoking method create 2009-11-14 14:30:08,013 INFO [Transaction] TX Required: Started transaction org.apache.geronimo.transaction.manager.transactioni...@188807b 2009-11-14 14:30:08,091 INFO [Environment] Hibernate 3.3.2.GA 2009-11-14 14:30:08,091 INFO [Environment] hibernate.properties not found 2009-11-14 14:30:08,106 INFO [Environment] Bytecode provider name : javassist 2009-11-14 14:30:08,122 INFO [Environment] using JDK 1.4 java.sql.Timestamp handling 2009-11-14 14:30:08,356 INFO [Configuration] configuring from resource: /META-INF/hibernate.cfg.xml 2009-11-14 14:30:08,356 INFO [Configuration] Configuration resource: /META-INF/hibernate.cfg.xml 2009-11-14 14:30:08,497 INFO [Configuration] Reading mappings from resource : META-INF/mappings/com/psop/model/hibernate/PlayerHibernateEntity.hbm.xml 2009-11-14 14:30:08,606 INFO [HbmBinder] Mapping class: com.psop.model.hibernate.PlayerHibernateEntity -> PLAYERS 2009-11-14 14:30:08,685 INFO [Configuration] Configured SessionFactory: jdbc/psop/hibernateSf1 2009-11-14 14:30:08,685 INFO [Transaction] TX Required: Committing transaction org.apache.geronimo.transaction.manager.transactioni...@188807b I do not see this exception when I make use of Hibernate Annotations + EnitityManager and stick with JPA-only API/annotations in my code. In terms of configuration, the EAR metadata is exactly the same (save for swapping the EJB3 modules). The EJB3 module metadata has two differences: 1. I've got a persistence.xml instead of hibernate.cfg.xml. 2. I've added the Hibernate Annotations + EntityManager dependencies to my openejb-jar.xml (won't bother pasting it again here). persistence.xml: <?xml version="1.0" encoding="UTF-8"?> <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0" > <persistence-unit name="Psop_Ejb30_Jpa10" transaction-type="JTA"> <description>Hibernate v3.3 JPA provider</description> <provider>org.hibernate.ejb.HibernatePersistence</provider> <jta-data-source>jdbc/psop/derbyDs1</jta-data-source> <class>com.psop.model.jpa.PlayerJpaEntity</class> <properties> <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.GeronimoTransactionManagerLookup"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="true"/> <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/> </properties> </persistence-unit> </persistence> My best guess -- I'm doing something wrong or it's a faulty assumption that my datasource will automagically be registered in JNDI (as it is with JPA). Please bear with me as I'm a newbie. I've been banging on Geronimo for just about a month and have been at Hibernate for maybe a week. If someone could shed some light on this problem or perhaps point me to some documentation (yes, I've read the Hibernate to Geronimo migration docs, yes, I've googled, yes, I did a keyword search on this forum for "Hibernate datasource"). Many thanks in advance!!! Bevon -- View this message in context: http://old.nabble.com/JNDI-lookup-fails-with-Hibernate-%2B-application-scoped-datasource-tp26353366s134p26353366.html Sent from the Apache Geronimo - Users mailing list archive at Nabble.com.