我正在尝试在 Glassfish 4 中使用EMF Texo,但是当我想初始化 EntityManagerProvider 时出现错误:
javax.persistence.PersistenceException:没有名为 HelloTexo 的 EntityManager 的持久性提供程序
我尝试实现此处找到的 Texo 教程。不同之处在于我希望它在 Glassfish 4 上运行。
贝娄是我的代码:
网页.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 时,出现上述错误。
持久性.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>
我通过将 JPA Project Facet 从 Eclipse 添加到我的项目来自动创建此文件。数据库连接成功。我试图将 persistence.xml 移动到 WEB-INF/classes/META-INF/ 但我仍然得到同样的错误。
知道什么可能导致错误吗?我被困在这里几天了......我真的希望有人能给我一个想法。