Glassfish 4 with EMF Texo - JPA No persistence provider

时间:2013-08-23 11:43:17

标签: java eclipse jpa glassfish glassfish-4

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

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

1 个答案:

答案 0 :(得分:0)

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