openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeremy Bauer" <techhu...@gmail.com>
Subject Re: Using datasource from tomcat with openjpa
Date Wed, 05 Nov 2008 15:06:43 GMT
Hi Håkon,

Try defining a non-jta data source in your persistence.xml.  That should
correct the problem.  You can even use the same data source as you've
defined for your jta-data-source name.

ex: <non-jta-data-source>java:comp/env/jdbc/workflowdb</non-jta-data-source>

-Jeremy

On Wed, Nov 5, 2008 at 7:08 AM, Håkon Sagehaug
<Hakon.Sagehaug@bccs.uib.no>wrote:

> Hi
>
> I tried to get it to just work on a servlet and have more success here, but
> have now this problem, when I want to get the transaction in my servlet
> like
> this I
>
> em.getTransaction().begin();
>
> and error is thrown
>
> Caused by: java.sql.SQLException: Unable to obtain a TransactionManager
> using null.
>    at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:419)
>    at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.nextInternal(TableJDBCSeq.java:290)
>    at
>
> org.apache.openjpa.jdbc.kernel.AbstractJDBCSeq.next(AbstractJDBCSeq.java:60)
>    ... 33 more
> Caused by: javax.transaction.NotSupportedException: Unable to obtain a
> TransactionManager using null.
>    at
>
> org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:306)
>    at
>
> org.apache.openjpa.jdbc.kernel.TableJDBCSeq.allocateSequence(TableJDBCSeq.java:415)
>    ... 35 more
> Caused by: <openjpa-1.2.0-r422266:683325 fatal user error>
> org.apache.openjpa.util.InvalidStateException: Could not perform automatic
> lookup of EJB container's javax.transaction.TransactionManager
> implementation. Please ensure that you are running the application from
> within an EJB 1.1 compliant EJB container, and then set the
> org.apache.openjpa.ManagedRuntime property to
>    at
>
> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(AutomaticManagedRuntime.java:250)
>    at
>
> org.apache.openjpa.ee.AutomaticManagedRuntime.doNonTransactionalWork(AutomaticManagedRuntime.java:304)
>    ... 36 more
> Caused by: javax.naming.NameNotFoundException: Name
> TransactionSynchronizationRegistry is not bound in this Context
>    at org.apache.naming.NamingContext.lookup(NamingContext.java:770)
>    at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
>    at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
>    at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
>    at org.apache.naming.SelectorContext.lookup(SelectorContext.java:137)
>    at javax.naming.InitialContext.lookup(InitialContext.java:392)
>    at
>
> org.apache.openjpa.ee.RegistryManagedRuntime.getTransactionManager(RegistryManagedRuntime.java:61)
>    at
>
> org.apache.openjpa.ee.AutomaticManagedRuntime.getTransactionManager(AutomaticManagedRuntime.java:168)
>    ... 37 more
>
>
> It works fine when I just want to do a db lookup and not involve the
> transaction manager. Do I need to specify a transaction manager in tomcat
> as
> I did with the datasource?
>
> cheers, håkon
>
>
> 2008/11/5 Håkon Sagehaug <Hakon.Sagehaug@bccs.uib.no>
>
> > Hi all,
> >
> > I don't know exactly my problems lies, but think it may be in axis or I'm
> > not sure. Because i got hold of the  context in a normail servlet with
> this
> > code
> >
> > Context initCtx = null;
> >     Context envCtx;
> >
> >     DataSource ds = null;
> >     try {
> >         initCtx = new InitialContext();
> >         envCtx = (Context) initCtx.lookup("java:comp/env");
> >         ds = (DataSource) envCtx.lookup("jdbc/workflowdb");
> >
> > but when I try the same inside a web service I get this
> >
> > javax.naming.NameNotFoundException: Name java:comp is not bound in this
> > Context
> >
> > So i guess it's something about classloading etc, but the usual solution
> > about same jar files in <TOMCTA_HOME>/lib and weppAPP/WEB-INF/lib can't
> be
> > used here since there are noe similar jar files.
> >
> > My enironment is a tomcat 6 and axis2 1.3.
> >
> > cheers, Håkon
> >
> > 2008/11/5 Mani <mbhooshan@yahoo.com>
> >
> >
> >> Hi
> >>  I am not sure whether you are still facing the issue.
> >> if yes i think you can try like this:
> >>
> >>        <properties>
> >>              <property name="openjpa.ConnectionFactoryName"
> >> value="jdbc/AMPPARTS"
> >> />
> >>             <property name="openjpa.Log"
> >> value="DefaultLevel=INFO,Tool=INFO" />
> >>            <property name="openjpa.Sequence"
> >> value="table(Table=OPENJPA_SEQUENCE_TABLE, Increment=1)"/>
> >>             <property name="openjpa.jdbc.Schema" value="Administrator"/>
> >>     </properties>
> >>
> >> It worked for me. Try again. All the best.
> >> -Mani
> >>
> >>
> >> Håkon Sagehaug wrote:
> >> >
> >> > Hi
> >> >
> >> > I think you may have to send me all ;). I tried from the beginning
> with
> >> a
> >> > clean tomcat and axis 2 install, and configured like you said, but
> still
> >> > the
> >> > same problem, so if you could send me what you think I need for
> getting
> >> it
> >> > to work I would appreciate it
> >> >
> >> > cheers, Håkon
> >> >
> >> > 2008/11/3 Jeremy Bauer <techhusky@gmail.com>
> >> >
> >> >> Are you running a packaged service within the Axis2 app (an .aar
> >> archive)
> >> >> or
> >> >> is your service deployed as part of a separate web application?  I
> was
> >> >> able
> >> >> to get an OpenJPA-based Axis2 service to work deployed within a
> >> >> standalone
> >> >> web application.  I used Tomcat 5.5, Axis 2-1.4.1 and OpenJPA 1.2.0.
> >> >> I simply added this entry to my <tomcat_home>/conf/context.xml:
> >> >>
> >> >>    <Resource name="jdbc/TestDB" auth="Container"
> >> >> type="javax.sql.DataSource"
> >> >>              maxActive="20" maxIdle="10" maxWait="10000"
> >> >>              username="yourusername" password="yourpassword"
> >> >> driverClassName="com.mysql.jdbc.Driver"
> >> >>
> >> >> url="jdbc:mysql://localhost:3306/testdb?autoReconnect=true"/>
> >> >>
> >> >> And referenced the data source in my persistence.xml:
> >> >>
> >> >> <persistence-unit name="Tomcat">
> >> >> <jta-data-source>java:comp/env/jdbc/TestDB</jta-data-source>
> >> >> <class>entities.TestData</class>
> >> >> </persistence-unit>
> >> >>
> >> >> I also added the OpenJPA jar and necessary supporting jars
> >> >> to <tomcat_home>/common/lib.
> >> >>
> >> >> If you'd like a copy of my .war with source please let me know.  The
> >> .war
> >> >> contains Axis2 binaries, which are quite large, so I won't post it
to
> >> the
> >> >> forum.  I'd guess using a .aar should work as well (if you happen to
> be
> >> >> doing that), but the configuration may be different.
> >> >>
> >> >> -Jeremy
> >> >>
> >> >> On Mon, Nov 3, 2008 at 12:20 PM, Jeremy Bauer <techhusky@gmail.com>
> >> >> wrote:
> >> >>
> >> >> > I found this:
> >> >> >
> >> >>
> >>
> http://www.experts-exchange.com/Software/Server_Software/Application_Servers/Java/Apache_Tomcat/Q_23207819.htmlwhich
> >> >> > indicated that you need to create a resource link between the
data
> >> >> source
> >> >> > you defined in the service.xml and resource ref in the web.xml,
by
> >> >> defining
> >> >> > this in the context.xml:
> >> >> >
> >> >> > <ResourceLink global="jdbc/workflowdb" name="jdbc/workflowdb"
> >> >> > auth="Container"
> >> >> >                type="javax.sql.DataSource"/>
> >> >> >
> >> >> > -Jeremy
> >> >> >
> >> >> >
> >> >> > On Mon, Nov 3, 2008 at 11:37 AM, Håkon Sagehaug <
> >> >> > Hakon.Sagehaug@bccs.uib.no> wrote:
> >> >> > > Hi
> >> >> > >
> >> >> > > when I try to do this programmatically like this
> >> >> > >
> >> >> > > Context initCtx = null;
> >> >> > >    Context envCtx;
> >> >> > >    DataSource ds = null;
> >> >> > >    try {
> >> >> > >        initCtx = new InitialContext();
> >> >> > >        // envCtx = (Context) initCtx.lookup("java:/comp/env");
> >> >> > >        ds = (DataSource)
> >> >> initCtx.lookup("java:comp/env/jdbc/workflowdb");
> >> >> > >    } catch (NamingException e) {
> >> >> > >        // TODO Auto-generated catch block
> >> >> > >        e.printStackTrace();
> >> >> > >    }
> >> >> > >
> >> >> > > propMap.put("openjpa.ConnectionFactory", ds);
> >> >> > >    propMap.put("openjpa.ConnectionFactoryMode", "managed");
> >> >> > >    propMap.put("openjpa.FlushBeforeQueries", "false");
> >> >> > >
> >> >> > >    EntityManagerFactory emf =
> >> Persistence.createEntityManagerFactory(
> >> >> > >        "MyOpenJPa", propMap);
> >> >> > >
> >> >> > > I always  get
> >> >> > >
> >> >> > > javax.naming.NameNotFoundException: Name java:comp is not
bound
> in
> >> >> this
> >> >> > > Context
> >> >> > >
> >> >> > > So I guess this is  related, but followed the tomcat doc
so I
> can't
> >> >> > > understand why this does not work.
> >> >> > > 2008/11/3 Håkon Sagehaug <Hakon.Sagehaug@bccs.uib.no>
> >> >> > >
> >> >> > >> Hi
> >> >> > >>
> >> >> > >> I added resource configuration to the web.xml of axis2,
and
> tried
> >> >> also
> >> >> > to
> >> >> > >> make a web.xml for the web service but neither of this
worked.
> Any
> >> >> > onther
> >> >> > >> tips, it world be realy nice to get this to work for
me
> >> >> > >>
> >> >> > >> cheers, Håkon
> >> >> > >>
> >> >> > >> 2008/11/3 Jeremy Bauer <techhusky@gmail.com>
> >> >> > >>
> >> >> > >> You may also need to define a resource reference in your
> web.xml.
> >> >> > >>> This link contains a good example on how to configure
and use a
> >> >> data
> >> >> > >>> source:
> >> >> > >>>
> >> >> >
> >> >>
> >>
> http://tomcat.apache.org/tomcat-5.5-doc/jndi-datasource-examples-howto.html
> >> >> > >>> .
> >> >> > >>>  The configuration part is what is important for
OpenJPA, since
> >> it
> >> >> > >>> just looks up the data source via the JNDI name provided
in the
> >> >> > >>> <jta-data-source> element (as Mike pointed
out).
> >> >> > >>>
> >> >> > >>> -Jeremy
> >> >> > >>>
> >> >> > >>> On Mon, Nov 3, 2008 at 9:22 AM, Michael Dick <
> >> >> michael.d.dick@gmail.com
> >> >> > >
> >> >> > >>> wrote:
> >> >> > >>> > Have you tried
> >> >> > >>> >
> >> <jta-data-source>java:comp/env/jdbc/workflowdb</jta-data-source>
> >> >> > instead
> >> >> > >>> of
> >> >> > >>> > the property for openjpa.ConnectionFactoryName?
> >> >> > >>> >
> >> >> > >>> > -mike
> >> >> > >>> >
> >> >> > >>> > On Mon, Nov 3, 2008 at 8:22 AM, Håkon Sagehaug
> >> >> > >>> > <Hakon.Sagehaug@bccs.uib.no>wrote:
> >> >> > >>> >
> >> >> > >>> >> Hi all,
> >> >> > >>> >>
> >> >> > >>> >> I've got a axis2 web service that is deployed
in tomcat and
> >> talk
> >> >> to
> >> >> > a
> >> >> > >>> >> database using openjpa. This works fine
when I just use the
> >> >> > persistent
> >> >> > >>> xml
> >> >> > >>> >> to configure my db connection, but now I
want to use tomcat
> to
> >> >> > >>> configure
> >> >> > >>> >> the
> >> >> > >>> >> datasource. Here is my set-up
> >> >> > >>> >>
> >> >> > >>> >> persistent.xml
> >> >> > >>> >>
> >> >> > >>> >>
> >> >> > >>> >> <persistence-unit name="MyOpenJPa"
> >> >> > transaction-type="RESOURCE_LOCAL">
> >> >> > >>> >>
> >> >> > >>> >>
> >> >> > >>>
> >> >> >
> >> >>
> >>
> <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
> >> >> > >>> >>
> >> >> > >>> >>        <class>demo.hibernate.MyPerson</class>
> >> >> > >>> >>        <properties>
> >> >> > >>> >>            <property name="openjpa.ConnectionFactoryName"
> >> >> > >>> >> value="java:comp/env/jdbc/workflowdb" />
> >> >> > >>> >>            <property name="openjpa.Log"
> >> >> value="DefaultLevel=INFO,
> >> >> > >>> >> Tool=INFO" />
> >> >> > >>> >>            <property name="openjpa.Sequence"
> >> >> > >>> >> value="table(Table=OPENJPA_SEQUENCE_TABLE,
Increment=1)"/>
> >> >> > >>> >>
> >> >> > >>> >>        </properties>
> >> >> > >>> >>    </persistence-unit>
> >> >> > >>> >>
> >> >> > >>> >> In tomcat's service xml I've got this
> >> >> > >>> >>
> >> >> > >>> >> <Resource name="jdbc/workflowdb" auth="Container"
> >> >> > >>> >> type="javax.sql.DataSource"
> >> >> > >>> >>                 maxActive="5" maxIdle="5"
maxWait="10000"
> >> >> > >>> >>                 username="name" password="password"
> >> >> > >>> >> driverClassName="org.postgresql.Driver"
> >> >> > >>> >>                 url="jdbc:postgresql://hostname/Workflows"/>
> >> >> > >>> >>
> >> >> > >>> >> I tried to put it into the  <GlobalNamingResources>
tag and
> >> >> inside
> >> >> a
> >> >> > >>> >> <Context> tag using the axis2 as path,
but I always get this
> >> >> error
> >> >> > back
> >> >> > >>> >>
> >> >> > >>> >> A JDBC Driver or DataSource class name must
be specified in
> >> the
> >> >> > >>> >> ConnectionDriverName property.
> >> >> > >>> >>
> >> >> > >>> >> Does anyone have a good tip on how to get
this to work??
> >> >> > >>> >>
> >> >> > >>> >> cheers, Håkon
> >> >> > >>> >>
> >> >> > >>> >> --
> >> >> > >>> >> Håkon Sagehaug, Software Developer
> >> >> > >>> >> Parallab, Bergen Center for Computational
Science (BCCS)
> >> >> > >>> >> UNIFOB AS (University of Bergen Research
Company)
> >> >> > >>> >>
> >> >> > >>> >
> >> >> > >>>
> >> >> > >>
> >> >> > >>
> >> >> > >>
> >> >> > >> --
> >> >> > >> Håkon Sagehaug, Software Developer
> >> >> > >> Parallab, Bergen Center for Computational Science (BCCS)
> >> >> > >> UNIFOB AS (University of Bergen Research Company)
> >> >> > >>
> >> >> > >
> >> >> > >
> >> >> > >
> >> >> > > --
> >> >> > > Håkon Sagehaug, Software Developer
> >> >> > > Parallab, Bergen Center for Computational Science (BCCS)
> >> >> > > UNIFOB AS (University of Bergen Research Company)
> >> >> > >
> >> >> >
> >> >> >
> >> >>
> >> >
> >> >
> >> >
> >> > --
> >> > Håkon Sagehaug, Software Developer
> >> > Parallab, Bergen Center for Computational Science (BCCS)
> >> > UNIFOB AS (University of Bergen Research Company)
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >>
> http://n2.nabble.com/Using-datasource-from-tomcat-with-openjpa-tp1449575p1459221.html
> >> Sent from the OpenJPA Users mailing list archive at Nabble.com.
> >>
> >>
> >
> >
> > --
> > Håkon Sagehaug, Software Developer
> > Parallab, Bergen Center for Computational Science (BCCS)
> > UNIFOB AS (University of Bergen Research Company)
> >
>
>
>
> --
> Håkon Sagehaug, Software Developer
> Parallab, Bergen Center for Computational Science (BCCS)
> UNIFOB AS (University of Bergen Research Company)
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message