OPENJPA 2.4.3 явно ищет постоянство пространства имен в интернете - PullRequest
2 голосов
/ 20 марта 2019

Я использую OpenJPA 2.4.3 , и я обнаружил странное происшествие. Когда OpenJPA пытается получить доступ к моему persistence.xml при подключении к Интернету и работе DNS, все работает нормально.

Однако, когда я не подключен, происходит сбой всякий раз, когда требуется доступ к моему файлу персистентности. Похоже, что он сильно пытается найти пространство имен в Интернете. Я провел диагностику сети, и она подключается к некоторым хостам.

Стоит отметить, что у hibernate нет проблем с запуском без доступа в интернет.

Есть ли способ предотвратить / исправить это ???

PS: Здесь есть похожий вопрос: Java не может подключиться к Интернету - java.net.ConnectException истекло время ожидания соединения

Но его подход не работал для меня без подключения к интернету.

Кроме того, я пробовал разные пространства имен и версии, но результат всегда был одинаковым.

persistence.xml:

    <?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.2"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_2.xsd">
    <!-- Define persistence unit -->
    <persistence-unit name="jpa-mysql" transaction-type="RESOURCE_LOCAL">
        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>

        <class>...</class>

        <properties>
            ...
        </properties>

    </persistence-unit>
</persistence>

Ошибка:

javax.persistence.PersistenceException: Explicit persistence provider error(s) occurred for "jpa-mysql" after trying the following discovered implementations: org.apache.openjpa.persistence.PersistenceProviderImpl from provider: org.apache.openjpa.persistence.PersistenceProviderImpl

    at javax.persistence.Persistence.createPersistenceException(Persistence.java:244)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:186)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:72)
    at au.com.marlo.connection.Connection.getEntityManagerFactory(Connection.java:13)
    at au.com.marlo.processors.SaveStoreProcessorTest.shouldProcess(SaveStoreProcessorTest.java:33)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
    at org.junit.rules.TestWatcher$1.evaluate(TestWatcher.java:55)
    at org.junit.rules.RunRules.evaluate(RunRules.java:20)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: <openjpa-2.4.3-r422266:1833086 nonfatal general error> org.apache.openjpa.util.GeneralException: org.xml.sax.SAXException: file:/home/rafael/Documents/rskinner/Final%20Project/JBOSS%20FUSE/gbz-db-translator/target/test-classes/META-INF/persistence.xml [Location: Line: 4, C: 135]: org.xml.sax.SAXParseException; systemId: file:/home/rafael/Documents/rskinner/Final%20Project/JBOSS%20FUSE/gbz-db-translator/target/test-classes/META-INF/persistence.xml; lineNumber: 4; columnNumber: 135; cvc-elt.1.a: Cannot find the declaration of element 'persistence'.
    at org.apache.openjpa.lib.meta.XMLMetaDataParser.parseNewResource(XMLMetaDataParser.java:426)
    at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:346)
    at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:323)
    at org.apache.openjpa.lib.meta.XMLMetaDataParser.parse(XMLMetaDataParser.java:296)
    at org.apache.openjpa.persistence.PersistenceProductDerivation$ConfigurationParser.parse(PersistenceProductDerivation.java:811)
    at org.apache.openjpa.persistence.PersistenceProductDerivation.parseResources(PersistenceProductDerivation.java:576)
    at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:528)
    at org.apache.openjpa.persistence.PersistenceProductDerivation.load(PersistenceProductDerivation.java:339)
    at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:87)
    at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:155)
    at org.apache.openjpa.persistence.PersistenceProviderImpl.createEntityManagerFactory(PersistenceProviderImpl.java:63)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:152)
    ... 31 more



РЕДАКТИРОВАТЬ: Мой друг открыл обсуждение jira openjpa, и они исправили проблему в версии 3.1.0. Тем не менее, я думаю, что они только в комплекте с версией 2.1 xsd, версия 2.2 может все еще не работать.

https://issues.apache.org/jira/browse/OPENJPA-2781?page=com.atlassian.jira.plugin.system.issuetabpanels%3Aall-tabpanel

...