0

ServiceMix / JPA / Camel / Spring は初めてです。camel ルートの一部として camel-jpa コンポーネントを使用しようとしています。ServiceMix の最新リリースである 4.5.1 を使用しています。これはキャメル 2.10.4 とスプリング 3.0.7 を使用します。

OSGi マニフェストを更新し、いくつかの追加モジュールを servicemix にデプロイした後、次のスタック トレースでスタックします。

org.osgi.service.blueprint.container.ComponentDefinitionException: Error setting property: PropertyDescriptor <name: entityManagerFactory, getter: class org.springframework.orm.jpa.JpaTransactionManager.getEntityManagerFactory(, setter: [class org.springframework.orm.jpa.JpaTransactionManager.setEntityManagerFactory(interface javax.persistence.EntityManagerFactory]
[...]
Caused by: java.lang.Exception: Unable to convert value org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean@46e9e26a to type javax.persistence.EntityManagerFactory
at org.apache.aries.blueprint.container.AggregateConverter.convert(AggregateConverter.java:172)[10:org.apache.aries.blueprint:0.3.2]
at org.apache.aries.blueprint.container.BlueprintRepository.convert(BlueprintRepository.java:373)[10:org.apache.aries.blueprint:0.3.2]
at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.convert(ReflectionUtils.java:322)[10:org.apache.aries.blueprint:0.3.2]
at org.apache.aries.blueprint.utils.ReflectionUtils$MethodPropertyDescriptor.internalSet(ReflectionUtils.java:555)[10:org.apache.aries.blueprint:0.3.2]
at org.apache.aries.blueprint.utils.ReflectionUtils$PropertyDescriptor.set(ReflectionUtils.java:306)[10:org.apache.aries.blueprint:0.3.2]
at org.apache.aries.blueprint.container.BeanRecipe.setProperty(BeanRecipe.java:819)[10:org.apache.aries.blueprint:0.3.2]

persistence.xml、camel-context.xml (blueprint/spring xml) をいじってみましたが、あまり進歩していません。私の現在の構成は次のとおりです。

camel-context.xml

<bean id="mysqlDataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"        value="com.mysql.jdbc.Driver"/>
    <property name="url"                    value="jdbc:mysql://localhost/prototype"/>
    <property name="username"               value="...."/>
    <property name="password"               value="...."/>
</bean>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource"             ref="mysqlDataSource"/>
    <property name="persistenceUnitName"    value="customer1"/>
    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.SimpleLoadTimeWeaver" />
    </property>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.OpenJpaVendorAdapter">
            <property name="databasePlatform"   value="org.apache.openjpa.jdbc.sql.MySQLDictionary" />
            <property name="showSql"            value="true"/>
        </bean>
    </property>
</bean>

<bean id="jpaTxManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory"   ref="entityManagerFactory"/>
</bean>

<bean id="jpa" class="org.apache.camel.component.jpa.JpaComponent">
    <property name="entityManagerFactory"   ref="entityManagerFactory"/>
    <property name="transactionManager"     ref="jpaTxManager"/>
</bean>

persistence.xml

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
         version="2.0">
<persistence-unit name="customer1" transaction-type="RESOURCE_LOCAL">
    <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
    <class>....</class>
</persistence-unit>

どんな助けでも大歓迎です。私はこの問題に数日間取り組んできました。

4

1 に答える 1