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 <[EMAIL PROTECTED]>

> 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 <[EMAIL PROTECTED]>
>
>
>> 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 <[EMAIL PROTECTED]>
>> >
>> >> 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 <[EMAIL PROTECTED]>
>> >> 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 <
>> >> > [EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]>
>> >> > >
>> >> > >> 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 <[EMAIL PROTECTED]>
>> >> > >>
>> >> > >> 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 <
>> >> [EMAIL PROTECTED]
>> >> > >
>> >> > >>> 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
>> >> > >>> > <[EMAIL PROTECTED]>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)

Reply via email to