3

我正在尝试在 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/ 但我仍然得到同样的错误。

知道什么可能导致错误吗?我被困在这里几天了......我真的希望有人能给我一个想法。

4

1 回答 1

0

可能存在类加载器冲突。Glassfish4 在容器库路径中包含 EclipseLink。尝试从文件夹中删除显式<provider>标记和任何 jpa 实现 jar 。WEB-INF/lib标准的 Glassfishjavax.persistence.jar应该是您所需要的。

于 2013-08-24T05:42:34.150 回答