geronimo-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Jencks <david_jen...@yahoo.com>
Subject Re: Problem with persistence.xml (how to use data source?)
Date Sun, 30 Mar 2008 18:21:50 GMT
I'm not sure if this reflects a bug in geronimo or not.

What is happening is that, since geronimo is a managed environment,  
it finds the persistence.xml and constructs the necessary objects to  
set up managed EMF and EM instances that can be made available to  
your app through dependency injection (using @PersistenceUnit or  
@PersistenceContext annotations) or through jndi.

However, your app is using techniques appropriate to unmanaged  
environments to ask openjpa to directly construct an EMF.  The jta- 
datasource and non-jta-datasource elements have no standard meaning  
and in particular the geronimo meaning and openjpa meaning are  
different.

To fix this you should use dependency injection such as

@PersistenceContext
private EntityManager entityManager;

I don't remember and don't have time to check right now what is  
supposed to happen when you try to do what you are trying, that is to  
get an EMF directly from Persistence in an managed environment.

thanks
david jencks

ps. I might have the annotation names wrong, they might be @*Ref.

On Mar 30, 2008, at 3:32 AM, LDevil wrote:

>
> Hi,
>
> I do not know what should i put in jta-data-source and non-jta-data- 
> source
> elements in persistence.xml file.
>
> I have created database pool with name: jdbc/postgresDS
> My geronimo-web.xml file contains:
> <nam:resource-ref>
>   <nam:ref-name>postgres</nam:ref-name>
>   <nam:resource-link>jdbc/postgresDS</nam:resource-link>
> </nam:resource-ref>
>
> My web.xml contains:
> <resource-ref>
>   <description>PostgreSQL Datasource</description>
>   <res-ref-name>postgres</res-ref-name>
>   <res-type>javax.sql.DataSource</res-type>
>   <res-auth>Container</res-auth>
>   <res-sharing-scope>Shareable</res-sharing-scope>
> </resource-ref>
>
> When I put <non-jta-data-source>postgres</non-jta-data-source> in
> persistence.xml file, following error appears during deployment:
> Unable to resolve reference "NonJtaDataSourceWrapper"
> ...
> due to: No matches for referencePatterns:
> [?name=postgres#org.apache.geronimo.naming.ResourceSource]
>
> When I changed value of <non-jta-data-source> to jdbc/postgresDS  
> there were
> no erros during deployment, but when I run following code:
>
> EntityManagerFactory emf =
> Persistence.createEntityManagerFactory("default");
> EntityManager entityManager = emf.createEntityManager();
>
> This error apperars:
>   12:24:46,203 ERROR [TestDB]:281 - Servlet.service() for servlet  
> TestDB
> threw exception
> <openjpa-1.0.1-r420667:592145 nonfatal general error>
> org.apache.openjpa.persistence.PersistenceException: There was an  
> error
> duing JNDI lookup of the name "jdbc/postgresDS".
> 	at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker 
> (AbstractBrokerFactory.java:205)
> 	at
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker 
> (DelegatingBrokerFactory.java:142)
> 	at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityMa 
> nager(EntityManagerFactoryImpl.java:192)
> 	at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityMa 
> nager(EntityManagerFactoryImpl.java:145)
> 	at
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityMa 
> nager(EntityManagerFactoryImpl.java:56)
> 	at
> net.oledzki.novex.sklep2000.receiver.servlets.TestDB.doGet 
> (TestDB.java:94)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
> 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter 
> (ApplicationFilterChain.java:290)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter 
> (ApplicationFilterChain.java:206)
> 	at
> org.apache.catalina.core.StandardWrapperValve.invoke 
> (StandardWrapperValve.java:233)
> 	at
> org.apache.catalina.core.StandardContextValve.invoke 
> (StandardContextValve.java:175)
> 	at
> org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke 
> (DefaultSubjectValve.java:56)
> 	at
> org.apache.geronimo.tomcat.GeronimoStandardContext 
> $SystemMethodValve.invoke(GeronimoStandardContext.java:396)
> 	at
> org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke 
> (GeronimoBeforeAfterValve.java:47)
> 	at
> org.apache.catalina.core.StandardHostValve.invoke 
> (StandardHostValve.java:128)
> 	at
> org.apache.catalina.valves.ErrorReportValve.invoke 
> (ErrorReportValve.java:102)
> 	at
> org.apache.catalina.core.StandardEngineValve.invoke 
> (StandardEngineValve.java:109)
> 	at
> org.apache.catalina.valves.AccessLogValve.invoke 
> (AccessLogValve.java:563)
> 	at
> org.apache.catalina.connector.CoyoteAdapter.service 
> (CoyoteAdapter.java:263)
> 	at
> org.apache.coyote.http11.Http11Processor.process 
> (Http11Processor.java:844)
> 	at
> org.apache.coyote.http11.Http11Protocol 
> $Http11ConnectionHandler.process(Http11Protocol.java:584)
> 	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run 
> (JIoEndpoint.java:447)
> 	at java.lang.Thread.run(Unknown Source)
> Caused by:  
> org.apache.commons.lang.exception.NestableRuntimeException: There
> was an error duing JNDI lookup of the name "jdbc/postgresDS".
> 	at
> org.apache.openjpa.lib.conf.Configurations.lookup 
> (Configurations.java:592)
> 	at
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.lookupConnectionFacto 
> ry(OpenJPAConfigurationImpl.java:966)
> 	at
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getConnectionFactory( 
> OpenJPAConfigurationImpl.java:954)
> 	at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFac 
> tory(JDBCConfigurationImpl.java:801)
> 	at
> org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDBDictionaryInst 
> ance(JDBCConfigurationImpl.java:568)
> 	at
> org.apache.openjpa.jdbc.meta.MappingRepository.endConfiguration 
> (MappingRepository.java:1221)
> 	at
> org.apache.openjpa.lib.conf.Configurations.configureInstance 
> (Configurations.java:476)
> 	at
> org.apache.openjpa.lib.conf.Configurations.configureInstance 
> (Configurations.java:401)
> 	at
> org.apache.openjpa.lib.conf.PluginValue.instantiate 
> (PluginValue.java:102)
> 	at org.apache.openjpa.lib.conf.ObjectValue.instantiate 
> (ObjectValue.java:82)
> 	at
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.newMetaDataRepository 
> Instance(OpenJPAConfigurationImpl.java:861)
> 	at
> org.apache.openjpa.conf.OpenJPAConfigurationImpl.getMetaDataRepository 
> Instance(OpenJPAConfigurationImpl.java:852)
> 	at
> org.apache.openjpa.kernel.AbstractBrokerFactory.makeReadOnly 
> (AbstractBrokerFactory.java:630)
> 	at
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker 
> (AbstractBrokerFactory.java:169)
> 	... 23 more
> Caused by: javax.naming.NotContextException: jdbc/postgresDS
> 	at
> org.apache.xbean.naming.context.AbstractContext.lookup 
> (AbstractContext.java:167)
> 	at
> org.apache.xbean.naming.context.AbstractContext.lookup 
> (AbstractContext.java:603)
> 	at javax.naming.InitialContext.lookup(Unknown Source)
> 	at
> org.apache.openjpa.lib.conf.Configurations.lookup 
> (Configurations.java:590)
> 	... 36 more".
> ...
>
> What should I do to fix this problem?
> -- 
> Best regards,
> Maciej Olędzki
>
>
> -- 
> View this message in context: http://www.nabble.com/Problem-with- 
> persistence.xml-%28how-to-use-data-source-%29- 
> tp16380414s134p16380414.html
> Sent from the Apache Geronimo - Users mailing list archive at  
> Nabble.com.
>


Mime
View raw message