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