You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by Senthil Kumar Sekar <se...@virtusapolaris.com> on 2016/05/12 03:09:03 UTC

Open JPA Entity Loading issue due to failure in Enhancing at run time.


Hello Team,
               We have been using openjpa – 2.4.0 for our application data access layer which will be deployed in Jboss Fuse 6.2.1.
We have persistence xml where all the entities are declared.

Very Frequently that we are facing the below issue and had to restart the container multiple to get the issue resolved.

java.lang.reflect.UndeclaredThrowableException
        at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
        at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
               …………….
Caused by: java.lang.reflect.UndeclaredThrowableException
        at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
        ... 67 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79]
        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
        at org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandler.invoke(EntityManagerProxyFactory.java:31)
        ... 68 more
Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter "select cETAssignmentException_
from CETAssignmentException cETAssignmentException_
where lower(cETAssignmentException_.id.officeCode) = ?1 and lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: The name "CETAssignmentException" is not a recognized entity or identifier. Perhaps you meant CDDCaseLocation, which is a close match. Known entity names: [IndividualReferencesAsu, RmaExcllist, WbSanctionsQuestionnaire, IndividualAsu, SpeDocumentsChecklist, Property, MvSciClientGrpInfo, CddAdditionalDetails, CopiFatcaSubownersInfo, DocumentTemplate, ClientBranchOffices, RoccoDecisionReportPK, CddCaseActorsPK, DdCase, ClientIndividualReln, EcddSciCasePublish, ForeignExchange, CaseDetail, CopiFatcaTaxInfo, NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, AtfFieldsMaster, CddDdrBasedRouting, PreScreening, CddCasePK, MvSciClientOrgInfo, WorkflowState, RoccoRequest, RoccoRequestAuditPK, Risks, MvSciClientAddrInfo, GaProductTransaction, ClientDocuments, Bba, ClientBranch, ClientNorkomPK, ClientISIC, MvSciArmCodeInfo, DDCCountries, Client, GroupNorkom, IndividualClientReln, Ga, OPARuleBases, CDDWorkflowState, SubReasonCodes, MoneyMarket, OpaError, DefenceGoodsStatus, CDDStateMachine, LegalConstitution, ReasonCodes, RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, BbaDocumentsChecklist, ClientOffice, CDDCaseLocation, MvSciEmpInfo, GaDocumentChecklist, TaskBasedReasonCodes, BranchAddress, DgStatusDecisionMatrix, CashEquities, IndividualReferences, EcddSciPublish, CddCaseAudit, BusinessSubSegment, OPACases, ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, CddCaseAuditSubReasons, IndividualClientRelnAsu, TaskBasedReasonCodesPK, CustomerCountryRisk, PreScreeningComment, BbaRiskQuestion, IndividualDocuments, FormButton, Documents, BbaAdditionalDetails, ClientType, GuarantorNorkomPK, AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, GuarantorNorkom, CddCountryRisk, CountryOffices, CopiFatca, CddWorkflowReassignment, Norkom, Deferral, DocumentsUpload, ClientTriggerEvents, CopiFatcaStatus, Gic, BusinessSubSegmentPK, ParentGroupDetails, MvSciClientCoreInfo, RequestMap, CddRiskQuestions, DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, ReviewCases, MvSciArmLocation, DefenceGoodsDecision, ClientIndividualPK, RoccoDecisionReport, IndividualPK, CddTaskAction, PreScreeningRef, ClientGuarantor, Derivative]
        at org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]

Looks like the entity CETAssignmentException is not in the open-jpa list which is used in setting the values using Reflection.

Below is the TRACE log enabled in openjpa.

3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.


and debugged with the source code and found that

private Class<?> classForName(String name, ClassLoader loader) {
        try {
            return Class.forName(name, true, loader);
        } catch (Exception e) {
            if ((_validate & VALIDATE_RUNTIME) != 0) {
                if (_log.isWarnEnabled())
                    _log.warn(_loc.get("bad-discover-class", name, loader));
            } else if (_log.isInfoEnabled())
                _log.info(_loc.get("bad-discover-class", name, loader));
            if (_log.isTraceEnabled())
                _log.trace(e);
        } catch (NoSuchMethodError nsme) {
            if (nsme.getMessage().indexOf(".pc") == -1)
                throw nsme;

            // if the error is about a method that uses the PersistenceCapable
            // 'pc' method prefix, perform some logging and continue. This
            // probably just means that the class is not yet enhanced.
            if ((_validate & VALIDATE_RUNTIME) != 0) {
                if (_log.isWarnEnabled())
                    _log.warn(_loc.get("bad-discover-class", name, loader));
            } else if (_log.isInfoEnabled())
                _log.info(_loc.get("bad-discover-class", name, loader));
            if (_log.isTraceEnabled())
                _log.trace(nsme);
        }
        return null;
    }


Above entities are ignored in enhancement while the class is loaded. So, added below in persistence.xml

<property name="openjpa.RuntimeUnenhancedClasses" value="supported"/> --> in order to enhance dynamically during run time.

Additionally we have also enabled enhancement during build time by
<plugin>
                    <groupId>org.apache.openjpa</groupId>
                    <artifactId>openjpa-maven-plugin</artifactId>
                    <version>${openjpa-maven-plugin.version}</version>

                    <configuration>
                    </configuration>

                    <executions>
                        <execution>
                            <id>enhancer</id>
                            <phase>process-classes</phase>
                            <goals>
                                <goal>enhance</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>


But still facing the same issue.

This issue has become a serious issue. It would be great if the team could help us in resolving the issue.

Thanks.

Regards
Senthil Kumar Sekar


RE: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by "Sekar 2, Senthil Kumar" <Se...@sc.com>.
Hi Mark,
 	(i) The entities are already enlisted in persistence.xml under <class>.
	(ii) Already added <exclude-unlisted-classes> in the persistence.xml

Related 'auto-pickup',
We have Persistence.xml in wb-svc-xxx and entities are available in wb-lib-xxx-ds.

Wb-svc-xxx depends on wb-lib-xxx-ds. 

Wb-svc-xxx --> wb-lib-xxx-ds.

In this case, are you saying, the entities in wb-lib-xxx-ds may not be detected all the time?

As mentioned earlier, some of the entities are not loaded by the container SOMETIMES.
 
Kindly suggest.

Thanks.

Regards
Senthil Kumar Sekar



-----Original Message-----
From: Mark Struberg [mailto:struberg@yahoo.de] 
Sent: Tuesday, May 17, 2016 2:17 PM
To: dev@openjpa.apache.org; users@openjpa.apache.org; Sekar 2, Senthil Kumar
Cc: Loganathan, Senthil
Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Did you enlist the classes in persistence.xml?
Please try to enlist all of them as <class> items and also please add <exclude-unlisted-classes>true</exclude-unlisted-classes>
to your persistence.xml.
Worth a try. Without a sample project we can just try to narrow down the problematic zone.


Reason I'm asking is that the 'auto-pickup' is per JPA spec only working for the 'persistence root' of a project. Means the very same JAR where persistence.xml and all the entities are located in. For example if you have some of the entities in another jar then the entity auto-detection is not portably guaranteed to work anymore.


And I have not much clue how that is supposed to work in OSGi environments like Apache Camel (JBoss Fuse is more or less just a pre-packaged distribution of Apache Camel afaik). 

Fortunately we have a few Camel folks around here, maybe this sounds familiar to one of them?

txs and LieGrue,
strub




> On Monday, 16 May 2016, 9:11, Senthil Kumar Sekar <se...@virtusapolaris.com> wrote:
> > 
> Hi Strub,
>                   We have multiple bundles deployed in which dao is  a 
> separate bundle and the entities are not duplicated.
> 
> xx-ds --> dao bundle
> xx depends on xx-ds
> 
> Thanks.
> 
> Regards
> Senthil Kumar Sekar
> ________________________________________
> 
> From: Loganathan, Senthil <Se...@sc.com>
> Sent: Thursday, May 12, 2016 12:13 PM
> To: Mark Struberg; users@openjpa.apache.org; Senthil Kumar Sekar
> Cc: openjpa-dev
> Subject: RE: Open JPA Entity Loading issue due to failure in Enhancing 
> at run time.
> 
> Hi Strub,
> 
> We have the entities listed in one bundle and is part of single jar file.
> Thanks.
> 
> -----Original Message-----
> From: Mark Struberg [mailto:struberg@yahoo.de]
> Sent: Thursday, May 12, 2016 2:23 PM
> To: users@openjpa.apache.org
> Cc: openjpa-dev; Loganathan, Senthil
> Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing 
> at run time.
> 
> Do you have the same entities in multiple EARs or WARs on the same server?
> I got similar sounding issues on servers which did not properly 
> isolate the JPA Metadata caches between different apps.
> Trying to understand your exact scenario is imo the first step.
> 
> LieGrue,
> strub
> 
> 
>>  Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar
> <se...@virtusapolaris.com>:
>> 
>> 
>> 
>>  Hello Team,
>>                We have been using openjpa - 2.4.0 for our application 
>> data
> access layer which will be deployed in Jboss Fuse 6.2.1.
>>  We have persistence xml where all the entities are declared.
>> 
>>  Very Frequently that we are facing the below issue and had to 
>> restart the
> container multiple to get the issue resolved.
>> 
>>  java.lang.reflect.UndeclaredThrowableException
>>         at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>>         at
> com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuer
> y.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>>                ................
>>  Caused by: java.lang.reflect.UndeclaredThrowableException
>>         at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>>         ... 67 more
>>  Caused by: java.lang.reflect.InvocationTargetException
>>         at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
> orImpl.java:43)[:1.7.0_79]
>>         at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>>         at
> org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandle
> r.invoke(EntityManagerProxyFactory.java:31)
>>         ... 68 more
>>  Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error>
>>  org.apache.openjpa.persistence.ArgumentException: An error occurred  
>> while parsing the query filter "select cETAssignmentException_ from
> CETAssignmentException cETAssignmentException_ where
> lower(cETAssignmentException_.id.officeCode) = ?1 and
> lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: 
> The name "CETAssignmentException" is not a recognized entity or 
> identifier. Perhaps you meant CDDCaseLocation, which is a close match. 
> Known entity names: [IndividualReferencesAsu, RmaExcllist, 
> WbSanctionsQuestionnaire, IndividualAsu, SpeDocumentsChecklist, 
> Property, MvSciClientGrpInfo, CddAdditionalDetails, 
> CopiFatcaSubownersInfo, DocumentTemplate, ClientBranchOffices, 
> RoccoDecisionReportPK, CddCaseActorsPK, DdCase, ClientIndividualReln, 
> EcddSciCasePublish, ForeignExchange, CaseDetail, CopiFatcaTaxInfo, 
> NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, 
> OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, 
> IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, 
> AtfFieldsMaster, CddDdrBasedRouting, PreScreening, CddCasePK, 
> MvSciClientOrgInfo, WorkflowState, RoccoRequest, RoccoRequestAuditPK, 
> Risks, MvSciClientAddrInfo, GaProductTransaction, ClientDocuments, 
> Bba, ClientBranch, ClientNorkomPK, ClientISIC, MvSciArmCodeInfo, 
> DDCCountries, Client, GroupNorkom, IndividualClientReln, Ga, 
> OPARuleBases, CDDWorkflowState, SubReasonCodes, MoneyMarket, OpaError, 
> DefenceGoodsStatus, CDDStateMachine, LegalConstitution, ReasonCodes, 
> RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, 
> CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, 
> BbaDocumentsChecklist, ClientOffice, CDDCaseLocation, MvSciEmpInfo, 
> GaDocumentChecklist, TaskBasedReasonCodes, BranchAddress, 
> DgStatusDecisionMatrix, CashEquities, IndividualReferences, 
> EcddSciPublish, CddCaseAudit, BusinessSubSegment, OPACases, 
> ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, 
> ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, 
> CddCaseAuditSubReasons, IndividualClientRelnAsu, 
> TaskBasedReasonCodesPK, CustomerCountryRisk, PreScreeningComment, 
> BbaRiskQuestion, IndividualDocuments, FormButton, Documents, 
> BbaAdditionalDetails, ClientType, GuarantorNorkomPK, 
> AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, 
> GuarantorNorkom, CddCountryRisk, CountryOffices, CopiFatca, 
> CddWorkflowReassignment, Norkom, Deferral, DocumentsUpload, 
> ClientTriggerEvents, CopiFatcaStatus, Gic, BusinessSubSegmentPK, 
> ParentGroupDetails, MvSciClientCoreInfo, RequestMap, CddRiskQuestions, 
> DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, 
> ReviewCases, MvSciArmLocation, DefenceGoodsDecision, 
> ClientIndividualPK, RoccoDecisionReport, IndividualPK, CddTaskAction, 
> PreScreeningRef, ClientGuarantor, Derivative]
>>         at
> org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseExceptio
> n(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>>         at
> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(
> JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>>         at
>>  
>> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMeta
>> D  ata(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
>> 
>>  Looks like the entity CETAssignmentException is not in the open-jpa 
>> list
> which is used in setting the values using Reflection.
>> 
>>  Below is the TRACE log enabled in openjpa.
>> 
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in 
> the openjpa.MetaDataFactory configuration property could not be loaded 
> by wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed 
> in the openjpa.MetaDataFactory configuration property could not be 
> loaded by wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class
> "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed 
> in the openjpa.MetaDataFactory configuration property could not be 
> loaded by wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class
> "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in 
> the openjpa.MetaDataFactory configuration property could not be loaded 
> by wb-svc-cdd [970]; ignoring.
>> 
>> 
>>  and debugged with the source code and found that
>> 
>>  private Class<?> classForName(String name, ClassLoader loader) {
>>         try {
>>             return Class.forName(name, true, loader);
>>         } catch (Exception e) {
>>             if ((_validate & VALIDATE_RUNTIME) != 0) {
>>                 if (_log.isWarnEnabled())
>>                     _log.warn(_loc.get("bad-discover-class", name,
> loader));
>>             } else if (_log.isInfoEnabled())
>>                 _log.info(_loc.get("bad-discover-class", name,
> loader));
>>             if (_log.isTraceEnabled())
>>                 _log.trace(e);
>>         } catch (NoSuchMethodError nsme) {
>>             if (nsme.getMessage().indexOf(".pc") == -1)
>>                 throw nsme;
>> 
>>             // if the error is about a method that uses the
> PersistenceCapable
>>             // 'pc' method prefix, perform some logging and
> continue. This
>>             // probably just means that the class is not yet enhanced.
>>             if ((_validate & VALIDATE_RUNTIME) != 0) {
>>                 if (_log.isWarnEnabled())
>>                     _log.warn(_loc.get("bad-discover-class", name,
> loader));
>>             } else if (_log.isInfoEnabled())
>>                 _log.info(_loc.get("bad-discover-class", name,
> loader));
>>             if (_log.isTraceEnabled())
>>                 _log.trace(nsme);
>>         }
>>         return null;
>>     }
>> 
>> 
>>  Above entities are ignored in enhancement while the class is loaded.
>>  So, added below in persistence.xml
>> 
>>  <property name="openjpa.RuntimeUnenhancedClasses" 
> value="supported"/> --> in order to enhance dynamically during run 
> time.
>> 
>>  Additionally we have also enabled enhancement during build time by  
>> <plugin>
>>                     <groupId>org.apache.openjpa</groupId>
>>                     
> <artifactId>openjpa-maven-plugin</artifactId>
>>                     
> <version>${openjpa-maven-plugin.version}</version>
>> 
>>                     <configuration>
>>                     </configuration>
>> 
>>                     <executions>
>>                         <execution>
>>                             <id>enhancer</id>
>>                             <phase>process-classes</phase>
>>                             <goals>
>>                                 <goal>enhance</goal>
>>                             </goals>
>>                         </execution>
>>                     </executions>
>>                 </plugin>
>> 
>> 
>>  But still facing the same issue.
>> 
>>  This issue has become a serious issue. It would be great if the team 
>> could
> help us in resolving the issue.
>> 
>>  Thanks.
>> 
>>  Regards
>>  Senthil Kumar Sekar
>> 
> 
> This email and any attachments are confidential and may also be 
> privileged. If you are not the intended recipient, please delete all 
> copies and notify the sender immediately. You may wish to refer to the 
> incorporation details of Standard Chartered PLC, Standard Chartered 
> Bank and their subsidiaries at 
> https://www.sc.com/en/incorporation-details.html
> 

This email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please delete all copies and notify the sender immediately. You may wish to refer to the incorporation details of Standard Chartered PLC, Standard Chartered Bank and their subsidiaries at https://www.sc.com/en/incorporation-details.html

RE: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by "Sekar 2, Senthil Kumar" <Se...@sc.com>.
Hi Mark,
 	(i) The entities are already enlisted in persistence.xml under <class>.
	(ii) Already added <exclude-unlisted-classes> in the persistence.xml

Related 'auto-pickup',
We have Persistence.xml in wb-svc-xxx and entities are available in wb-lib-xxx-ds.

Wb-svc-xxx depends on wb-lib-xxx-ds. 

Wb-svc-xxx --> wb-lib-xxx-ds.

In this case, are you saying, the entities in wb-lib-xxx-ds may not be detected all the time?

As mentioned earlier, some of the entities are not loaded by the container SOMETIMES.
 
Kindly suggest.

Thanks.

Regards
Senthil Kumar Sekar



-----Original Message-----
From: Mark Struberg [mailto:struberg@yahoo.de] 
Sent: Tuesday, May 17, 2016 2:17 PM
To: dev@openjpa.apache.org; users@openjpa.apache.org; Sekar 2, Senthil Kumar
Cc: Loganathan, Senthil
Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Did you enlist the classes in persistence.xml?
Please try to enlist all of them as <class> items and also please add <exclude-unlisted-classes>true</exclude-unlisted-classes>
to your persistence.xml.
Worth a try. Without a sample project we can just try to narrow down the problematic zone.


Reason I'm asking is that the 'auto-pickup' is per JPA spec only working for the 'persistence root' of a project. Means the very same JAR where persistence.xml and all the entities are located in. For example if you have some of the entities in another jar then the entity auto-detection is not portably guaranteed to work anymore.


And I have not much clue how that is supposed to work in OSGi environments like Apache Camel (JBoss Fuse is more or less just a pre-packaged distribution of Apache Camel afaik). 

Fortunately we have a few Camel folks around here, maybe this sounds familiar to one of them?

txs and LieGrue,
strub




> On Monday, 16 May 2016, 9:11, Senthil Kumar Sekar <se...@virtusapolaris.com> wrote:
> > 
> Hi Strub,
>                   We have multiple bundles deployed in which dao is  a 
> separate bundle and the entities are not duplicated.
> 
> xx-ds --> dao bundle
> xx depends on xx-ds
> 
> Thanks.
> 
> Regards
> Senthil Kumar Sekar
> ________________________________________
> 
> From: Loganathan, Senthil <Se...@sc.com>
> Sent: Thursday, May 12, 2016 12:13 PM
> To: Mark Struberg; users@openjpa.apache.org; Senthil Kumar Sekar
> Cc: openjpa-dev
> Subject: RE: Open JPA Entity Loading issue due to failure in Enhancing 
> at run time.
> 
> Hi Strub,
> 
> We have the entities listed in one bundle and is part of single jar file.
> Thanks.
> 
> -----Original Message-----
> From: Mark Struberg [mailto:struberg@yahoo.de]
> Sent: Thursday, May 12, 2016 2:23 PM
> To: users@openjpa.apache.org
> Cc: openjpa-dev; Loganathan, Senthil
> Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing 
> at run time.
> 
> Do you have the same entities in multiple EARs or WARs on the same server?
> I got similar sounding issues on servers which did not properly 
> isolate the JPA Metadata caches between different apps.
> Trying to understand your exact scenario is imo the first step.
> 
> LieGrue,
> strub
> 
> 
>>  Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar
> <se...@virtusapolaris.com>:
>> 
>> 
>> 
>>  Hello Team,
>>                We have been using openjpa - 2.4.0 for our application 
>> data
> access layer which will be deployed in Jboss Fuse 6.2.1.
>>  We have persistence xml where all the entities are declared.
>> 
>>  Very Frequently that we are facing the below issue and had to 
>> restart the
> container multiple to get the issue resolved.
>> 
>>  java.lang.reflect.UndeclaredThrowableException
>>         at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>>         at
> com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuer
> y.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>>                ................
>>  Caused by: java.lang.reflect.UndeclaredThrowableException
>>         at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>>         ... 67 more
>>  Caused by: java.lang.reflect.InvocationTargetException
>>         at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
> orImpl.java:43)[:1.7.0_79]
>>         at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>>         at
> org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandle
> r.invoke(EntityManagerProxyFactory.java:31)
>>         ... 68 more
>>  Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error>
>>  org.apache.openjpa.persistence.ArgumentException: An error occurred  
>> while parsing the query filter "select cETAssignmentException_ from
> CETAssignmentException cETAssignmentException_ where
> lower(cETAssignmentException_.id.officeCode) = ?1 and
> lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: 
> The name "CETAssignmentException" is not a recognized entity or 
> identifier. Perhaps you meant CDDCaseLocation, which is a close match. 
> Known entity names: [IndividualReferencesAsu, RmaExcllist, 
> WbSanctionsQuestionnaire, IndividualAsu, SpeDocumentsChecklist, 
> Property, MvSciClientGrpInfo, CddAdditionalDetails, 
> CopiFatcaSubownersInfo, DocumentTemplate, ClientBranchOffices, 
> RoccoDecisionReportPK, CddCaseActorsPK, DdCase, ClientIndividualReln, 
> EcddSciCasePublish, ForeignExchange, CaseDetail, CopiFatcaTaxInfo, 
> NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, 
> OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, 
> IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, 
> AtfFieldsMaster, CddDdrBasedRouting, PreScreening, CddCasePK, 
> MvSciClientOrgInfo, WorkflowState, RoccoRequest, RoccoRequestAuditPK, 
> Risks, MvSciClientAddrInfo, GaProductTransaction, ClientDocuments, 
> Bba, ClientBranch, ClientNorkomPK, ClientISIC, MvSciArmCodeInfo, 
> DDCCountries, Client, GroupNorkom, IndividualClientReln, Ga, 
> OPARuleBases, CDDWorkflowState, SubReasonCodes, MoneyMarket, OpaError, 
> DefenceGoodsStatus, CDDStateMachine, LegalConstitution, ReasonCodes, 
> RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, 
> CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, 
> BbaDocumentsChecklist, ClientOffice, CDDCaseLocation, MvSciEmpInfo, 
> GaDocumentChecklist, TaskBasedReasonCodes, BranchAddress, 
> DgStatusDecisionMatrix, CashEquities, IndividualReferences, 
> EcddSciPublish, CddCaseAudit, BusinessSubSegment, OPACases, 
> ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, 
> ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, 
> CddCaseAuditSubReasons, IndividualClientRelnAsu, 
> TaskBasedReasonCodesPK, CustomerCountryRisk, PreScreeningComment, 
> BbaRiskQuestion, IndividualDocuments, FormButton, Documents, 
> BbaAdditionalDetails, ClientType, GuarantorNorkomPK, 
> AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, 
> GuarantorNorkom, CddCountryRisk, CountryOffices, CopiFatca, 
> CddWorkflowReassignment, Norkom, Deferral, DocumentsUpload, 
> ClientTriggerEvents, CopiFatcaStatus, Gic, BusinessSubSegmentPK, 
> ParentGroupDetails, MvSciClientCoreInfo, RequestMap, CddRiskQuestions, 
> DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, 
> ReviewCases, MvSciArmLocation, DefenceGoodsDecision, 
> ClientIndividualPK, RoccoDecisionReport, IndividualPK, CddTaskAction, 
> PreScreeningRef, ClientGuarantor, Derivative]
>>         at
> org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseExceptio
> n(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>>         at
> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(
> JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>>         at
>>  
>> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMeta
>> D  ata(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
>> 
>>  Looks like the entity CETAssignmentException is not in the open-jpa 
>> list
> which is used in setting the values using Reflection.
>> 
>>  Below is the TRACE log enabled in openjpa.
>> 
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in 
> the openjpa.MetaDataFactory configuration property could not be loaded 
> by wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed 
> in the openjpa.MetaDataFactory configuration property could not be 
> loaded by wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class
> "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed 
> in the openjpa.MetaDataFactory configuration property could not be 
> loaded by wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class
> "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in 
> the openjpa.MetaDataFactory configuration property could not be loaded 
> by wb-svc-cdd [970]; ignoring.
>> 
>> 
>>  and debugged with the source code and found that
>> 
>>  private Class<?> classForName(String name, ClassLoader loader) {
>>         try {
>>             return Class.forName(name, true, loader);
>>         } catch (Exception e) {
>>             if ((_validate & VALIDATE_RUNTIME) != 0) {
>>                 if (_log.isWarnEnabled())
>>                     _log.warn(_loc.get("bad-discover-class", name,
> loader));
>>             } else if (_log.isInfoEnabled())
>>                 _log.info(_loc.get("bad-discover-class", name,
> loader));
>>             if (_log.isTraceEnabled())
>>                 _log.trace(e);
>>         } catch (NoSuchMethodError nsme) {
>>             if (nsme.getMessage().indexOf(".pc") == -1)
>>                 throw nsme;
>> 
>>             // if the error is about a method that uses the
> PersistenceCapable
>>             // 'pc' method prefix, perform some logging and
> continue. This
>>             // probably just means that the class is not yet enhanced.
>>             if ((_validate & VALIDATE_RUNTIME) != 0) {
>>                 if (_log.isWarnEnabled())
>>                     _log.warn(_loc.get("bad-discover-class", name,
> loader));
>>             } else if (_log.isInfoEnabled())
>>                 _log.info(_loc.get("bad-discover-class", name,
> loader));
>>             if (_log.isTraceEnabled())
>>                 _log.trace(nsme);
>>         }
>>         return null;
>>     }
>> 
>> 
>>  Above entities are ignored in enhancement while the class is loaded.
>>  So, added below in persistence.xml
>> 
>>  <property name="openjpa.RuntimeUnenhancedClasses" 
> value="supported"/> --> in order to enhance dynamically during run 
> time.
>> 
>>  Additionally we have also enabled enhancement during build time by  
>> <plugin>
>>                     <groupId>org.apache.openjpa</groupId>
>>                     
> <artifactId>openjpa-maven-plugin</artifactId>
>>                     
> <version>${openjpa-maven-plugin.version}</version>
>> 
>>                     <configuration>
>>                     </configuration>
>> 
>>                     <executions>
>>                         <execution>
>>                             <id>enhancer</id>
>>                             <phase>process-classes</phase>
>>                             <goals>
>>                                 <goal>enhance</goal>
>>                             </goals>
>>                         </execution>
>>                     </executions>
>>                 </plugin>
>> 
>> 
>>  But still facing the same issue.
>> 
>>  This issue has become a serious issue. It would be great if the team 
>> could
> help us in resolving the issue.
>> 
>>  Thanks.
>> 
>>  Regards
>>  Senthil Kumar Sekar
>> 
> 
> This email and any attachments are confidential and may also be 
> privileged. If you are not the intended recipient, please delete all 
> copies and notify the sender immediately. You may wish to refer to the 
> incorporation details of Standard Chartered PLC, Standard Chartered 
> Bank and their subsidiaries at 
> https://www.sc.com/en/incorporation-details.html
> 

This email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please delete all copies and notify the sender immediately. You may wish to refer to the incorporation details of Standard Chartered PLC, Standard Chartered Bank and their subsidiaries at https://www.sc.com/en/incorporation-details.html

Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by Mark Struberg <st...@yahoo.de.INVALID>.
Did you enlist the classes in persistence.xml?
Please try to enlist all of them as <class> items and also please add
<exclude-unlisted-classes>true</exclude-unlisted-classes>
to your persistence.xml.
Worth a try. Without a sample project we can just try to narrow down the problematic zone.


Reason I'm asking is that the 'auto-pickup' is per JPA spec only working for the 'persistence root' of a project. Means the very same JAR where persistence.xml and all the entities are located in. For example if you have some of the entities in another jar then the entity auto-detection is not portably guaranteed to work anymore.


And I have not much clue how that is supposed to work in OSGi environments like Apache Camel (JBoss Fuse is more or less just a pre-packaged distribution of Apache Camel afaik). 

Fortunately we have a few Camel folks around here, maybe this sounds familiar to one of them?

txs and LieGrue,
strub




> On Monday, 16 May 2016, 9:11, Senthil Kumar Sekar <se...@virtusapolaris.com> wrote:
> > 
> Hi Strub,
>                   We have multiple bundles deployed in which dao is  a separate 
> bundle and the entities are not duplicated.
> 
> xx-ds --> dao bundle
> xx depends on xx-ds
> 
> Thanks.
> 
> Regards
> Senthil Kumar Sekar
> ________________________________________
> 
> From: Loganathan, Senthil <Se...@sc.com>
> Sent: Thursday, May 12, 2016 12:13 PM
> To: Mark Struberg; users@openjpa.apache.org; Senthil Kumar Sekar
> Cc: openjpa-dev
> Subject: RE: Open JPA Entity Loading issue due to failure in Enhancing at run 
> time.
> 
> Hi Strub,
> 
> We have the entities listed in one bundle and is part of single jar file.
> Thanks.
> 
> -----Original Message-----
> From: Mark Struberg [mailto:struberg@yahoo.de]
> Sent: Thursday, May 12, 2016 2:23 PM
> To: users@openjpa.apache.org
> Cc: openjpa-dev; Loganathan, Senthil
> Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing at run 
> time.
> 
> Do you have the same entities in multiple EARs or WARs on the same server?
> I got similar sounding issues on servers which did not properly isolate the JPA 
> Metadata caches between different apps.
> Trying to understand your exact scenario is imo the first step.
> 
> LieGrue,
> strub
> 
> 
>>  Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar 
> <se...@virtusapolaris.com>:
>> 
>> 
>> 
>>  Hello Team,
>>                We have been using openjpa - 2.4.0 for our application data 
> access layer which will be deployed in Jboss Fuse 6.2.1.
>>  We have persistence xml where all the entities are declared.
>> 
>>  Very Frequently that we are facing the below issue and had to restart the 
> container multiple to get the issue resolved.
>> 
>>  java.lang.reflect.UndeclaredThrowableException
>>         at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>>         at 
> com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>>                ................
>>  Caused by: java.lang.reflect.UndeclaredThrowableException
>>         at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>>         ... 67 more
>>  Caused by: java.lang.reflect.InvocationTargetException
>>         at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79]
>>         at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>>         at 
> org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandler.invoke(EntityManagerProxyFactory.java:31)
>>         ... 68 more
>>  Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error>
>>  org.apache.openjpa.persistence.ArgumentException: An error occurred
>>  while parsing the query filter "select cETAssignmentException_ from 
> CETAssignmentException cETAssignmentException_ where 
> lower(cETAssignmentException_.id.officeCode) = ?1 and 
> lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: 
> The name "CETAssignmentException" is not a recognized entity or 
> identifier. Perhaps you meant CDDCaseLocation, which is a close match. Known 
> entity names: [IndividualReferencesAsu, RmaExcllist, WbSanctionsQuestionnaire, 
> IndividualAsu, SpeDocumentsChecklist, Property, MvSciClientGrpInfo, 
> CddAdditionalDetails, CopiFatcaSubownersInfo, DocumentTemplate, 
> ClientBranchOffices, RoccoDecisionReportPK, CddCaseActorsPK, DdCase, 
> ClientIndividualReln, EcddSciCasePublish, ForeignExchange, CaseDetail, 
> CopiFatcaTaxInfo, NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, 
> OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, 
> IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, AtfFieldsMaster, 
> CddDdrBasedRouting, PreScreening, CddCasePK, MvSciClientOrgInfo, WorkflowState, 
> RoccoRequest, RoccoRequestAuditPK, Risks, MvSciClientAddrInfo, 
> GaProductTransaction, ClientDocuments, Bba, ClientBranch, ClientNorkomPK, 
> ClientISIC, MvSciArmCodeInfo, DDCCountries, Client, GroupNorkom, 
> IndividualClientReln, Ga, OPARuleBases, CDDWorkflowState, SubReasonCodes, 
> MoneyMarket, OpaError, DefenceGoodsStatus, CDDStateMachine, LegalConstitution, 
> ReasonCodes, RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, 
> CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, BbaDocumentsChecklist, 
> ClientOffice, CDDCaseLocation, MvSciEmpInfo, GaDocumentChecklist, 
> TaskBasedReasonCodes, BranchAddress, DgStatusDecisionMatrix, CashEquities, 
> IndividualReferences, EcddSciPublish, CddCaseAudit, BusinessSubSegment, 
> OPACases, ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, 
> ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, 
> CddCaseAuditSubReasons, IndividualClientRelnAsu, TaskBasedReasonCodesPK, 
> CustomerCountryRisk, PreScreeningComment, BbaRiskQuestion, IndividualDocuments, 
> FormButton, Documents, BbaAdditionalDetails, ClientType, GuarantorNorkomPK, 
> AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, GuarantorNorkom, 
> CddCountryRisk, CountryOffices, CopiFatca, CddWorkflowReassignment, Norkom, 
> Deferral, DocumentsUpload, ClientTriggerEvents, CopiFatcaStatus, Gic, 
> BusinessSubSegmentPK, ParentGroupDetails, MvSciClientCoreInfo, RequestMap, 
> CddRiskQuestions, DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, 
> ReviewCases, MvSciArmLocation, DefenceGoodsDecision, ClientIndividualPK, 
> RoccoDecisionReport, IndividualPK, CddTaskAction, PreScreeningRef, 
> ClientGuarantor, Derivative]
>>         at 
> org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>>         at 
> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>>         at
>>  org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaD
>>  ata(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
>> 
>>  Looks like the entity CETAssignmentException is not in the open-jpa list 
> which is used in setting the values using Reflection.
>> 
>>  Below is the TRACE log enabled in openjpa.
>> 
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in 
> the openjpa.MetaDataFactory configuration property could not be loaded by 
> wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed 
> in the openjpa.MetaDataFactory configuration property could not be loaded by 
> wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class 
> "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed 
> in the openjpa.MetaDataFactory configuration property could not be loaded by 
> wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class 
> "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in 
> the openjpa.MetaDataFactory configuration property could not be loaded by 
> wb-svc-cdd [970]; ignoring.
>> 
>> 
>>  and debugged with the source code and found that
>> 
>>  private Class<?> classForName(String name, ClassLoader loader) {
>>         try {
>>             return Class.forName(name, true, loader);
>>         } catch (Exception e) {
>>             if ((_validate & VALIDATE_RUNTIME) != 0) {
>>                 if (_log.isWarnEnabled())
>>                     _log.warn(_loc.get("bad-discover-class", name, 
> loader));
>>             } else if (_log.isInfoEnabled())
>>                 _log.info(_loc.get("bad-discover-class", name, 
> loader));
>>             if (_log.isTraceEnabled())
>>                 _log.trace(e);
>>         } catch (NoSuchMethodError nsme) {
>>             if (nsme.getMessage().indexOf(".pc") == -1)
>>                 throw nsme;
>> 
>>             // if the error is about a method that uses the 
> PersistenceCapable
>>             // 'pc' method prefix, perform some logging and 
> continue. This
>>             // probably just means that the class is not yet enhanced.
>>             if ((_validate & VALIDATE_RUNTIME) != 0) {
>>                 if (_log.isWarnEnabled())
>>                     _log.warn(_loc.get("bad-discover-class", name, 
> loader));
>>             } else if (_log.isInfoEnabled())
>>                 _log.info(_loc.get("bad-discover-class", name, 
> loader));
>>             if (_log.isTraceEnabled())
>>                 _log.trace(nsme);
>>         }
>>         return null;
>>     }
>> 
>> 
>>  Above entities are ignored in enhancement while the class is loaded.
>>  So, added below in persistence.xml
>> 
>>  <property name="openjpa.RuntimeUnenhancedClasses" 
> value="supported"/> --> in order to enhance dynamically during 
> run time.
>> 
>>  Additionally we have also enabled enhancement during build time by
>>  <plugin>
>>                     <groupId>org.apache.openjpa</groupId>
>>                     
> <artifactId>openjpa-maven-plugin</artifactId>
>>                     
> <version>${openjpa-maven-plugin.version}</version>
>> 
>>                     <configuration>
>>                     </configuration>
>> 
>>                     <executions>
>>                         <execution>
>>                             <id>enhancer</id>
>>                             <phase>process-classes</phase>
>>                             <goals>
>>                                 <goal>enhance</goal>
>>                             </goals>
>>                         </execution>
>>                     </executions>
>>                 </plugin>
>> 
>> 
>>  But still facing the same issue.
>> 
>>  This issue has become a serious issue. It would be great if the team could 
> help us in resolving the issue.
>> 
>>  Thanks.
>> 
>>  Regards
>>  Senthil Kumar Sekar
>> 
> 
> This email and any attachments are confidential and may also be privileged. If 
> you are not the intended recipient, please delete all copies and notify the 
> sender immediately. You may wish to refer to the incorporation details of 
> Standard Chartered PLC, Standard Chartered Bank and their subsidiaries at 
> https://www.sc.com/en/incorporation-details.html
> 

Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by Mark Struberg <st...@yahoo.de.INVALID>.
Did you enlist the classes in persistence.xml?
Please try to enlist all of them as <class> items and also please add
<exclude-unlisted-classes>true</exclude-unlisted-classes>
to your persistence.xml.
Worth a try. Without a sample project we can just try to narrow down the problematic zone.


Reason I'm asking is that the 'auto-pickup' is per JPA spec only working for the 'persistence root' of a project. Means the very same JAR where persistence.xml and all the entities are located in. For example if you have some of the entities in another jar then the entity auto-detection is not portably guaranteed to work anymore.


And I have not much clue how that is supposed to work in OSGi environments like Apache Camel (JBoss Fuse is more or less just a pre-packaged distribution of Apache Camel afaik). 

Fortunately we have a few Camel folks around here, maybe this sounds familiar to one of them?

txs and LieGrue,
strub




> On Monday, 16 May 2016, 9:11, Senthil Kumar Sekar <se...@virtusapolaris.com> wrote:
> > 
> Hi Strub,
>                   We have multiple bundles deployed in which dao is  a separate 
> bundle and the entities are not duplicated.
> 
> xx-ds --> dao bundle
> xx depends on xx-ds
> 
> Thanks.
> 
> Regards
> Senthil Kumar Sekar
> ________________________________________
> 
> From: Loganathan, Senthil <Se...@sc.com>
> Sent: Thursday, May 12, 2016 12:13 PM
> To: Mark Struberg; users@openjpa.apache.org; Senthil Kumar Sekar
> Cc: openjpa-dev
> Subject: RE: Open JPA Entity Loading issue due to failure in Enhancing at run 
> time.
> 
> Hi Strub,
> 
> We have the entities listed in one bundle and is part of single jar file.
> Thanks.
> 
> -----Original Message-----
> From: Mark Struberg [mailto:struberg@yahoo.de]
> Sent: Thursday, May 12, 2016 2:23 PM
> To: users@openjpa.apache.org
> Cc: openjpa-dev; Loganathan, Senthil
> Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing at run 
> time.
> 
> Do you have the same entities in multiple EARs or WARs on the same server?
> I got similar sounding issues on servers which did not properly isolate the JPA 
> Metadata caches between different apps.
> Trying to understand your exact scenario is imo the first step.
> 
> LieGrue,
> strub
> 
> 
>>  Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar 
> <se...@virtusapolaris.com>:
>> 
>> 
>> 
>>  Hello Team,
>>                We have been using openjpa - 2.4.0 for our application data 
> access layer which will be deployed in Jboss Fuse 6.2.1.
>>  We have persistence xml where all the entities are declared.
>> 
>>  Very Frequently that we are facing the below issue and had to restart the 
> container multiple to get the issue resolved.
>> 
>>  java.lang.reflect.UndeclaredThrowableException
>>         at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>>         at 
> com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>>                ................
>>  Caused by: java.lang.reflect.UndeclaredThrowableException
>>         at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>>         ... 67 more
>>  Caused by: java.lang.reflect.InvocationTargetException
>>         at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79]
>>         at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>>         at 
> org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandler.invoke(EntityManagerProxyFactory.java:31)
>>         ... 68 more
>>  Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error>
>>  org.apache.openjpa.persistence.ArgumentException: An error occurred
>>  while parsing the query filter "select cETAssignmentException_ from 
> CETAssignmentException cETAssignmentException_ where 
> lower(cETAssignmentException_.id.officeCode) = ?1 and 
> lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: 
> The name "CETAssignmentException" is not a recognized entity or 
> identifier. Perhaps you meant CDDCaseLocation, which is a close match. Known 
> entity names: [IndividualReferencesAsu, RmaExcllist, WbSanctionsQuestionnaire, 
> IndividualAsu, SpeDocumentsChecklist, Property, MvSciClientGrpInfo, 
> CddAdditionalDetails, CopiFatcaSubownersInfo, DocumentTemplate, 
> ClientBranchOffices, RoccoDecisionReportPK, CddCaseActorsPK, DdCase, 
> ClientIndividualReln, EcddSciCasePublish, ForeignExchange, CaseDetail, 
> CopiFatcaTaxInfo, NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, 
> OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, 
> IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, AtfFieldsMaster, 
> CddDdrBasedRouting, PreScreening, CddCasePK, MvSciClientOrgInfo, WorkflowState, 
> RoccoRequest, RoccoRequestAuditPK, Risks, MvSciClientAddrInfo, 
> GaProductTransaction, ClientDocuments, Bba, ClientBranch, ClientNorkomPK, 
> ClientISIC, MvSciArmCodeInfo, DDCCountries, Client, GroupNorkom, 
> IndividualClientReln, Ga, OPARuleBases, CDDWorkflowState, SubReasonCodes, 
> MoneyMarket, OpaError, DefenceGoodsStatus, CDDStateMachine, LegalConstitution, 
> ReasonCodes, RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, 
> CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, BbaDocumentsChecklist, 
> ClientOffice, CDDCaseLocation, MvSciEmpInfo, GaDocumentChecklist, 
> TaskBasedReasonCodes, BranchAddress, DgStatusDecisionMatrix, CashEquities, 
> IndividualReferences, EcddSciPublish, CddCaseAudit, BusinessSubSegment, 
> OPACases, ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, 
> ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, 
> CddCaseAuditSubReasons, IndividualClientRelnAsu, TaskBasedReasonCodesPK, 
> CustomerCountryRisk, PreScreeningComment, BbaRiskQuestion, IndividualDocuments, 
> FormButton, Documents, BbaAdditionalDetails, ClientType, GuarantorNorkomPK, 
> AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, GuarantorNorkom, 
> CddCountryRisk, CountryOffices, CopiFatca, CddWorkflowReassignment, Norkom, 
> Deferral, DocumentsUpload, ClientTriggerEvents, CopiFatcaStatus, Gic, 
> BusinessSubSegmentPK, ParentGroupDetails, MvSciClientCoreInfo, RequestMap, 
> CddRiskQuestions, DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, 
> ReviewCases, MvSciArmLocation, DefenceGoodsDecision, ClientIndividualPK, 
> RoccoDecisionReport, IndividualPK, CddTaskAction, PreScreeningRef, 
> ClientGuarantor, Derivative]
>>         at 
> org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>>         at 
> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>>         at
>>  org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaD
>>  ata(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
>> 
>>  Looks like the entity CETAssignmentException is not in the open-jpa list 
> which is used in setting the values using Reflection.
>> 
>>  Below is the TRACE log enabled in openjpa.
>> 
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in 
> the openjpa.MetaDataFactory configuration property could not be loaded by 
> wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed 
> in the openjpa.MetaDataFactory configuration property could not be loaded by 
> wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class 
> "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed 
> in the openjpa.MetaDataFactory configuration property could not be loaded by 
> wb-svc-cdd [970]; ignoring.
>>  3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData 
> - The class 
> "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in 
> the openjpa.MetaDataFactory configuration property could not be loaded by 
> wb-svc-cdd [970]; ignoring.
>> 
>> 
>>  and debugged with the source code and found that
>> 
>>  private Class<?> classForName(String name, ClassLoader loader) {
>>         try {
>>             return Class.forName(name, true, loader);
>>         } catch (Exception e) {
>>             if ((_validate & VALIDATE_RUNTIME) != 0) {
>>                 if (_log.isWarnEnabled())
>>                     _log.warn(_loc.get("bad-discover-class", name, 
> loader));
>>             } else if (_log.isInfoEnabled())
>>                 _log.info(_loc.get("bad-discover-class", name, 
> loader));
>>             if (_log.isTraceEnabled())
>>                 _log.trace(e);
>>         } catch (NoSuchMethodError nsme) {
>>             if (nsme.getMessage().indexOf(".pc") == -1)
>>                 throw nsme;
>> 
>>             // if the error is about a method that uses the 
> PersistenceCapable
>>             // 'pc' method prefix, perform some logging and 
> continue. This
>>             // probably just means that the class is not yet enhanced.
>>             if ((_validate & VALIDATE_RUNTIME) != 0) {
>>                 if (_log.isWarnEnabled())
>>                     _log.warn(_loc.get("bad-discover-class", name, 
> loader));
>>             } else if (_log.isInfoEnabled())
>>                 _log.info(_loc.get("bad-discover-class", name, 
> loader));
>>             if (_log.isTraceEnabled())
>>                 _log.trace(nsme);
>>         }
>>         return null;
>>     }
>> 
>> 
>>  Above entities are ignored in enhancement while the class is loaded.
>>  So, added below in persistence.xml
>> 
>>  <property name="openjpa.RuntimeUnenhancedClasses" 
> value="supported"/> --> in order to enhance dynamically during 
> run time.
>> 
>>  Additionally we have also enabled enhancement during build time by
>>  <plugin>
>>                     <groupId>org.apache.openjpa</groupId>
>>                     
> <artifactId>openjpa-maven-plugin</artifactId>
>>                     
> <version>${openjpa-maven-plugin.version}</version>
>> 
>>                     <configuration>
>>                     </configuration>
>> 
>>                     <executions>
>>                         <execution>
>>                             <id>enhancer</id>
>>                             <phase>process-classes</phase>
>>                             <goals>
>>                                 <goal>enhance</goal>
>>                             </goals>
>>                         </execution>
>>                     </executions>
>>                 </plugin>
>> 
>> 
>>  But still facing the same issue.
>> 
>>  This issue has become a serious issue. It would be great if the team could 
> help us in resolving the issue.
>> 
>>  Thanks.
>> 
>>  Regards
>>  Senthil Kumar Sekar
>> 
> 
> This email and any attachments are confidential and may also be privileged. If 
> you are not the intended recipient, please delete all copies and notify the 
> sender immediately. You may wish to refer to the incorporation details of 
> Standard Chartered PLC, Standard Chartered Bank and their subsidiaries at 
> https://www.sc.com/en/incorporation-details.html
> 

Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by Senthil Kumar Sekar <se...@virtusapolaris.com>.
Hi Strub,
                  We have multiple bundles deployed in which dao is  a separate bundle and the entities are not duplicated.

xx-ds --> dao bundle
xx depends on xx-ds

Thanks.

Regards
Senthil Kumar Sekar
________________________________________
From: Loganathan, Senthil <Se...@sc.com>
Sent: Thursday, May 12, 2016 12:13 PM
To: Mark Struberg; users@openjpa.apache.org; Senthil Kumar Sekar
Cc: openjpa-dev
Subject: RE: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Hi Strub,

We have the entities listed in one bundle and is part of single jar file.
Thanks.

-----Original Message-----
From: Mark Struberg [mailto:struberg@yahoo.de]
Sent: Thursday, May 12, 2016 2:23 PM
To: users@openjpa.apache.org
Cc: openjpa-dev; Loganathan, Senthil
Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Do you have the same entities in multiple EARs or WARs on the same server?
I got similar sounding issues on servers which did not properly isolate the JPA Metadata caches between different apps.
Trying to understand your exact scenario is imo the first step.

LieGrue,
strub


> Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar <se...@virtusapolaris.com>:
>
>
>
> Hello Team,
>               We have been using openjpa - 2.4.0 for our application data access layer which will be deployed in Jboss Fuse 6.2.1.
> We have persistence xml where all the entities are declared.
>
> Very Frequently that we are facing the below issue and had to restart the container multiple to get the issue resolved.
>
> java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>        at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>               ................
> Caused by: java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>        ... 67 more
> Caused by: java.lang.reflect.InvocationTargetException
>        at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79]
>        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>        at org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandler.invoke(EntityManagerProxyFactory.java:31)
>        ... 68 more
> Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: An error occurred
> while parsing the query filter "select cETAssignmentException_ from CETAssignmentException cETAssignmentException_ where lower(cETAssignmentException_.id.officeCode) = ?1 and lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: The name "CETAssignmentException" is not a recognized entity or identifier. Perhaps you meant CDDCaseLocation, which is a close match. Known entity names: [IndividualReferencesAsu, RmaExcllist, WbSanctionsQuestionnaire, IndividualAsu, SpeDocumentsChecklist, Property, MvSciClientGrpInfo, CddAdditionalDetails, CopiFatcaSubownersInfo, DocumentTemplate, ClientBranchOffices, RoccoDecisionReportPK, CddCaseActorsPK, DdCase, ClientIndividualReln, EcddSciCasePublish, ForeignExchange, CaseDetail, CopiFatcaTaxInfo, NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, AtfFieldsMaster, CddDdrBasedRouting, PreScreening, CddCasePK, MvSciClientOrgInfo, WorkflowState, RoccoRequest, RoccoRequestAuditPK, Risks, MvSciClientAddrInfo, GaProductTransaction, ClientDocuments, Bba, ClientBranch, ClientNorkomPK, ClientISIC, MvSciArmCodeInfo, DDCCountries, Client, GroupNorkom, IndividualClientReln, Ga, OPARuleBases, CDDWorkflowState, SubReasonCodes, MoneyMarket, OpaError, DefenceGoodsStatus, CDDStateMachine, LegalConstitution, ReasonCodes, RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, BbaDocumentsChecklist, ClientOffice, CDDCaseLocation, MvSciEmpInfo, GaDocumentChecklist, TaskBasedReasonCodes, BranchAddress, DgStatusDecisionMatrix, CashEquities, IndividualReferences, EcddSciPublish, CddCaseAudit, BusinessSubSegment, OPACases, ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, CddCaseAuditSubReasons, IndividualClientRelnAsu, TaskBasedReasonCodesPK, CustomerCountryRisk, PreScreeningComment, BbaRiskQuestion, IndividualDocuments, FormButton, Documents, BbaAdditionalDetails, ClientType, GuarantorNorkomPK, AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, GuarantorNorkom, CddCountryRisk, CountryOffices, CopiFatca, CddWorkflowReassignment, Norkom, Deferral, DocumentsUpload, ClientTriggerEvents, CopiFatcaStatus, Gic, BusinessSubSegmentPK, ParentGroupDetails, MvSciClientCoreInfo, RequestMap, CddRiskQuestions, DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, ReviewCases, MvSciArmLocation, DefenceGoodsDecision, ClientIndividualPK, RoccoDecisionReport, IndividualPK, CddTaskAction, PreScreeningRef, ClientGuarantor, Derivative]
>        at org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>        at
> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaD
> ata(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
>
> Looks like the entity CETAssignmentException is not in the open-jpa list which is used in setting the values using Reflection.
>
> Below is the TRACE log enabled in openjpa.
>
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
>
>
> and debugged with the source code and found that
>
> private Class<?> classForName(String name, ClassLoader loader) {
>        try {
>            return Class.forName(name, true, loader);
>        } catch (Exception e) {
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(e);
>        } catch (NoSuchMethodError nsme) {
>            if (nsme.getMessage().indexOf(".pc") == -1)
>                throw nsme;
>
>            // if the error is about a method that uses the PersistenceCapable
>            // 'pc' method prefix, perform some logging and continue. This
>            // probably just means that the class is not yet enhanced.
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(nsme);
>        }
>        return null;
>    }
>
>
> Above entities are ignored in enhancement while the class is loaded.
> So, added below in persistence.xml
>
> <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/> --> in order to enhance dynamically during run time.
>
> Additionally we have also enabled enhancement during build time by
> <plugin>
>                    <groupId>org.apache.openjpa</groupId>
>                    <artifactId>openjpa-maven-plugin</artifactId>
>                    <version>${openjpa-maven-plugin.version}</version>
>
>                    <configuration>
>                    </configuration>
>
>                    <executions>
>                        <execution>
>                            <id>enhancer</id>
>                            <phase>process-classes</phase>
>                            <goals>
>                                <goal>enhance</goal>
>                            </goals>
>                        </execution>
>                    </executions>
>                </plugin>
>
>
> But still facing the same issue.
>
> This issue has become a serious issue. It would be great if the team could help us in resolving the issue.
>
> Thanks.
>
> Regards
> Senthil Kumar Sekar
>

This email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please delete all copies and notify the sender immediately. You may wish to refer to the incorporation details of Standard Chartered PLC, Standard Chartered Bank and their subsidiaries at https://www.sc.com/en/incorporation-details.html

Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by Senthil Kumar Sekar <se...@virtusapolaris.com>.
Hi Strub,
                  We have multiple bundles deployed in which dao is  a separate bundle and the entities are not duplicated.

xx-ds --> dao bundle
xx depends on xx-ds

Thanks.

Regards
Senthil Kumar Sekar
________________________________________
From: Loganathan, Senthil <Se...@sc.com>
Sent: Thursday, May 12, 2016 12:13 PM
To: Mark Struberg; users@openjpa.apache.org; Senthil Kumar Sekar
Cc: openjpa-dev
Subject: RE: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Hi Strub,

We have the entities listed in one bundle and is part of single jar file.
Thanks.

-----Original Message-----
From: Mark Struberg [mailto:struberg@yahoo.de]
Sent: Thursday, May 12, 2016 2:23 PM
To: users@openjpa.apache.org
Cc: openjpa-dev; Loganathan, Senthil
Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Do you have the same entities in multiple EARs or WARs on the same server?
I got similar sounding issues on servers which did not properly isolate the JPA Metadata caches between different apps.
Trying to understand your exact scenario is imo the first step.

LieGrue,
strub


> Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar <se...@virtusapolaris.com>:
>
>
>
> Hello Team,
>               We have been using openjpa - 2.4.0 for our application data access layer which will be deployed in Jboss Fuse 6.2.1.
> We have persistence xml where all the entities are declared.
>
> Very Frequently that we are facing the below issue and had to restart the container multiple to get the issue resolved.
>
> java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>        at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>               ................
> Caused by: java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>        ... 67 more
> Caused by: java.lang.reflect.InvocationTargetException
>        at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79]
>        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>        at org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandler.invoke(EntityManagerProxyFactory.java:31)
>        ... 68 more
> Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: An error occurred
> while parsing the query filter "select cETAssignmentException_ from CETAssignmentException cETAssignmentException_ where lower(cETAssignmentException_.id.officeCode) = ?1 and lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: The name "CETAssignmentException" is not a recognized entity or identifier. Perhaps you meant CDDCaseLocation, which is a close match. Known entity names: [IndividualReferencesAsu, RmaExcllist, WbSanctionsQuestionnaire, IndividualAsu, SpeDocumentsChecklist, Property, MvSciClientGrpInfo, CddAdditionalDetails, CopiFatcaSubownersInfo, DocumentTemplate, ClientBranchOffices, RoccoDecisionReportPK, CddCaseActorsPK, DdCase, ClientIndividualReln, EcddSciCasePublish, ForeignExchange, CaseDetail, CopiFatcaTaxInfo, NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, AtfFieldsMaster, CddDdrBasedRouting, PreScreening, CddCasePK, MvSciClientOrgInfo, WorkflowState, RoccoRequest, RoccoRequestAuditPK, Risks, MvSciClientAddrInfo, GaProductTransaction, ClientDocuments, Bba, ClientBranch, ClientNorkomPK, ClientISIC, MvSciArmCodeInfo, DDCCountries, Client, GroupNorkom, IndividualClientReln, Ga, OPARuleBases, CDDWorkflowState, SubReasonCodes, MoneyMarket, OpaError, DefenceGoodsStatus, CDDStateMachine, LegalConstitution, ReasonCodes, RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, BbaDocumentsChecklist, ClientOffice, CDDCaseLocation, MvSciEmpInfo, GaDocumentChecklist, TaskBasedReasonCodes, BranchAddress, DgStatusDecisionMatrix, CashEquities, IndividualReferences, EcddSciPublish, CddCaseAudit, BusinessSubSegment, OPACases, ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, CddCaseAuditSubReasons, IndividualClientRelnAsu, TaskBasedReasonCodesPK, CustomerCountryRisk, PreScreeningComment, BbaRiskQuestion, IndividualDocuments, FormButton, Documents, BbaAdditionalDetails, ClientType, GuarantorNorkomPK, AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, GuarantorNorkom, CddCountryRisk, CountryOffices, CopiFatca, CddWorkflowReassignment, Norkom, Deferral, DocumentsUpload, ClientTriggerEvents, CopiFatcaStatus, Gic, BusinessSubSegmentPK, ParentGroupDetails, MvSciClientCoreInfo, RequestMap, CddRiskQuestions, DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, ReviewCases, MvSciArmLocation, DefenceGoodsDecision, ClientIndividualPK, RoccoDecisionReport, IndividualPK, CddTaskAction, PreScreeningRef, ClientGuarantor, Derivative]
>        at org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>        at
> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaD
> ata(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
>
> Looks like the entity CETAssignmentException is not in the open-jpa list which is used in setting the values using Reflection.
>
> Below is the TRACE log enabled in openjpa.
>
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
>
>
> and debugged with the source code and found that
>
> private Class<?> classForName(String name, ClassLoader loader) {
>        try {
>            return Class.forName(name, true, loader);
>        } catch (Exception e) {
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(e);
>        } catch (NoSuchMethodError nsme) {
>            if (nsme.getMessage().indexOf(".pc") == -1)
>                throw nsme;
>
>            // if the error is about a method that uses the PersistenceCapable
>            // 'pc' method prefix, perform some logging and continue. This
>            // probably just means that the class is not yet enhanced.
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(nsme);
>        }
>        return null;
>    }
>
>
> Above entities are ignored in enhancement while the class is loaded.
> So, added below in persistence.xml
>
> <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/> --> in order to enhance dynamically during run time.
>
> Additionally we have also enabled enhancement during build time by
> <plugin>
>                    <groupId>org.apache.openjpa</groupId>
>                    <artifactId>openjpa-maven-plugin</artifactId>
>                    <version>${openjpa-maven-plugin.version}</version>
>
>                    <configuration>
>                    </configuration>
>
>                    <executions>
>                        <execution>
>                            <id>enhancer</id>
>                            <phase>process-classes</phase>
>                            <goals>
>                                <goal>enhance</goal>
>                            </goals>
>                        </execution>
>                    </executions>
>                </plugin>
>
>
> But still facing the same issue.
>
> This issue has become a serious issue. It would be great if the team could help us in resolving the issue.
>
> Thanks.
>
> Regards
> Senthil Kumar Sekar
>

This email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please delete all copies and notify the sender immediately. You may wish to refer to the incorporation details of Standard Chartered PLC, Standard Chartered Bank and their subsidiaries at https://www.sc.com/en/incorporation-details.html

RE: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by "Loganathan, Senthil" <Se...@sc.com>.
Hi Strub,

We have the entities listed in one bundle and is part of single jar file.
Thanks.

-----Original Message-----
From: Mark Struberg [mailto:struberg@yahoo.de] 
Sent: Thursday, May 12, 2016 2:23 PM
To: users@openjpa.apache.org
Cc: openjpa-dev; Loganathan, Senthil
Subject: Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Do you have the same entities in multiple EARs or WARs on the same server?
I got similar sounding issues on servers which did not properly isolate the JPA Metadata caches between different apps.
Trying to understand your exact scenario is imo the first step.

LieGrue,
strub


> Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar <se...@virtusapolaris.com>:
> 
> 
> 
> Hello Team,
>               We have been using openjpa - 2.4.0 for our application data access layer which will be deployed in Jboss Fuse 6.2.1.
> We have persistence xml where all the entities are declared.
> 
> Very Frequently that we are facing the below issue and had to restart the container multiple to get the issue resolved.
> 
> java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>        at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>               ................
> Caused by: java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>        ... 67 more
> Caused by: java.lang.reflect.InvocationTargetException
>        at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79]
>        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>        at org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandler.invoke(EntityManagerProxyFactory.java:31)
>        ... 68 more
> Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error> 
> org.apache.openjpa.persistence.ArgumentException: An error occurred 
> while parsing the query filter "select cETAssignmentException_ from CETAssignmentException cETAssignmentException_ where lower(cETAssignmentException_.id.officeCode) = ?1 and lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: The name "CETAssignmentException" is not a recognized entity or identifier. Perhaps you meant CDDCaseLocation, which is a close match. Known entity names: [IndividualReferencesAsu, RmaExcllist, WbSanctionsQuestionnaire, IndividualAsu, SpeDocumentsChecklist, Property, MvSciClientGrpInfo, CddAdditionalDetails, CopiFatcaSubownersInfo, DocumentTemplate, ClientBranchOffices, RoccoDecisionReportPK, CddCaseActorsPK, DdCase, ClientIndividualReln, EcddSciCasePublish, ForeignExchange, CaseDetail, CopiFatcaTaxInfo, NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, AtfFieldsMaster, CddDdrBasedRouting, PreScreening, CddCasePK, MvSciClientOrgInfo, WorkflowState, RoccoRequest, RoccoRequestAuditPK, Risks, MvSciClientAddrInfo, GaProductTransaction, ClientDocuments, Bba, ClientBranch, ClientNorkomPK, ClientISIC, MvSciArmCodeInfo, DDCCountries, Client, GroupNorkom, IndividualClientReln, Ga, OPARuleBases, CDDWorkflowState, SubReasonCodes, MoneyMarket, OpaError, DefenceGoodsStatus, CDDStateMachine, LegalConstitution, ReasonCodes, RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, BbaDocumentsChecklist, ClientOffice, CDDCaseLocation, MvSciEmpInfo, GaDocumentChecklist, TaskBasedReasonCodes, BranchAddress, DgStatusDecisionMatrix, CashEquities, IndividualReferences, EcddSciPublish, CddCaseAudit, BusinessSubSegment, OPACases, ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, CddCaseAuditSubReasons, IndividualClientRelnAsu, TaskBasedReasonCodesPK, CustomerCountryRisk, PreScreeningComment, BbaRiskQuestion, IndividualDocuments, FormButton, Documents, BbaAdditionalDetails, ClientType, GuarantorNorkomPK, AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, GuarantorNorkom, CddCountryRisk, CountryOffices, CopiFatca, CddWorkflowReassignment, Norkom, Deferral, DocumentsUpload, ClientTriggerEvents, CopiFatcaStatus, Gic, BusinessSubSegmentPK, ParentGroupDetails, MvSciClientCoreInfo, RequestMap, CddRiskQuestions, DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, ReviewCases, MvSciArmLocation, DefenceGoodsDecision, ClientIndividualPK, RoccoDecisionReport, IndividualPK, CddTaskAction, PreScreeningRef, ClientGuarantor, Derivative]
>        at org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>        at 
> org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaD
> ata(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
> 
> Looks like the entity CETAssignmentException is not in the open-jpa list which is used in setting the values using Reflection.
> 
> Below is the TRACE log enabled in openjpa.
> 
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 
> 
> and debugged with the source code and found that
> 
> private Class<?> classForName(String name, ClassLoader loader) {
>        try {
>            return Class.forName(name, true, loader);
>        } catch (Exception e) {
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(e);
>        } catch (NoSuchMethodError nsme) {
>            if (nsme.getMessage().indexOf(".pc") == -1)
>                throw nsme;
> 
>            // if the error is about a method that uses the PersistenceCapable
>            // 'pc' method prefix, perform some logging and continue. This
>            // probably just means that the class is not yet enhanced.
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(nsme);
>        }
>        return null;
>    }
> 
> 
> Above entities are ignored in enhancement while the class is loaded. 
> So, added below in persistence.xml
> 
> <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/> --> in order to enhance dynamically during run time.
> 
> Additionally we have also enabled enhancement during build time by 
> <plugin>
>                    <groupId>org.apache.openjpa</groupId>
>                    <artifactId>openjpa-maven-plugin</artifactId>
>                    <version>${openjpa-maven-plugin.version}</version>
> 
>                    <configuration>
>                    </configuration>
> 
>                    <executions>
>                        <execution>
>                            <id>enhancer</id>
>                            <phase>process-classes</phase>
>                            <goals>
>                                <goal>enhance</goal>
>                            </goals>
>                        </execution>
>                    </executions>
>                </plugin>
> 
> 
> But still facing the same issue.
> 
> This issue has become a serious issue. It would be great if the team could help us in resolving the issue.
> 
> Thanks.
> 
> Regards
> Senthil Kumar Sekar
> 

This email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please delete all copies and notify the sender immediately. You may wish to refer to the incorporation details of Standard Chartered PLC, Standard Chartered Bank and their subsidiaries at https://www.sc.com/en/incorporation-details.html

Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by Mark Struberg <st...@yahoo.de.INVALID>.
Do you have the same entities in multiple EARs or WARs on the same server?
I got similar sounding issues on servers which did not properly isolate the JPA Metadata caches between different apps.
Trying to understand your exact scenario is imo the first step.

LieGrue,
strub


> Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar <se...@virtusapolaris.com>:
> 
> 
> 
> Hello Team,
>               We have been using openjpa – 2.4.0 for our application data access layer which will be deployed in Jboss Fuse 6.2.1.
> We have persistence xml where all the entities are declared.
> 
> Very Frequently that we are facing the below issue and had to restart the container multiple to get the issue resolved.
> 
> java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>        at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>               …………….
> Caused by: java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>        ... 67 more
> Caused by: java.lang.reflect.InvocationTargetException
>        at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79]
>        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>        at org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandler.invoke(EntityManagerProxyFactory.java:31)
>        ... 68 more
> Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter "select cETAssignmentException_
> from CETAssignmentException cETAssignmentException_
> where lower(cETAssignmentException_.id.officeCode) = ?1 and lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: The name "CETAssignmentException" is not a recognized entity or identifier. Perhaps you meant CDDCaseLocation, which is a close match. Known entity names: [IndividualReferencesAsu, RmaExcllist, WbSanctionsQuestionnaire, IndividualAsu, SpeDocumentsChecklist, Property, MvSciClientGrpInfo, CddAdditionalDetails, CopiFatcaSubownersInfo, DocumentTemplate, ClientBranchOffices, RoccoDecisionReportPK, CddCaseActorsPK, DdCase, ClientIndividualReln, EcddSciCasePublish, ForeignExchange, CaseDetail, CopiFatcaTaxInfo, NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, AtfFieldsMaster, CddDdrBasedRouting, PreScreening, CddCasePK, MvSciClientOrgInfo, WorkflowState, RoccoRequest, RoccoRequestAuditPK, Risks, MvSciClientAddrInfo, GaProductTransaction, ClientDocuments, Bba, ClientBranch, ClientNorkomPK, ClientISIC, MvSciArmCodeInfo, DDCCountries, Client, GroupNorkom, IndividualClientReln, Ga, OPARuleBases, CDDWorkflowState, SubReasonCodes, MoneyMarket, OpaError, DefenceGoodsStatus, CDDStateMachine, LegalConstitution, ReasonCodes, RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, BbaDocumentsChecklist, ClientOffice, CDDCaseLocation, MvSciEmpInfo, GaDocumentChecklist, TaskBasedReasonCodes, BranchAddress, DgStatusDecisionMatrix, CashEquities, IndividualReferences, EcddSciPublish, CddCaseAudit, BusinessSubSegment, OPACases, ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, CddCaseAuditSubReasons, IndividualClientRelnAsu, TaskBasedReasonCodesPK, CustomerCountryRisk, PreScreeningComment, BbaRiskQuestion, IndividualDocuments, FormButton, Documents, BbaAdditionalDetails, ClientType, GuarantorNorkomPK, AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, GuarantorNorkom, CddCountryRisk, CountryOffices, CopiFatca, CddWorkflowReassignment, Norkom, Deferral, DocumentsUpload, ClientTriggerEvents, CopiFatcaStatus, Gic, BusinessSubSegmentPK, ParentGroupDetails, MvSciClientCoreInfo, RequestMap, CddRiskQuestions, DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, ReviewCases, MvSciArmLocation, DefenceGoodsDecision, ClientIndividualPK, RoccoDecisionReport, IndividualPK, CddTaskAction, PreScreeningRef, ClientGuarantor, Derivative]
>        at org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
> 
> Looks like the entity CETAssignmentException is not in the open-jpa list which is used in setting the values using Reflection.
> 
> Below is the TRACE log enabled in openjpa.
> 
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 
> 
> and debugged with the source code and found that
> 
> private Class<?> classForName(String name, ClassLoader loader) {
>        try {
>            return Class.forName(name, true, loader);
>        } catch (Exception e) {
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(e);
>        } catch (NoSuchMethodError nsme) {
>            if (nsme.getMessage().indexOf(".pc") == -1)
>                throw nsme;
> 
>            // if the error is about a method that uses the PersistenceCapable
>            // 'pc' method prefix, perform some logging and continue. This
>            // probably just means that the class is not yet enhanced.
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(nsme);
>        }
>        return null;
>    }
> 
> 
> Above entities are ignored in enhancement while the class is loaded. So, added below in persistence.xml
> 
> <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/> --> in order to enhance dynamically during run time.
> 
> Additionally we have also enabled enhancement during build time by
> <plugin>
>                    <groupId>org.apache.openjpa</groupId>
>                    <artifactId>openjpa-maven-plugin</artifactId>
>                    <version>${openjpa-maven-plugin.version}</version>
> 
>                    <configuration>
>                    </configuration>
> 
>                    <executions>
>                        <execution>
>                            <id>enhancer</id>
>                            <phase>process-classes</phase>
>                            <goals>
>                                <goal>enhance</goal>
>                            </goals>
>                        </execution>
>                    </executions>
>                </plugin>
> 
> 
> But still facing the same issue.
> 
> This issue has become a serious issue. It would be great if the team could help us in resolving the issue.
> 
> Thanks.
> 
> Regards
> Senthil Kumar Sekar
> 


Re: Open JPA Entity Loading issue due to failure in Enhancing at run time.

Posted by Mark Struberg <st...@yahoo.de.INVALID>.
Do you have the same entities in multiple EARs or WARs on the same server?
I got similar sounding issues on servers which did not properly isolate the JPA Metadata caches between different apps.
Trying to understand your exact scenario is imo the first step.

LieGrue,
strub


> Am 12.05.2016 um 05:09 schrieb Senthil Kumar Sekar <se...@virtusapolaris.com>:
> 
> 
> 
> Hello Team,
>               We have been using openjpa – 2.4.0 for our application data access layer which will be deployed in Jboss Fuse 6.2.1.
> We have persistence xml where all the entities are declared.
> 
> Very Frequently that we are facing the below issue and had to restart the container multiple to get the issue resolved.
> 
> java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy29.createQuery(Unknown Source)
>        at com.mysema.query.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:127)[744:com.mysema.querydsl.jpa:3.6.3]
>               …………….
> Caused by: java.lang.reflect.UndeclaredThrowableException
>        at com.sun.proxy.$Proxy103.createQuery(Unknown Source)
>        ... 67 more
> Caused by: java.lang.reflect.InvocationTargetException
>        at sun.reflect.GeneratedMethodAccessor112.invoke(Unknown Source)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)[:1.7.0_79]
>        at java.lang.reflect.Method.invoke(Method.java:606)[:1.7.0_79]
>        at org.apache.aries.jpa.container.impl.EntityManagerProxyFactory$EMHandler.invoke(EntityManagerProxyFactory.java:31)
>        ... 68 more
> Caused by: <openjpa-2.4.0-r422266:1674604 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter "select cETAssignmentException_
> from CETAssignmentException cETAssignmentException_
> where lower(cETAssignmentException_.id.officeCode) = ?1 and lower(cETAssignmentException_.id.businessSegmentCode) = ?2". Error message: The name "CETAssignmentException" is not a recognized entity or identifier. Perhaps you meant CDDCaseLocation, which is a close match. Known entity names: [IndividualReferencesAsu, RmaExcllist, WbSanctionsQuestionnaire, IndividualAsu, SpeDocumentsChecklist, Property, MvSciClientGrpInfo, CddAdditionalDetails, CopiFatcaSubownersInfo, DocumentTemplate, ClientBranchOffices, RoccoDecisionReportPK, CddCaseActorsPK, DdCase, ClientIndividualReln, EcddSciCasePublish, ForeignExchange, CaseDetail, CopiFatcaTaxInfo, NorkomTxn, CopiFatcaDocument, ClientGroup, ClientIndividual, OpaScreen, Country, MvSciClientInfo, IndividualNorkom, CddRisks, IndividualNorkomAsu, ClientOfficeProducts, CddCaseAuditPK, AtfFieldsMaster, CddDdrBasedRouting, PreScreening, CddCasePK, MvSciClientOrgInfo, WorkflowState, RoccoRequest, RoccoRequestAuditPK, Risks, MvSciClientAddrInfo, GaProductTransaction, ClientDocuments, Bba, ClientBranch, ClientNorkomPK, ClientISIC, MvSciArmCodeInfo, DDCCountries, Client, GroupNorkom, IndividualClientReln, Ga, OPARuleBases, CDDWorkflowState, SubReasonCodes, MoneyMarket, OpaError, DefenceGoodsStatus, CDDStateMachine, LegalConstitution, ReasonCodes, RoccoRequestAudit, Address, BranchNorkom, FiDocumentsChecklist, CopiFatcaStatusInfo, CddCase, Cdd, CddPepSummary, Bonds, BbaDocumentsChecklist, ClientOffice, CDDCaseLocation, MvSciEmpInfo, GaDocumentChecklist, TaskBasedReasonCodes, BranchAddress, DgStatusDecisionMatrix, CashEquities, IndividualReferences, EcddSciPublish, CddCaseAudit, BusinessSubSegment, OPACases, ClientIndividualRelnPK, IndividualReferencesAsuPK, Product, ClientNorkom, BusinessSegment, DocumentCategory, CoDocumentsChecklist, CddCaseAuditSubReasons, IndividualClientRelnAsu, TaskBasedReasonCodesPK, CustomerCountryRisk, PreScreeningComment, BbaRiskQuestion, IndividualDocuments, FormButton, Documents, BbaAdditionalDetails, ClientType, GuarantorNorkomPK, AnticipatedTransaction, CddPepDetail, GoodsType, CddCaseActors, GuarantorNorkom, CddCountryRisk, CountryOffices, CopiFatca, CddWorkflowReassignment, Norkom, Deferral, DocumentsUpload, ClientTriggerEvents, CopiFatcaStatus, Gic, BusinessSubSegmentPK, ParentGroupDetails, MvSciClientCoreInfo, RequestMap, CddRiskQuestions, DefenceGoods, OPADecisionReport, AtfRequestTxn, Individual, ReviewCases, MvSciArmLocation, DefenceGoodsDecision, ClientIndividualPK, RoccoDecisionReport, IndividualPK, CddTaskAction, PreScreeningRef, ClientGuarantor, Derivative]
>        at org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118)[848:org.apache.openjpa:2.4.0]
>        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:193)[848:org.apache.openjpa:2.4.0]
>        at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:166)[848:org.apache.openjpa:2.4.0]
> 
> Looks like the entity CETAssignmentException is not in the open-jpa list which is used in setting the values using Reflection.
> 
> Below is the TRACE log enabled in openjpa.
> 
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciOffices" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.sci.SciAssignment" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentExceptionPK" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 3724779  bowbMSPersistenceUnit  WARN   [qtp1069331902-407] openjpa.MetaData - The class "com.scb.cic.wb.cdd.ds.db.model.task.CETAssignmentException" listed in the openjpa.MetaDataFactory configuration property could not be loaded by wb-svc-cdd [970]; ignoring.
> 
> 
> and debugged with the source code and found that
> 
> private Class<?> classForName(String name, ClassLoader loader) {
>        try {
>            return Class.forName(name, true, loader);
>        } catch (Exception e) {
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(e);
>        } catch (NoSuchMethodError nsme) {
>            if (nsme.getMessage().indexOf(".pc") == -1)
>                throw nsme;
> 
>            // if the error is about a method that uses the PersistenceCapable
>            // 'pc' method prefix, perform some logging and continue. This
>            // probably just means that the class is not yet enhanced.
>            if ((_validate & VALIDATE_RUNTIME) != 0) {
>                if (_log.isWarnEnabled())
>                    _log.warn(_loc.get("bad-discover-class", name, loader));
>            } else if (_log.isInfoEnabled())
>                _log.info(_loc.get("bad-discover-class", name, loader));
>            if (_log.isTraceEnabled())
>                _log.trace(nsme);
>        }
>        return null;
>    }
> 
> 
> Above entities are ignored in enhancement while the class is loaded. So, added below in persistence.xml
> 
> <property name="openjpa.RuntimeUnenhancedClasses" value="supported"/> --> in order to enhance dynamically during run time.
> 
> Additionally we have also enabled enhancement during build time by
> <plugin>
>                    <groupId>org.apache.openjpa</groupId>
>                    <artifactId>openjpa-maven-plugin</artifactId>
>                    <version>${openjpa-maven-plugin.version}</version>
> 
>                    <configuration>
>                    </configuration>
> 
>                    <executions>
>                        <execution>
>                            <id>enhancer</id>
>                            <phase>process-classes</phase>
>                            <goals>
>                                <goal>enhance</goal>
>                            </goals>
>                        </execution>
>                    </executions>
>                </plugin>
> 
> 
> But still facing the same issue.
> 
> This issue has become a serious issue. It would be great if the team could help us in resolving the issue.
> 
> Thanks.
> 
> Regards
> Senthil Kumar Sekar
>