Может ли кто-нибудь указать мне на рабочий пример mule-module-jpa, подходящий для Mule 3.4 CE?
Я смотрел вверх и вниз и потратил большую часть дня, пытаясь запустить тест, и застрял, пытаясь получить правильно определенный entityManagerFactory, установленный внутри приложения mule.
Я был в восторге, когда увидел здесь статью с описанием возможностей модулей. http://blogs.mulesoft.org/getting-started-with-jpa-and-mule/ К сожалению, в этой статье нет подробностей о настройке модуля.
Затем я нашел репозиторий github для модуля (https://github.com/mulesoft/mule-module-jpa) и перешел по ссылке на «документацию» на https://github.com/mulesoft/mule-module-jpa. Опять нет подробностей о конфигурации entityManager. Также заметил, что информация maven, похоже, устарела с тем, что Studio поместит в maven-mule-plugin для версии 1.2.0 mule-module-jpa, которую Studio установит через сайт обновления mule.
Затем я просмотрел тест в источнике mule-module-jpa по адресу https://github.com/mulesoft/mule-module-jpa/tree/master/src/test/resources, чтобы узнать, смогу ли я придумать решение.
Используя это, я получил Studio и / или maven для компиляции небольшого приложения mule с использованием модуля, но он не начнет выдавать исключение Caused by: java.lang.ClassNotFoundException: org.hibernate.ejb.HibernatePersistence с основной причиной, вызванной: java .lang.NoClassDefFoundError: org / hibernate / ejb / HibernatePersistence
Мои maven deps действительно включают соответствующий материал Hibernate, и я вижу, что банки включены в выходной каталог при работе в студии. Но загрузчик классов mule, похоже, не может их найти ... или я не знаю, что нужно.
Я пробовал несколько комбинаций версий Hibernate и Spring-orm и в настоящее время использую последнюю из них:
<spring.version>4.0.0.RELEASE</spring.version>
<hibernate.version>4.2.2.Final</hibernate.version>
Соответствующие части моей помпы выглядят так:
<dependencies>
...
<dependency>
<groupId>org.mule.modules</groupId>
<artifactId>mule-module-jpa</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator-annotation-processor</artifactId>
<version>4.1.0.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
<plugins>
...
<plugin>
<groupId>org.mule.tools</groupId>
<artifactId>maven-mule-plugin</artifactId>
<version>1.9</version>
<extensions>true</extensions>
<configuration>
<copyToAppsDirectory>true</copyToAppsDirectory>
<inclusions>
<inclusion>
<groupId>org.mule.modules</groupId>
<artifactId>mule-module-jpa</artifactId>
</inclusion>
</inclusions>
</configuration>
</plugin>
</plugins>
А моя простая конфигурация мула выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<mule version="CE-3.4.0"
xmlns:http="http://www.mulesoft.org/schema/mule/http"
xmlns:jpa="http://www.mulesoft.org/schema/mule/jpa"
xmlns="http://www.mulesoft.org/schema/mule/core"
xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
http://www.mulesoft.org/schema/mule/jpa http://www.mulesoft.org/schema/mule/jpa/1.0/mule-jpa.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
">
<spring:beans>
<spring:bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<spring:property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<spring:property name="url" value="jdbc:mysql://localhost:3306/test"/>
<spring:property name="username" value="XXXX"/>
<spring:property name="password" value="XXXX"/>
</spring:bean>
<spring:bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<spring:property name="dataSource" ref="datasource"/>
<spring:property name="jpaVendorAdapter">
<spring:bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<spring:property name="showSql" value="true"/>
<spring:property name="generateDdl" value="false"/>
<spring:property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
</spring:bean>
</spring:property>
</spring:bean>
</spring:beans>
<jpa:config name="Java_Persistence_API" entityManagerFactory-ref="entityManagerFactory" doc:name="Java Persistence API"/>
<flow name="jpa_test2Flow1" doc:name="jpa_test2Flow1">
<http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="query" doc:name="HTTP"/>
<logger level="INFO" doc:name="Logger"/>
<jpa:find config-ref="Java_Persistence_API" entityClass="domain.Dog" id-ref="#[message.payload.name]" doc:name="Java Persistence API"/>
</flow>
</mule>
Полное исключение, которое я получаю:
Я начинаю думать, что этот модуль не готов к использованию, несмотря на то, что он доступен как облачный коннектор изнутри студии?
просто подумал, mule уже включает несколько jar-файлов спящего режима, включая hibernate-core и hibernate-jpa. ошибка может быть вызвана конфликтом. попробуйте проверить, находится ли класс, который не найден, уже в одной из этих банок.