2017-08-12 110 views
0

我正在使用JPA和EJB創建Java EE應用程序。在@PersistenceContext(unitName =「airline」)中的問題是當我評論這一行時,它給了我錯誤null_pointer_exception,並且當它在服務器上運行代碼時得到以下錯誤。@PersistenceContext EntityManager(JPA)

Severe: Exception while preparing the app : Could not resolve a persistence unit corresponding to the persistence-context-ref-name [com.airline.service.Test2EJBService/entityManager] in the scope of the module called [Test2]. Please verify your application. 

我的課:

AddPassenger2

@WebServlet(name = "AddPassenger2", urlPatterns = {"/AddPassenger2"}) 
public class AddPassenger2 extends HttpServlet { 


    @EJB 
    Test2EJBService bService; 


    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     try (PrintWriter out = response.getWriter()) { 

      out.println("<!DOCTYPE html>"); 
      out.println("<html>"); 
      out.println("<head>"); 
      out.println("<title>Servlet AddPassenger</title>"); 
      out.println("</head>"); 
      out.println("<body>"); 
      out.println("<h4> Hello Every body in Test2 :) <h4>"); 
      out.println("</body>"); 
      out.println("</html>"); 
     } 
    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 

     Passenger passenger = new Passenger(); 

     passenger.setFirstName("Loai"); 
     passenger.setLastName("Amr"); 

     Calendar cal = Calendar.getInstance(); 
     cal.set(Calendar.YEAR, 1996); 
     cal.set(Calendar.MONTH, 9); 
     cal.set(Calendar.DAY_OF_MONTH, 30); 
     Date dob = cal.getTime(); 

     passenger.setDob(dob); 
     passenger.setGender(Gender.Male); 
     passenger.setFlightClass(FlightClass.Couch);  

     bService.addPassenger(passenger); 

     System.out.println("First name : " + passenger.getFirstName()); 

    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    public String getServletInfo() { 
     return "Short description"; 
    }// </editor-fold> 

} 

我EJB容器:

@Stateless 
@LocalBean 
public class Test2EJBService { 

// @PersistenceUnit(unitName = "Test2PU") 
    @PersistenceContext(unitName = "airline") 
    private EntityManager entityManager; 

    public void addPassenger(Passenger passenger) { 
//  EntityManager createEntityManager; 
//  createEntityManager = Persistence.createEntityManagerFactory("Test2PU").createEntityMana‌ger(); 
     entityManager.persist(passenger); 
     System.out.println("Done"); 
    } 
} 

和persistence.xml中

<?xml version="1.0" encoding="UTF-8"?> 
<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="Test2PU" transaction-type="JTA"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>jdbc/airline</jta-data-source> 
    <exclude-unlisted-classes>false</exclude-unlisted-classes> 
    <properties> 
     <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/> 
    </properties> 
    </persistence-unit> 
</persistence> 

enter image description here

可以任何身體幫助我花了3天在同一個錯誤,並不能解決它。

,並在這裏我們與我的數據庫連接: enter image description here

+0

類似的錯誤https://stackoverflow.com/questions/4167619/fixing-could-not-resolve -a-persistence-unit-errors-when-pu-is-specified-fo – pushStack

+0

不能這樣做,因爲它給了我異常:java.lang.NullPointerException –

回答

0

persistence-unit-namepersistence.xml文件還稱「Test2PU」而不是「航空公司」。驗證。此外,請確保您的連接池和JDBC資源在服務器上的名稱相同(即航空公司)

+0

我確保連接,你可以查看帖子中的圖片我爲它編輯。 –

+0

圖片並不完全說明我的意思。我希望連接池和JDBC資源配置位於您的glassfish服務器上,而不是netbeans或您的源代碼 –

+0

如果您堅持使用「Test2PU」作爲持久性單元名稱,那麼您應該擁有@PersistenceContext(unitName =「 Test2PU「)而不是@PersistenceContext(unitName =」airline「)。 –

相關問題