[ https://issues.apache.org/jira/browse/OPENJPA-96?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12463337 ]
Kevin Sutter commented on OPENJPA-96: ------------------------------------- Looks like this is a duplicate of OPENJPA-78. I will close this one out. > Runtime Enhancement only processes first persistence unit defined in > persistence.xml > ------------------------------------------------------------------------------------ > > Key: OPENJPA-96 > URL: https://issues.apache.org/jira/browse/OPENJPA-96 > Project: OpenJPA > Issue Type: Bug > Components: jpa > Reporter: Kevin Sutter > > (This Issue may be related to OPENJPA-9, but since that one was specific to > static PCEnhancing, I thought I would open a separate Issue. Just in case > the solutions are separate.) > I'm using dynamic runtime enhancement via the -javaagent parameter. It seems > that only the first persistence-unit defined in the persistence.xml is being > processed for the runtime enhancement. If the persistence.xml has only one > entry, no problem. But, if it has more than one entry, then only the first > persistence-unit definition is being processed for the dynamic enhancement. > When I turn trace on, I get the following message when the runtime > enhancement works: > 8312 my persistence unit INFO [main] openjpa.MetaData - Found 1 classes > with metadata in 0 milliseconds. > 8943 my persistence unit TRACE [main] openjpa.Enhance - > "com/ibm/ws/persistence/tests/simple/TestEntity" requires runtime > enhancement: true > 9043 my persistence unit TRACE [main] openjpa.MetaData - Loading metadata > for "class com.ibm.ws.persistence.tests.simple.TestEntity" under mode > "[META][QUERY]". > When this p-u definition is not first in my persistence.xml, the "8943" > message is missing and my test fails: > 8512 my persistence unit INFO [main] openjpa.MetaData - Found 1 classes > with metadata in 0 milliseconds. > 8522 my persistence unit TRACE [main] openjpa.MetaData - Using metadata > factory "[EMAIL PROTECTED]". > 8522 my persistence unit TRACE [main] openjpa.MetaData - Loading metadata > for "class com.ibm.ws.persistence.tests.simple.TestEntity" under mode > "[META][QUERY]". > I eventually get the following message when running the testcase: > <4|false|0.0.0> org.apache.openjpa.persistence.ArgumentException: Attempt to > cast instance "[EMAIL PROTECTED]" to PersistenceCapable failed. Ensure that > it has been enhanced. > FailedObject: [EMAIL PROTECTED] > at > org.apache.openjpa.kernel.BrokerImpl.assertPersistenceCapable(BrokerImpl.java:4234) > at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2344) > at org.apache.openjpa.kernel.BrokerImpl.persist(BrokerImpl.java:2204) > at > org.apache.openjpa.kernel.DelegatingBroker.persist(DelegatingBroker.java:991) > at > org.apache.openjpa.persistence.EntityManagerImpl.persist(EntityManagerImpl.java:525) > at > com.ibm.ws.persistence.tests.simple.TestInsertAndFind.test001(TestInsertAndFind.java:30) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:615) > at > org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99) > at > org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81) > at > org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) > at > org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75) > at > org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45) > at > org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71) > at > org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35) > at > org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42) > at > org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34) > at > org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52) > at > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38) > at > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) > at > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196) > Thanks, > Kevin -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: https://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira