Постоянная проблема развертывания - PullRequest
0 голосов
/ 21 августа 2010

У меня есть проект гибернации, в котором используется JPA.

Содержимое моего файла persistence.xml выглядит следующим образом:

<persistence version="2.0" 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">
  <persistence-unit name="Demo-PU" transaction-type="RESOURCE_LOCAL">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <non-jta-data-source>java:/DemoDS</non-jta-data-source> 
    <class>com.demo.framework.entity.ReportDefinitionEntity</class> 
    <properties>

<!--  Database connection -->
  <property name="hibernate.connection.url" value="jdbc:mysql://192.168.9.110:3306/demoDB" />
  <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver" />
  <property name="hibernate.connection.username" value="root" />
  <property name="hibernate.connection.password" value="root" />

 <!--  Hibernate dialect  -->
  <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect" />
<!--  Output goodies
  -->
  <property name="hibernate.query.jpaql_strict_compliance" value="true" />
  <property name="hibernate.format_sql" value="true" />
  <property name="hibernate.use_sql_comments" value="false" />
   <!--  Cache
  -->
  <property name="hibernate.jdbc.batch_versioned_data" value="true" />
  <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider" />

    </properties>
  </persistence-unit>
</persistence>

Теперь, когда я запускаю его с помощью Eclipse, у меня нет проблем, но при развертывании его в Jboss я получаю следующую ошибку:

ОШИБКА [AbstractKernelController] Ошибка установка для запуска: Имя = persistence.unit: UnitName = # Демо-PU состояние = Создать java.lang.ClassCastException: org.hibernate.ejb.HibernatePersistence не может быть приведен к javax.persistence.spi.PersistenceProvider

А вот список Jar, который у меня есть

activation.jar
antlr-2.7.6.jar
asm-attrs.jar
asm.jar
cglib-2.1.3.jar
commons-collections-2.1.1.jar
commons-logging-1.1.jar
dom4j-1.6.1.jar
ehcache-1.2.3.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
hibernate-tools.jar
hibernate3.jar
javassist.jar
javax.persistence.jar
jdbc2_0-stdext.jar
jta.jar
mysql-connector-java-5.0.5-bin.jar
xml-writer.jar

Как я могу решить эту проблему?

1 Ответ

8 голосов
/ 21 августа 2010

ClassCastException вызвано наличием двух копий API javax.persistence в вашей системе (одна в общем загрузчике классов, предоставляемая JBoss, и одна в вашем приложении). При работе на JBoss вы просто не должны предоставлять этот API в своем приложении, не упаковывайте его.

Кстати, кажется, вы используете JPA 2.0 persistence.xml, но я не уверен, что вы используете реализацию Hibernate в JPA 2.0 (на самом деле, вы, кажется, используете довольно старую версию, так как я могу см commons-logging.jar). Вы, вероятно, должны исправить это, то есть использовать версию 1.0 persistence.xml.

На самом деле, вы, скорее всего, должны использовать другое persistence.xml при работе на JBoss (используя менеджер сущностей JTA и jta-data-source). И кажется странным смешивать использование источника данных и встроенного пула соединений Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...