How to configured the PersistenceManager for Bean Managed Transactions?

Andy says that "DataNucleus JCA adapter supports both Local and XA transaction types".


As a followup question, does the JCA adapter support anything other than XATransactions?
I see the following in ra.xml:


Does it support any other mode?  ie: NoTransaction or LocalTransaction?




I'm trying to integrate DN (JDO) into my JEE application via the JCA adapter, and configure the Persistence manager to understand BeanManagedTransactions.  I am retrofitting this into existing code (formerly using Kodo), and am having difficulties getting the configuration correct.

In my `persistence.xml` file, I have defined my PU as follows:

    <persistence-unit name="pu">
            <property name="datanucleus.connection.resourceType" value="JTA"/>
            <property name="datanucleus.transaction.type" value="JTA"/>
            <property name="datanucleus.storeManagerType" value="rdbms"/>
            <property name="datanucleus.schema.autoCreateAll" value="false"/>
            <property name="datanucleus.ConnectionFactoryName" value="java:jboss/datasources/POC_DN"/>
            <property name="datanucleus.connectionPoolingType" value="dbcp2-builtin"/>
            <property name="javax.persistence.jta-data-source" value="java:jboss/datasources/POC_DN"/>
            <property name="datanucleus.jtaLocator" value="jboss"/>

In my Bean code, I my bean is defined as a:     

Finally, in my actual code, I am retrieving the persistence manager from the JNDI and getting the transaction from it (where jndiName is the name of my connection-definition defined in the container)
         PersistenceManagerFactory pmf = (PersistenceManagerFactory) context.lookup(jndiName);
         pm = pmf.getPersistenceManager();

However, in doing so, I get error messages that I cannot begin a transaction that has already started.  If I omit the begin(), then I get an error message that "IJ031019: You cannot commit during a managed transaction".

In both circumstances, it is clear to me that the PM does not understand that I want to use BeanManagedTransactions.

Is there a special configuration that I need to use?  Is retrieving the PM from the JNDI explicitly like this causing my issues?  How else can I access the Tx statically?  Am I forced/required to retrieve the `java:jboss/UserTransaction` from the JNDI instead?

Thanks for any insight/tips.