Я пытаюсь использовать EMF Texo в Glassfish 4, но когда я хочу, чтобы инициализировать EntityManagerProvider я получаю ошибку:Glassfish 4 с EMF TEXO - JPA Нет живучесть провайдер
javax.persistence.PersistenceException: No Persistence provider for EntityManager named HelloTexo
Я пытался реализовать учебник TEXO найдено here. Разница заключается в том, что я хочу, чтобы работать на 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>
Я создал этот файл автоматически путем добавления JPA Project Facet для моего проекта с Eclipse. Соединение с базой данных является успешным. Я попытался переместить persistence.xml в WEB-INF/classes/META-INF /, но я все равно получаю ту же ошибку.
Любая идея, что может вызвать ошибку? Я застрял здесь уже несколько дней ... Я действительно надеюсь, что кто-то сможет дать мне идее.
Спасибо! Ваше замечание относительно конфликта загрузчика классов решило проблему. Я удалил все jpa-реализации jars из WEB-INF/lib и прокомментировал тег. Для тех, у кого проблемы с Texo ... Я также удалил из Glassfish все текс-банки и просто сохранил их в своей папке WEB-INF/lib. –
Monica