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