Проблема с JPA в JBoss Fuse 6.2

Я пытаюсь реализовать приложение JPA в JBoss Fuse 6.2. Прикрепленные файлы - это pom.xml, blueprint.xml и persistence.xml. Они отлично работают в JBoss Fuse 6.1. Но мы всегда получаем ошибку "Нет доступных поставщиков" в 6.2, и развертывание находится в стадии "ожидания". Я считаю, что проблема с функцией "JPA". В 6.2, когда я делаю "features: info jpa", он отображает пакет hibernate как модуль jpa (mvn: org.hibernate.javax.persistence / hibernate-jpa-2.1-api / 1.0.0.Final), тогда как в 6.1 это был пакет geronimo jpa (mvn: org.apache.geronimo.specs / geronimo-jpa_2.0_spec / 1.1). Я считаю, что это вызывает сбой OpenJPA, так как OpenJPA совместим с JPA 2.0, но не 2.1. Пожалуйста, руководство о том, как решить эту проблему. Я пытался не использовать функцию jpa, а скорее использовать комплекты функции jpa от версии 6.1, но это тоже не помогло.

pom.xml

<plugin>
    <groupId>io.fabric8</groupId>
    <artifactId>fabric8-maven-plugin</artifactId>
    <version>${fabric.version}</version>
    <configuration>
     <profile>org-profile</profile>
     <parentProfiles>feature-cxf</parentProfiles>
     <features>fabric-cxf swagger cxf-jaxrs transaction jndi jpa camel-spring spring-orm spring-jdbc
     </features>
     <featureRepos>
      mvn:org.apache.cxf.karaf/apache-cxf/${version:cxf}/xml/features
      mvn:org.apache.camel.karaf/apache-camel/${version:camel}/xml/features
     </featureRepos>
     <bundles>
      mvn:mysql/mysql-connector-java/5.1.34
      mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-dbcp/1.4_3
      mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.serp/1.14.1_1
      mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.commons-collections/3.2.1_3
      mvn:org.apache.openjpa/openjpa/2.3.0
     </bundles>
    </configuration>
   </plugin>

blueprint.xml

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"
    xmlns:cxf="http://cxf.apache.org/blueprint/core" 
    xmlns:jpa="http://aries.apache.org/xmlns/jpa/v1.1.0"
    xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0" 
    >
    
    <jaxrs:server id="organizationService" address="/common">
        <jaxrs:serviceBeans>
            <ref component-id="organizationServiceBean"/>
        </jaxrs:serviceBeans>
        <jaxrs:features>
            <bean class="org.apache.cxf.jaxrs.swagger.SwaggerFeature"/>
        </jaxrs:features>
    </jaxrs:server>
 
    <cxf:bus>
        <cxf:features>
          <cxf:logging />
        </cxf:features>
    </cxf:bus>

 <bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
  <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/test"/>
        <property name="username" value="user"/>
        <property name="password" value="pwd"/>
    </bean>
    <service ref="dataSource" interface="javax.sql.DataSource">
        <service-properties>
            <entry key="osgi.jndi.service.name" value="jdbc/DataSource"/>
        </service-properties>
    </service>
    
    <bean id="defOrganizationService" class="org.OrganizationDataServiceImpl">
        <jpa:context unitname="PERSON"/>
        <tx:transaction method="*" value="Required"/>
    </bean>
    <bean id="defOrgchartService" class="org.OrgchartDataServiceImpl">
        <jpa:context unitname="PERSON"/>
        <tx:transaction method="*" value="Required"/>
    </bean>
    
    <bean id="organizationServiceBean" class="org.OrganizationService">
     <property name="organizationDataService" ref="defOrganizationService"/>
     <property name="orgchartDataService" ref="defOrgchartService"/>
    </bean>
  </blueprint>

persistence.xml

<persistence-unit name="PERSON" transaction-type="JTA">
     <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <jta-data-source>osgi:service/javax.sql.DataSource/(osgi.jndi.service.name=jdbc/DataSource)</jta-data-source>
        <!-- this is very important -->
        <class>org.Person</class>
  <exclude-unlisted-classes>true</exclude-unlisted-classes>
     <properties>
            <!-- Schema update -->
            <property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema"/>
            <!-- Specify dialect -->
            <property name="openjpa.jdbc.DBDictionary" value="mysql"/>
            <property name="openjpa.Log" value="File=C:/install/jboss-fuse-6.1.0.redhat-379/data/log/org.apache.openjpa.log, DefaultLevel=WARN, Runtime=INFO, Tool=INFO, SQL=TRACE"/>
        </properties>
    </persistence-unit>
</persistence>

0 ответов

Другие вопросы по тегам