我正在尝试在Glassfish 4中使用EMF Texo,但是当我想初始化EntityManagerProvider时,我收到错误:
javax.persistence.PersistenceException:没有名为HelloTexo的EntityManager的持久性提供程序
我尝试实现了here找到的Texo教程。不同之处在于我希望它能在Glassfish 4上运行。
贝娄是我的代码:
的web.xml:
<listener>
<listener-class>texo.web.TexoContextListener</listener-class>
</listener>
<filter>
<filter-name>emFilter</filter-name>
<filter-class>org.eclipse.emf.texo.server.store.CurrentEntityManagerRequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>emFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
TexoContextListener.java
import javax.servlet.ServletContextListener;
import org.eclipse.emf.texo.server.service.ServiceModelPackageRegistry;
import org.eclipse.emf.texo.server.store.EntityManagerProvider;
import org.eclipse.emf.texo.test.model.base.identifiable.IdentifiableModelPackage;
public class TexoContextListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent arg0) {
ServiceModelPackageRegistry.getInstance().register(IdentifiableModelPackage.INSTANCE);
EntityManagerProvider.getInstance().setPersistenceUnitName("HelloTexo");
// initialize aggressively
EntityManagerProvider.getInstance().initialize();
}
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub
}
}
在调试中,当我尝试初始化()EntityManagerProvider时,我得到上面提到的错误。
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 http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="HelloTexo" transaction-type="JTA">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<jta-data-source>jdbc/__MySQLDataSource</jta-data-source>
</persistence-unit>
</persistence>
我通过从Eclipse中将JPA Project Facet添加到我的项目中自动创建了这个文件。与数据库的连接是成功的。我试图将persistence.xml移动到WEB-INF / classes / META-INF /但我仍然得到同样的错误。
知道可能导致错误的原因吗? 我现在被困在这里好几天了...我真的希望有人能给我一个想法。
答案 0 :(得分:0)
可能存在类加载器冲突。 Glassfish4在容器库路径中包含EclipseLink。尝试从<provider>
文件夹中删除明确的WEB-INF/lib
标记和任何jpa实现jar。应该只需要标准的Glassfish javax.persistence.jar
。