Как я могу внедрить PersitenceProvider в среду выполнения для проекта гобелена? - PullRequest
0 голосов
/ 21 июня 2019

По сути, я новичок в Tapestry, и мне нужно работать над проектом с этим фреймворком. Для этого я запустил учебные пособия по Tutorial Point и DoubleNegative.

До сих пор мне удалось завершить спящую часть Tutorial point, но у меня есть несколько трудностей с частью JPA. В настоящее время у меня есть проблема с интеграцией JPA, относительно реализации PersistenceProvider в среде выполнения.

Каждый раз, когда я собираю проект, он возвращает мне это сообщение об ошибке:

[ERROR] ioc.Registry java.lang.IllegalStateException: No PersistenceProvider implementation available in the runtime environment.

Но у меня есть файл persistence.xml, и он находится в правильном месте (src / main / resources / META-INF).

Поскольку моему проекту требуется Java 1.7, я использую последние версии для зависимостей tapestry-core и tapestry-jpa (${tapestry-release-version}) и 5.1.17 для hibernate-core.

(Здесь интеграция дерева зависимостей, соответствующая hibernate

[INFO] +- org.hibernate:hibernate-core:jar:5.1.17.Final:compile
[INFO] |  +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  +- org.javassist:javassist:jar:3.20.0-GA:compile
[INFO] |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  +- org.apache.geronimo.specs:geronimo-jta_1.1_spec:jar:1.1.1:compile
[INFO] |  +- org.jboss:jandex:jar:2.0.3.Final:compile
[INFO] |  +- com.fasterxml:classmate:jar:1.3.0:compile
[INFO] |  +- org.dom4j:dom4j:jar:2.1.1:compile
[INFO] |  \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.7.19:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:1.7.19:compile
[INFO] |  \- log4j:log4j:jar:1.2.17:compile

)

Пока у меня это без результата:

  • изменить провайдера с org.hibernate.ejb.HibernatePersistence на текущую версию в файле постоянства
  • заменить команды, используемые в постоянстве, в AppModule
  • использовать сопоставление балансов в файле постоянства
  • использовать функции addJarFileUrl в configurePersistenceUnitInfos (прокомментировано ниже, но бесполезно)

Это фрагмент моего файла persistence.xml:

<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="ryuJPA" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.archive.autodetection" value="class" />
<property name="hibernate.dialect" value="com.mysema.query.jpa.support.ExtendedHSQLDialect" />
<property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" />
<property name="hibernate.connection.url" value="jdbc:hsqldb:file:./localhost/ryu;shutdown=true" />
<property name="hibernate.connection.user" value="sa" />
<property name="hibernate.show_sql" value="true"/> 
<property name="hibernate.hbm2ddl.auto" value="update" />
</properties>
</persistence-unit>
</persistence>

Часть приложения AppModule.java соответствует:

@Contribute(EntityManagerSource.class)
    public static void configurePersistenceUnitInfos(MappedConfiguration<String,PersistenceUnitConfigurer> cfg) {
        PersistenceUnitConfigurer configurer = new PersistenceUnitConfigurer() {
            public void configure(TapestryPersistenceUnitInfo unitInfo) {
                unitInfo
                //.addJarFileUrl("hibernate-release-5.1.17.Final\\lib\\jpa\\hibernate-entitymanager-5.1.17.Final.jar")
                //.addJarFileUrl("org.hibernate.ejb.HibernatePersistence")
                .addProperty("hibernate.archive.autodetection", "class")
                .addProperty("hibernate.dialect", "com.mysema.query.jpa.support.ExtendedHSQLDialect")
                .addProperty("hibernate.connection.driver_class", "org.hsqldb.jdbcDriver")
                .addProperty("hibernate.connection.url", "jdbc:hsqldb:file:./localhost/ryu;shutdown=true")
                .addProperty("hibernate.show_sql", "sa")
                .addProperty("hibernate.show_sql", "true")
                .addProperty("hibernate.hbm2ddl.auto", "update")
                ;
                }
            };
            cfg.add("ryuJPA", configurer);
            }

В настоящее время Jetty не может скомпилировать проект, возвращаемое значение:

[ERROR] ioc.Registry java.lang.IllegalStateException: No PersistenceProvider implementation available in the runtime environment.

В настоящее время у меня недостаточно опыта в этой среде, чтобы понять, как это решить, мне кажется, это правильно.

Спасибо за любую помощь.

...