David,

First off, thank you....I am embarrassed to admit that I have been banging my head against this for two days now.

Upgrading to Java 7 did the trick.

Regards,
Jason

On 07/25/2012 12:41 PM, Jason wrote:
David,

I am not on Java 7, but I would be willing to give it a whirl.

$ java -fullversion

java full version "1.6.0_24-b24"


I am using the aries proxy that ships out-of-the-box...from the Karaf startup.properties file:

org/apache/aries/proxy/org.apache.aries.proxy/0.3/org.apache.aries.proxy-0.3.jar=20


Regards,
Jason

On 07/25/2012 12:34 PM, David Jencks wrote:
Are you on java 7? I haven't followed this saga very closely but there were some aries proxy changes needed for java 7.... which aries proxy bundle do you have?

david jencks

On Jul 25, 2012, at 12:23 PM, Jason wrote:

Hi all,

Just an update...

I just downloaded a fresh version of Karaf-2.2.8, did a checkout of https://github.com/cschneider/Karaf-Tutorial, changed the db/examplejpa/src/main/resources/OSGI-INF/blueprint/blueprint.xml file to have a 'default-activation="lazy"', then followed the bundle install instructions in the readme.txt and this is the result:

karaf@root> person:add 'Christian Schneider' @schneider_chris

Error executing command: No transaction currently active


If I leave the 'default-activation="eager"', there is a java.lang.Verify exception thrown:

Caused by: java.lang.VerifyError: (class: net/lr/tutorial/karaf/db/examplejpa/impl/$PersonServiceImpl723600344, method: <init> signature: (Ljava/lang/reflect/InvocationHandler;)V) Call to wrong initialization method

at java.lang.Class.getDeclaredConstructors0(Native Method)[:1.6.0_24]

at java.lang.Class.privateGetDeclaredConstructors(Class.java:2406)[:1.6.0_24]

    at java.lang.Class.getConstructor0(Class.java:2716)[:1.6.0_24]

    at java.lang.Class.getConstructor(Class.java:1674)[:1.6.0_24]

at org.apache.aries.proxy.impl.gen.ProxySubclassGenerator.newProxySubclassInstance(ProxySubclassGenerator.java:159)

at org.apache.aries.proxy.impl.AsmProxyManager.createNewProxy(AsmProxyManager.java:81)


At the very least, this tells me that I am not doing anything wrong from within my codebase. Yet, I am still hung up on this issue. Suggestions?

Regards,
Jason

On 07/24/2012 09:14 PM, Jason Reilly wrote:
David,

Yes....I deploy via a custom distribution, so all packages are set to start on start-up. And I restarted the aries transaction bundle from the interactive console.

Regards,
Jason


On 07/24/2012 08:39 PM, David Jencks wrote:
You did install/start the aries transaction manager bundle?

david jencks

On Jul 24, 2012, at 3:52 PM, Jason wrote:

Hi all,

I have been running into an exception lately and can't seem to remedy the problem. I am getting a "javax.persistence.TransactionRequiredException: No transaction currently active" exception. I am using Karaf v2.2.8, ActiveMQ 5.6.0, OpenJPA 2.1.1, and CXF 2.6.1. I followed the Apache Aries sample blog application, so there is a datasource registered via blueprint...looks like this:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"; xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0";

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; default-activation="lazy">

  <cm:property-placeholder persistent-id="edu.unc.mapseq.ds">

    <cm:default-properties>

....snip....

    </cm:default-properties>

  </cm:property-placeholder>

  <bean id="mapseq-ds-jta" class="org.postgresql.xa.PGXADataSource">

    <property name="user" value="${username}" />

    <property name="password" value="${password}" />

    <property name="serverName" value="${serverName}" />

    <property name="databaseName" value="${databaseName}" />

    <property name="portNumber" value="${port}" />

  </bean>

<service id="mapseqXADataSource" ref="mapseq-ds-jta" interface="javax.sql.XADataSource">

    <service-properties>

      <entry key="osgi.jndi.service.name" value="jdbc/mapseqJTA" />

    </service-properties>

  </service>

<bean id="mapseq-ds-no-jta" class="org.postgresql.ds.PGPoolingDataSource">

    <property name="user" value="${username}" />

    <property name="password" value="${password}" />

    <property name="serverName" value="${serverName}" />

    <property name="databaseName" value="${databaseName}" />

    <property name="portNumber" value="${port}" />

    <property name="initialConnections" value="${maxIdle}" />

    <property name="maxConnections" value="${maxActive}" />

  </bean>

<service id="mapseqDataSource" ref="mapseq-ds-no-jta" interface="javax.sql.DataSource">

    <service-properties>

<entry key="osgi.jndi.service.name" value="jdbc/mapseqNoJTA" />

    </service-properties>

  </service>

</blueprint>


Here is the persistence.xml:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";

xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd";

  version="1.0">

  <persistence-unit name="mapseq" transaction-type="JTA">

<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>

<jta-data-source>aries:services/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/mapseqJTA)</jta-data-source>

<non-jta-data-source>aries:services/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/mapseqNoJTA)</non-jta-data-source>

...snip...

<exclude-unlisted-classes>true</exclude-unlisted-classes>

    <properties>

<!-- <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)" /> -->

<!-- <property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=TRACE, Tool=TRACE, SQL=TRACE" /> -->

<property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=restrict, JoinForeignKeyDeleteAction=restrict" />

<property name="openjpa.Log" value="DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=WARN" />

<property name="openjpa.jdbc.DBDictionary" value="postgres(SearchStringEscape=\, SupportsXMLColumn=false)" />

      <property name="openjpa.DataCache" value="false" />

      <property name="openjpa.QueryCache" value="false" />

    </properties>

  </persistence-unit>

</persistence>


And finally, the blueprint.xml file to register JPA DAO services:

<?xml version="1.0" encoding="UTF-8"?>

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";

xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"; xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.0.0";

  default-activation="lazy">

<bean id="accessControlDAOImpl" class="edu.unc.mapseq.dao.jpa.AccessControlDAOImpl" init-method="init">

    <tx:transaction method="*" value="Required" />

    <jpa:context property="entityManager" unitname="mapseq" />

  </bean>

<service ref="accessControlDAOImpl" interface="edu.unc.mapseq.dao.AccessControlDAO" />
...snip...

</blueprint>


Here is part of the stacktrace:

Caused by: javax.persistence.TransactionRequiredException: No transaction currently active

at org.apache.aries.jpa.container.context.transaction.impl.JTAPersistenceContextRegistry.getCurrentPersistenceContext(JTAPersistenceContextRegistry.java:103)

at org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.getPersistenceContext(JTAEntityManager.java:83)

at org.apache.aries.jpa.container.context.transaction.impl.JTAEntityManager.persist(JTAEntityManager.java:278)

    at edu.unc.mapseq.dao.jpa.BaseDAOImpl.save(BaseDAOImpl.java:36)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)[:1.6.0_24]

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)[:1.6.0_24]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.6.0_24]

    at java.lang.reflect.Method.invoke(Method.java:616)[:1.6.0_24]

at org.apache.aries.proxy.impl.ProxyHandler$1.invoke(ProxyHandler.java:50)

at org.apache.aries.proxy.impl.DefaultWrapper.invoke(DefaultWrapper.java:31)

at org.apache.aries.proxy.impl.ProxyHandler.invoke(ProxyHandler.java:78)

    at $Proxy112.save(Unknown Source)

at edu.unc.mapseq.ws.impl.HTSFSampleServiceImpl.save(HTSFSampleServiceImpl.java:45)[234:mapseq-web-service-htsf-sample:0.0.1.SNAPSHOT]


The exception occurs whenever I try to do anything that is transaction related (like persisting an entity). I have set the logging in Karaf to DEBUG and I can't seem to find anything out of the ordinary. Anyone seen this before??? Suggested solutions? Suggestions for debugging further?


Regards,
Jason



Reply via email to