我遇到了JBoss 7.02.Final的问题。我正在从JBoss5.1GA移植一个项目,并且(在查找中进行大量重写以支持EE6)我在类路径上注册Eclipselink时遇到问题。我一直在搜索,我看到几个帖子说这个问题已经解决,但我似乎无法找到一个有效的例子。
因为我是EE6开发的新手,所以我做错事的可能性很大。
耳朵构建如下
- ProductionEE6
./lib/eclipselink2.*.jar
./lib/javax.persistence.jar
. . .
ProductionEJB.jar
. . .
Production.war
我的persistence.xml是:
<?xml version="1.0" encoding="UTF-8"?>
<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 persistence_2_0.xsd">
<persistence-unit name="production" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<non-jta-data-source>java:/ProductionDS</non-jta-data-source>
<class><!-- entities --></class>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
<property name="eclipselink.target-server" value="JBoss"/>
<!-- A few other properties here -->
</properties>
</persistence-unit>
</persistence>
一切都很好,我看到数据源,我通过安全性(通过自定义DatabaseModule,所以我的数据源肯定很好),当我最终调用EJB时,我看到以下错误:
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named production
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69) [hibernate-jpa-2.0-api-1.0.1.Final.jar:1.0.1.Final]
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47) [hibernate-jpa-2.0-api-1.0.1.Final.jar:1.0.1.Final]
at com.danielbchapman.production.entity.DelegateInstance.getEm(DelegateInstance.java:67) [ProductionEJB.jar:]
at com.danielbchapman.production.entity.EntityInstance.getEm(EntityInstance.java:39) [ProductionEJB.jar:]
at com.danielbchapman.production.beans.OptionsDao.<init>(OptionsDao.java:20) [ProductionEJB.jar:]
... 94 more
关于这一点,我没有使用JTA DataSource,所以我一直在手动处理事务。此调用是上面的“DelegateInstance”,其中包含以下代码:(在这种情况下,persistenceUnitId为“production”。)
/**
* @return an instance of the entity manager if it isn't there.
*/
public EntityManager getEm()
{
if(manager == null)
{
manager = Persistence.createEntityManagerFactory(getPersistenceUnitId())
.createEntityManager();
}
return manager;
}
让我最担心的是在堆栈上看到这个: [hibernate-jpa-2.0-api-1.0.1.Final.jar:1.0.1.Final] 显然我没有正确加载EclipseLink。我这里的想法已经不多了,所以如果有人能提供帮助,我会非常感激。
答案 0 :(得分:1)
EclipseLink 2.4现在可以与JBoss AS 7.1.1一起使用 - 经过测试和工作 - 第
答案 1 :(得分:0)
根据http://dev.dzhokanov.com/?p=8:
此外,这个论坛帖子支持我的假设 - http://community.jboss.org/message/623759#623759
线程中,Scott Marlow(JBoss 7 / JPA首席开发人员)承认:
“您不是唯一一个想要使用EclipseLink的人,但还没有准备好。 “
据我所知,EclipseLink JPA实现中存在一些不兼容性,需要进行调整才能与JBoss 7兼容。因此,我不认为Jboss 7-EclipseLink会很快支持。
因此可能会出现这种情况,目前根本不可能。但如果你找到了办法,我会对它很感兴趣。