[ 
https://issues.apache.org/jira/browse/OPENJPA-1688?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roman Zulauf updated OPENJPA-1688:
----------------------------------

    Attachment: orm.xml
                orm_2.xml

Files that create Exception if put in META-INF and there is no internet access.

> PersistenceMetaDataFactory does not recorgnize 
> http://java.sun.com/xml/ns/persistence Namespace and throws Exception
> --------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1688
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1688
>             Project: OpenJPA
>          Issue Type: Bug
>    Affects Versions: 2.0.0
>            Reporter: Roman Zulauf
>         Attachments: orm.xml, orm_2.xml
>
>
> I have a Java project with a persistence.xml and an orm.xml in the META-INF 
> folder. Both persistence.xml and orm.xml files contain JPA Persistence 
> Meta-Data. OpenJPA can correctly parse my persistence.xml but it needs 
> network access to parse the orm.xml because of the schema location specified 
> as xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
> http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd";. When parsing 
> persistence.xml OpenJPA does not access the network to retrieve the specified 
> schema.
> The exception thrown is:
> Caused by: <openjpa-2.0.0-r422266:935683 nonfatal general error> 
> org.apache.openjpa.persistence.PersistenceException: 
> org.xml.sax.SAXException: jar:file:/C:/WMPS/wmcc.jar!/META-INF/orm.xml 
> [Location: Line: 6, C: 19]: org.xml.sax.SAXParseException: cvc-elt.1: Cannot 
> find the declaration of element 'persistence'.
>         at 
> org.apache.openjpa.persistence.PersistenceMetaDataFactory.parseXML(PersistenceMetaDataFactory.java:295)
>         at 
> org.apache.openjpa.persistence.PersistenceMetaDataFactory.load(PersistenceMetaDataFactory.java:228)
>         at 
> org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:554)
>         at 
> org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:374)
>         at 
> org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:358)
>         at 
> org.apache.openjpa.meta.MetaDataRepository.resolveAll(MetaDataRepository.java:1923)
>         at 
> org.apache.openjpa.meta.MetaDataRepository.getQueryMetaDataInternal(MetaDataRepository.java:1901)
>         at 
> org.apache.openjpa.meta.MetaDataRepository.getQueryMetaData(MetaDataRepository.java:1888)
>         at 
> org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1012)
>         at 
> org.apache.openjpa.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1005)
> If I remove the schema location from the orm.xml file, another exception is 
> thrown:
> 9125  wmps  WARN   [main] openjpa.Enhance - An exception was thrown while 
> attempting to perform class file transformation on 
> "ch/wiegand/appl/wmm/wmcc/model/article/Price":
> <openjpa-2.0.0-r422266:935683 nonfatal general error> 
> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: 
> file:/Q:/proj/wiegand/MMCC/bin/META-INF/orm.xml [Location: Line: 4, C: 19]: 
> org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of 
> element 'persistence'.
>       at 
> org.apache.openjpa.persistence.PersistenceMetaDataFactory.parseXML(PersistenceMetaDataFactory.java:295)
>       at 
> org.apache.openjpa.persistence.PersistenceMetaDataFactory.load(PersistenceMetaDataFactory.java:228)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:554)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.getMetaDataInternal(MetaDataRepository.java:374)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:358)
>       at org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:256)
>       at org.apache.openjpa.enhance.PCEnhancer.<init>(PCEnhancer.java:227)
>       at 
> org.apache.openjpa.enhance.PCClassFileTransformer.transform0(PCClassFileTransformer.java:139)
>       at 
> org.apache.openjpa.enhance.PCClassFileTransformer.transform(PCClassFileTransformer.java:120)
>       at 
> sun.instrument.TransformerManager.transform(TransformerManager.java:169)
>       at 
> sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:365)
>       at java.lang.ClassLoader.defineClass1(Native Method)
>       at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
>       at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
>       at 
> java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
>       at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
>       at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
>       at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
>       at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
>       at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
>       at java.lang.Class.forName0(Native Method)
>       at java.lang.Class.forName(Class.java:247)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.classForName(MetaDataRepository.java:1525)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypesInternal(MetaDataRepository.java:1501)
>       at 
> org.apache.openjpa.meta.MetaDataRepository.loadPersistentTypes(MetaDataRepository.java:1479)
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.loadPersistentTypes(AbstractBrokerFactory.java:272)
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.initializeBroker(AbstractBrokerFactory.java:228)
>       at 
> org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:202)
>       at 
> org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:156)
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:213)
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:151)
>       at 
> org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:57)
>       at 
> ch.wiegand.appl.wmm.wmcc.persistence.PersistenceManager.<init>(PersistenceManager.java:48)
>       at 
> ch.wiegand.appl.wmm.wmcc.persistence.PersistenceManagerFactory.createPersistenceManager(PersistenceManagerFactory.java:25)
>       at 
> ch.wiegand.appl.wmm.wmps.manager.PrepStationManager.<init>(PrepStationManager.java:61)
>       at 
> ch.wiegand.appl.wmm.wmps.facade.cli.PrepStationApp.setup(PrepStationApp.java:62)
>       at 
> ch.wiegand.appl.wmm.wmps.facade.cli.PrepStationApp.main(PrepStationApp.java:90)
> Caused by: java.io.IOException: org.xml.sax.SAXException: 
> file:/Q:/proj/wiegand/MMCC/bin/META-INF/orm.xml [Location: Line: 4, C: 19]: 
> org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of 
> element 'persistence'.
>       at 
> org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:396)
>       at 
> org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:334)
>       at 
> org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:311)
>       at 
> org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:284)
>       at 
> org.apache.openjpa.persistence.XMLPersistenceMetaDataParser.parse(XMLPersistenceMetaDataParser.java:364)
>       at 
> org.apache.openjpa.persistence.PersistenceMetaDataFactory.parseXML(PersistenceMetaDataFactory.java:293)
>       ... 39 more
> Caused by: org.xml.sax.SAXException: 
> file:/Q:/proj/wiegand/MMCC/bin/META-INF/orm.xml [Location: Line: 4, C: 19]: 
> org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of 
> element 'persistence'.
>       at 
> org.apache.openjpa.lib.meta.XMLMetaDataParser.getException(XMLMetaDataParser.java:675)
>       at 
> org.apache.openjpa.lib.meta.XMLMetaDataParser.error(XMLMetaDataParser.java:434)
>       at 
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
>       at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1915)
>       at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:400)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:626)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3103)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:922)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
>       at 
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
>       at 
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
>       at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
>       at 
> org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:393)
>       ... 44 more
> Because the used Parser factory is not under the control of the application, 
> there seems to be no way to set the schema location programmatically. If 
> there is way, it seems to be missing in the documentation.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to