openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Håkon Sagehaug" <Hakon.Sageh...@bccs.uib.no>
Subject Re: Using datasource from tomcat with openjpa
Date Thu, 06 Nov 2008 09:39:51 GMT
Hi

Thanks so much for the help, now it works for the serlvet, so just trying to
get it to work for the web service also and I'll be a happy guy

cheers, Håkon

2008/11/5 Jeremy Bauer <techhusky@gmail.com>

> 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)
> >
>



-- 
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