One curious thing

If I change to

    public void addUserGroupAccess(UserGroupAccess userGroupAccess) {
        Application app =
this.baseService.getApplicationDAO().find(userGroupAccess.getPk().getApplicationId());
        userGroupAccess.setApplication(app);

        SecurityLevel seclevel =
this.baseService.getSecurityLevelDAO().find(userGroupAccess.getPk().getSecurityLevelId());
        userGroupAccess.setSecurityLevel(seclevel);

        User usr =
this.baseService.getUserDAO().find(userGroupAccess.getPk().getUserId());
        userGroupAccess.setUser(usr);

        this.baseService.getUserGroupAccessDAO().add(userGroupAccess);

    }


then it seems to work...


26126  poc  TRACE  [main] openjpa.Runtime - Found datasource1: datasource
1045888352 from configuration. StoreContext:
org.apache.openjpa.kernel.BrokerImpl@6f29660b
26126  poc  TRACE  [main] openjpa.Runtime -
org.apache.openjpa.persistence.EntityManagerFactoryImpl@3693dbd1 created
EntityManager org.apache.openjpa.persistence.EntityManagerImpl@6f29660b.
26127  poc  TRACE  [main] openjpa.jdbc.SQLDiag - getInitializeStateResult:
oid=201 class com.xyz.wwwww.tomee.entity.Application
26128  poc  TRACE  [main] openjpa.jdbc.SQL - <t 346652520, conn 804578842>
executing prepstmnt 116036913 SELECT t0.active, t0.description FROM
Application t0 WHERE t0.id = ? [params=?]
26131  poc  TRACE  [main] openjpa.jdbc.SQL - <t 346652520, conn 804578842>
[3 ms] spent
26134  poc  TRACE  [main] openjpa.jdbc.JDBC - <t 346652520, conn 804578842>
[0 ms] close
26135  poc  TRACE  [main] openjpa.jdbc.SQLDiag - getInitializeStateResult:
oid=251 class com.xyz.wwwww.tomee.entity.SecurityLevel
26136  poc  TRACE  [main] openjpa.jdbc.SQL - <t 346652520, conn 804578842>
executing prepstmnt 537118814 SELECT t0.active, t0.description FROM
SecurityLevel t0 WHERE t0.id = ? [params=?]
26139  poc  TRACE  [main] openjpa.jdbc.SQL - <t 346652520, conn 804578842>
[3 ms] spent
26140  poc  TRACE  [main] openjpa.jdbc.JDBC - <t 346652520, conn 804578842>
[0 ms] close
26141  poc  TRACE  [main] openjpa.jdbc.SQLDiag - getInitializeStateResult:
oid=301 class com.xyz.wwwww.tomee.entity.User
26142  poc  TRACE  [main] openjpa.jdbc.SQL - <t 346652520, conn 804578842>
executing prepstmnt 1482138557 SELECT t0.active, t0.creation,
t0.emailAddress, t0.firstName, t0.lastAccess, t0.lastName,
t0.middleInitial, t0.username FROM APPUSER t0 WHERE t0.id = ? [params=?]
26146  poc  TRACE  [main] openjpa.jdbc.SQL - <t 346652520, conn 804578842>
[3 ms] spent
26147  poc  TRACE  [main] openjpa.jdbc.JDBC - <t 346652520, conn 804578842>
[0 ms] close
26165  poc  TRACE  [main] openjpa.jdbc.JDBC - The batch limit is set to 100.
26169  poc  TRACE  [main] openjpa.jdbc.SQL - <t 346652520, conn 804578842>
executing prepstmnt 170839542 INSERT INTO UserGroupAccess (applicationId,
securityLevelId, userId, active) VALUES (?, ?, ?, ?) [params=?, ?, ?, ?]
26180  poc  TRACE  [main] openjpa.jdbc.SQL - <t 346652520, conn 804578842>
[11 ms] spent
26188  poc  TRACE  [main] openjpa.jdbc.JDBC - <t 346652520, conn 804578842>
[0 ms] close
26189  poc  TRACE  [main] openjpa.Runtime -
org.apache.openjpa.persistence.EntityManagerImpl@6f29660b.close() invoked.

...BUT, after some inserts, it just hangs and the method just seems to be
blocked somehow.



[]

Leo


On Thu, Nov 21, 2013 at 7:19 PM, Leonardo K. Shikida <shik...@gmail.com>wrote:

> running embedded tomee 1.6.0+ to generate the initial JPA db schema and
> populate with initial data
>
> data source is declared from a properties
>
>     private static Properties getOracleDatasource() {
>         final Properties p = new Properties();
>         p.put("poc1", "new://Resource?type=DataSource");
>         p.put("poc1.JdbcDriver", "oracle.jdbc.OracleDriver");
>         p.put("poc1.JdbcUrl", "jdbc:oracle:thin:@localhost:1521:XE");
>         p.put("poc1.UserName", "xxx");
>         p.put("poc1.Password", "xxx");
>         return p;
>     }
>
> container is instantiated and EJBs are retrieved via JDNI lookup
>
> ejbContainer = EJBContainer.createEJBContainer(p);
> context = ejbContainer.getContext();
> authEJB = (AuthEJB)
> context.lookup("java:global/xyz/"+AuthEJB.class.getSimpleName());
>
> EJBs provide transactional context and perform simple CRUD operations via
> DAO classes
>
> for example
>
>         UserGroupAccess userGroupAccessAdmin = new UserGroupAccess();
>         userGroupAccessAdmin.setActive(true);
>         userGroupAccessAdmin.setPk(new
> UserGroupAccessPK(sessionManager.getId(),administrator.getId(),
> sampleUser.getId()));
>         userGroupAccessAdmin.setApplication(sessionManager);
>         userGroupAccessAdmin.setSecurityLevel(administrator);
>         userGroupAccessAdmin.setUser(sampleUser);
>
>
>         this.getAuthEJB().addUserGroupAccess(userGroupAccessAdmin); <=
> exception happens here
>
> where
>
>     public void addUserGroupAccess(UserGroupAccess userGroupAccess) {
>         this.baseService.getUserGroupAccessDAO().add(userGroupAccess);
>     }
>
>
> Several other objects are persisted in the same way, but only for this
> one, that has an embedded composite PK, the exception is raised. In fact,
> I've just disabled the points in the code where these objects are persisted
> to keep working until I find a solution/workaround for this.
>
> My persistence.xml
>
> <?xml version="1.0" encoding="UTF-8"?>
> <persistence version="2.0" 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_2_0.xsd";>
>     <persistence-unit name="poc">
>         <jta-data-source>poc1</jta-data-source>
>         <non-jta-data-source>poc2</non-jta-data-source>
>         <properties>
>             <property name="openjpa.jdbc.DBDictionary"
> value="org.apache.openjpa.jdbc.sql.OracleDictionary" />
>             <property name="openjpa.jdbc.DBDictionary"
> value="oracle(maxEmbeddedBlobSize=-1,maxEmbeddedClobSize=-1)" />
>             <property name="openjpa.jdbc.SynchronizeMappings"
> value="buildSchema(ForeignKeys=true)" />
> <!--             <property name="openjpa.Log" value="DefaultLevel=WARN,
> Runtime=INFO, Tool=INFO, SQL=TRACE"/> -->
>         </properties>
>     </persistence-unit>
> </persistence>
>
> thanks
>
>
> []
>
> Leo
>
>
> On Thu, Nov 21, 2013 at 5:18 PM, Rick Curtis <curti...@gmail.com> wrote:
>
>> What is the scenario that you are running when you encounter this problem?
>>
>>
>> On Thu, Nov 21, 2013 at 9:46 AM, Leonardo K. Shikida <shik...@gmail.com
>> >wrote:
>>
>> > tomee 1.5.2 = openJPA 2.2.0
>> > tomee 1.6.0 = openJPA 2.3.0-Snapshot
>> >
>> > thanks!
>> >
>> > Leo
>> >
>> > []
>> >
>> > Leo
>> >
>> >
>> > On Thu, Nov 21, 2013 at 1:17 PM, Rick Curtis <curti...@gmail.com>
>> wrote:
>> >
>> > > Do you know what version of OpenJPA is in  TomeEE 1.5.2?
>> > >
>> > >
>> > > On Wed, Nov 20, 2013 at 6:46 PM, Leonardo K. Shikida <
>> shik...@gmail.com
>> > > >wrote:
>> > >
>> > > > Hi
>> > > >
>> > > > My code that was working with tomee 1.5.2 (openEJB 4.5.2 I guess).
>> > > >
>> > > > Now I am trying to use tomee 1.6.0 (openEJB 4.6.0 I guess again).
>> > > >
>> > > > My class uses a primary key following this structure
>> > > >
>> > > > @Entity
>> > > > public class UserGroupAccess implements Serializable{
>> > > >
>> > > >     /**
>> > > >      *
>> > > >      */
>> > > >     private static final long serialVersionUID =
>> 7233673815582184369L;
>> > > >
>> > > >     @ManyToOne
>> > > >     @JoinColumn(name="applicationId")
>> > > >     @MapsId("applicationId")
>> > > >     private Application application;
>> > > >
>> > > >     @ManyToOne
>> > > >     @JoinColumn(name="securityLevelId")
>> > > >     @MapsId("securityLevelId")
>> > > >     private SecurityLevel securityLevel;
>> > > >
>> > > >     @ManyToOne
>> > > >     @JoinColumn(name="userId")
>> > > >     @MapsId("userId")
>> > > >     private User user;
>> > > >
>> > > >     @EmbeddedId
>> > > >     private UserGroupAccessPK pk;
>> > > > (...)
>> > > > }
>> > > >
>> > > > and the primary key
>> > > >
>> > > > @Embeddable
>> > > > public class UserGroupAccessPK implements Serializable{
>> > > >
>> > > >     /**
>> > > >      *
>> > > >      */
>> > > >     private static final long serialVersionUID =
>> 7233673815582184369L;
>> > > >
>> > > >     public UserGroupAccessPK(long application,
>> > > >             long securityLevel, long user) {
>> > > >         super();
>> > > >         this.applicationId = application;
>> > > >         this.securityLevelId = securityLevel;
>> > > >         this.userId = user;
>> > > >     }
>> > > >
>> > > >     public UserGroupAccessPK() {
>> > > >         super();
>> > > >     }
>> > > >
>> > > >     private long applicationId;
>> > > >
>> > > >     private long securityLevelId;
>> > > >
>> > > >     private long userId;
>> > > > (...)
>> > > > }
>> > > >
>> > > > These classes are enhanced manually with
>> > > > org.apache.openjpa.enhance.PCEnhancer
>> > > >
>> > > > While trying to run some tests, I've got the following exception
>> > > >
>> > > > INFO: Starting OpenJPA 2.3.0-SNAPSHOT
>> > > > Nov 20, 2013 10:31:32 PM null
>> > > > INFO: Connected to Oracle version 11.11 using JDBC driver Oracle
>> JDBC
>> > > > driver version 12.1.0.1.0.
>> > > > Nov 20, 2013 10:31:39 PM
>> > > > org.apache.geronimo.transaction.manager.TransactionImpl
>> > beforeCompletion
>> > > > WARNING: Unexpected exception from beforeCompletion; transaction
>> will
>> > > roll
>> > > > back
>> > > > <openjpa-2.3.0-SNAPSHOT-r422266:1535082 nonfatal general error>
>> > > > org.apache.openjpa.persistence.PersistenceException:
>> > > > org.apache.openjpa.kernel.DetachedStateManager cannot be cast to
>> > > > org.apache.openjpa.kernel.StateManagerImpl
>> > > >     at
>> > > >
>> > >
>> >
>> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2027)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:527)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:512)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:413)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:262)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:328)
>> > > >     at
>> > > >
>> >
>> org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:75)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:76)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:231)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:272)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:267)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:90)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:306)
>> > > > Caused by: java.lang.ClassCastException:
>> > > > org.apache.openjpa.kernel.DetachedStateManager cannot be cast to
>> > > > org.apache.openjpa.kernel.StateManagerImpl
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.jdbc.meta.FieldMapping.setPKValueFromMappedByIdField(FieldMapping.java:640)
>> > > >     at
>> > > >
>> org.apache.openjpa.jdbc.meta.FieldMapping.insert(FieldMapping.java:622)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.insert(AbstractUpdateManager.java:239)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.populateRowManager(AbstractUpdateManager.java:166)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:110)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.jdbc.kernel.AbstractUpdateManager.flush(AbstractUpdateManager.java:78)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:732)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:131)
>> > > >     at
>> org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2203)
>> > > >     at
>> > > org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2101)
>> > > >     at
>> > > >
>> > >
>> >
>> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2019)
>> > > >     ... 17 more
>> > > >
>> > > > Exception in thread "main"
>> javax.ejb.EJBTransactionRolledbackException:
>> > > > Transaction was rolled back, presumably because setRollbackOnly was
>> > > called
>> > > > during a synchronization
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:379)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:310)
>> > > > Caused by: javax.transaction.RollbackException: Unable to commit:
>> > > > transaction marked for rollback
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:272)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:252)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.transaction.JtaTransactionPolicy.completeTransaction(JtaTransactionPolicy.java:328)
>> > > >     at
>> > > >
>> >
>> org.apache.openejb.core.transaction.TxRequired.commit(TxRequired.java:75)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.transaction.EjbTransactionUtil.afterInvoke(EjbTransactionUtil.java:76)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:231)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:181)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:272)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:267)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:90)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:306)
>> > > >     ... 3 more
>> > > > Caused by:
>> > > > org.apache.geronimo.transaction.manager.SetRollbackOnlyException:
>> > > > setRollbackOnly() called.  See stacktrace for origin
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.setRollbackOnly(TransactionImpl.java:126)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionManagerImpl.setRollbackOnly(TransactionManagerImpl.java:243)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openejb.core.TransactionSynchronizationRegistryWrapper.setRollbackOnly(TransactionSynchronizationRegistryWrapper.java:71)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.ee.RegistryManagedRuntime$TransactionManagerRegistryFacade.setRollbackOnly(RegistryManagedRuntime.java:128)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.ee.RegistryManagedRuntime.setRollbackOnly(RegistryManagedRuntime.java:74)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.ee.AutomaticManagedRuntime.setRollbackOnly(AutomaticManagedRuntime.java:274)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.kernel.BrokerImpl.setRollbackOnlyInternal(BrokerImpl.java:1670)
>> > > >     at
>> > > >
>> > >
>> >
>> org.apache.openjpa.kernel.BrokerImpl.setRollbackOnly(BrokerImpl.java:1650)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.kernel.DelegatingBroker.setRollbackOnly(DelegatingBroker.java:981)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.persistence.EntityManagerImpl.setRollbackOnly(EntityManagerImpl.java:631)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.persistence.PersistenceExceptions$2.translate(PersistenceExceptions.java:77)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.openjpa.kernel.BrokerImpl.translateManagedCompletionException(BrokerImpl.java:2089)
>> > > >     at
>> > > >
>> > >
>> >
>> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:2027)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:527)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:512)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:413)
>> > > >     at
>> > > >
>> > > >
>> > >
>> >
>> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:262)
>> > > >     ... 13 more
>> > > >
>> > > > Any help is welcome.
>> > > >
>> > > > Thanks in advance.
>> > > >
>> > > > Leo
>> > > >
>> > >
>> > >
>> > >
>> > > --
>> > > *Rick Curtis*
>> > >
>> >
>>
>>
>>
>> --
>> *Rick Curtis*
>>
>
>

Reply via email to