persistence@glassfish.java.net

Re: EntityManager lookup difference between GF V2 and V3

From: Marina Vatkina <Marina.Vatkina_at_Sun.COM>
Date: Fri, 25 Sep 2009 13:13:11 -0700

Mitesh, doesn't transaction-type="RESOURCE_LOCAL allow non-jta-data-source?

thanks,
-marina

Mitesh Meswani wrote:
> I am surprised that it worked in V2. You should be specifying
> jta-data-source instead of non-jta-data-source in persitence.xml.
> Somethig like as follows
> / <persistence-unit name="*org.webonweb.runtime.impl.repository.db*"
> transaction-type="RESOURCE_LOCAL">
> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
> <non-jta-data-source>*jdbc/webonweb/repository*</non-jta-data-source>
> //<jta-data-source>*jdbc/webonweb/repository*</jta-data-source>/
>
> Thanks,
> Mitesh
>
> Girish Kumar Balachandran wrote:
>
>> Hi There,
>> We are trying out GF v3 for zembly.com and I am seeing following
>> exception in obtaining EntityManager for EntityManagerFactory (em =
>> emf.createEntityManager();):
>> /
>> Caused by: Exception [EclipseLink-4021] (Eclipse Persistence Services
>> - 1.0.1 (Build 20080905)):
>> org.eclipse.persistence.exceptions.DatabaseException
>> Exception Description: Unable to acquire a connection from driver
>> [null], user [null] and URL [null]. Verify that you have set the
>> expected driver class and URL. Check your login, persistence.xml or
>> sessions.xml resource. The jdbc.driver property should be set to a
>> class that is compatible with your database platform
>> at
>> org.eclipse.persistence.exceptions.DatabaseException.unableToAcquireConnectionFromDriverException(DatabaseException.java:365)
>> at
>> org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:90)/
>>
>> Things work perfect with GF V2/2.1 but, V3 does not seem to work. Am I
>> supposed to do something more than the following?
>>
>> Any tips would be much appreciated.
>>
>> Thanks,
>> =Girish
>>
>> These are the configuration I have:
>> *
>> System servlet has these 2 annotations reg PU:*
>>
>> /_at_PersistenceUnits(
>> {
>> @PersistenceUnit(name =
>> "*webonweb/repositoryEntityManagerFactory*",
>> unitName =
>> "*org.webonweb.runtime.impl.repository.db*"),
>> @PersistenceUnit(name =
>> "*webonweb/readOnlyRepositoryEntityManagerFactory*",
>> unitName =
>> "*org.webonweb.runtime.impl.repository.db.readonly*")
>> }
>> )/
>>
>>
>> *Persistence.xml has (use introspection to discover all entities):*
>>
>> / <persistence-unit name="*org.webonweb.runtime.impl.repository.db*"
>> transaction-type="RESOURCE_LOCAL">
>> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
>> <non-jta-data-source>*jdbc/webonweb/repository*</non-jta-data-source>
>> <properties>
>> <!-- <property name="toplink.logging.level" value="FINE"/> -->
>> <!-- property name="toplink.logging.logger" value="JavaLogger"/ -->
>> <!-- END JPA cache control properties -->
>> <property name="eclipselink.cache.shared.default" value="true"/>
>> <property name="eclipselink.logging.level" value="OFF"/>
>> </properties>
>> </persistence-unit>
>> <persistence-unit
>> name="*org.webonweb.runtime.impl.repository.db.readonly*"
>> transaction-type="RESOURCE_LOCAL">
>> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
>>
>> <non-jta-data-source>*jdbc/webonweb/readonlyrepository*</non-jta-data-source>
>> <properties>
>> <property name="eclipselink.cache.shared.default" value="true"/>
>> <property name="eclipselink.logging.level" value="OFF"/>
>> </properties>
>> </persistence-unit>
>> /
>> *EMF was obtained by (got EMF with out any exception):*
>>
>> /protected EntityManagerFactory createEntityManagerFactory()
>> throws RepositoryException {
>> try {
>> InitialContext ic = new InitialContext();
>> return (EntityManagerFactory)
>> ic.lookup("*java:comp/env/webonweb/repositoryEntityManagerFactory*");
>> } catch (NamingException ne) {
>> throw new RepositoryException(ne);
>> }
>> }
>>
>> protected EntityManagerFactory
>> createReadOnlyEntityManagerFactory() throws RepositoryException {
>> try {
>> InitialContext ic = new InitialContext();
>> return (EntityManagerFactory)
>> ic.lookup("*java:comp/env/webonweb/readOnlyRepositoryEntityManagerFactory*");
>> } catch (NamingException ne) {
>> throw new RepositoryException(ne);
>> }
>> }/
>>
>> *Made sure that the data source is getting looked up correctly by the
>> following code - hence not a config problem:*
>>
>> /private Connection getConnection() throws RepositoryException,
>> SQLException {
>> try {
>> InitialContext ic = new InitialContext();
>> DataSource sd = (DataSource)
>> ic.lookup("*java:comp/env/jdbc/webonweb/repository*");
>> return sd.getConnection();
>> } catch (NamingException ne) {
>> throw new RepositoryException(ne);
>> }
>> }
>>
>>
>> Version: Eclipse Persistence Services - 1.0.1 (Build 20080905)
>> GF: GlassFish v3 Prelude (build b28f)
>>
>> /
>>