1 pièce(s) jointe(s)
Tomcat + JPA + ServletContextListener
Salut !!
Débutant en JPA, j'essaie de mettre dans le contexte de l'application un EntityManagerFactory qui devrait lire le fichier persistence.xml
Ci-dessous le code du listener :
Code:
1 2 3 4 5 6 7 8 9 10 11
| @WebListener
public class GuestListener implements ServletContextListener {
private EntityManagerFactory emf;
@Override
public void contextInitialized(ServletContextEvent servletContextEvent){
ServletContext servletContext = servletContextEvent.getServletContext();
emf = Persistence.createEntityManagerFactory("myJPA");
servletContext.setAttribute("emf", emf); |
Ici, le code du fichier de persistence :
Code:
1 2 3 4 5
| <persistence-unit name="myJPA" transaction-type="RESOURCE_LOCAL">
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
<non-jta-data-source>java:comp/env/jdbc/duoMySqlDataSource</non-jta-data-source>
<class>org.guest.Guest</class>
</persistence-unit> |
Ici, code du web.xml :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <listener>
<listener-class>org.guest.GuestListener</listener-class>
</listener>
<servlet>
<display-name>GuestServlet</display-name>
<servlet-name>GuestServlet</servlet-name>
<servlet-class>org.guest.GuestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GuestServlet</servlet-name>
<url-pattern>/GuestServlet</url-pattern>
</servlet-mapping>
<resource-ref>
<description>Ressource JDBC de l'application</description>
<res-ref-name>jdbc/duoMySqlDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref> |
Le problème c'est lors du chargement de l'application. Le listener ne voit pas le fichier de persistance :
javax.persistence.PersistenceException: No Persistence provider for EntityManager named myJPA
Je sais pas ce qui pose problème. Si vous avez une petite idée ?
Merci