2014-05-06 54 views
2

我有一個小型的教育項目。 JPA,Servlet的JSP。現在我想用PersistanceUnit註釋:PersistanceUnit註釋不注入

public class UsersListServlet extends HttpServlet { 

    @PersistenceUnit 
    private EntityManagerFactory emf; 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 

     EntityManager em = null; 
     try { 
      em = emf.createEntityManager(); 

      //query for all the persons in database 
      List persons = em.createQuery("select u from Users u").getResultList(); 
      request.setAttribute("usersList",persons); 

      //Forward to the jsp page for rendering 
      request.getRequestDispatcher("UsersList.jsp").forward(request, response); 
     } catch (Exception ex) { 
      throw new ServletException(ex); 
     } finally { 
      //close the em to release any resources held up by the persistebce provider 
      if(em != null) { 
       em.close(); 
      } 
     } 
     response.setContentType("text/html;charset=UTF-8"); 
    } 

但我看到NPE時嘗試emf.createEntityManager(); 我persistance.xml:

<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"> 
    <persistence-unit name="AdressBookPU"> 
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> 
    <jta-data-source>jdbc/__adressbook</jta-data-source> 
    <class>com.prokopenko.adressbook.entity.Users</class> 
    <class>com.prokopenko.adressbook.entity.MobilePhone</class> 
    </persistence-unit> 
</persistence> 

它是一個Maven項目和persistance.xml位於的src/main /資源/ META-INF(如j2ee7教程)。 UPDATE 嘗試:

@PersistenceContext(unitName = "AdressBookPU") 
private EntityManager em; 

@PersistenceUnit(unitName="AdressBookPU") 
private EntityManagerFactory emf; 
+0

嘗試添加@PersistenceUnit(name =「AdressBookPU」)並且不通過EMF訪問。製作你的私有var EntityManager並直接使用。希望能幫助到你。 – onesixtyfourth

+0

我更新我的問題。 NPE ... – bearhunterUA

+0

是'UsersListServlet'注入還是隻是一個普通類? – Priyesh

回答

0

哪個容器您使用的?你有沒有在這個容器中定義你的jta-data-source(jdbc/__ adressbook)?

+0

是的,我發現問題在Tomcat和現在Im配置它,thx – bearhunterUA