2013-03-27 4 views
0

간단한 Eclipse 동적 웹 프로젝트를 만들어 JSP를 사용하려고합니다.unitName null EntityManagerFactory를 검색 할 수 없습니다.

기본 JSP와 HttpServlet에 매개 변수화 된 요청을 생성하는 양식을 만들었습니다. 이 서블릿은 엔티티 bean을 사용하여 데이터를 데이터베이스에 저장합니다.

주석을 통해 매핑을 사용했습니다.

내 JSP의 호출 일부입니다 - 마지막으로 -이 내 아주 간단한 서블릿이

@Entity 
@Table(name="CUSTOMERS") 
public class CustomerBean implements Serializable { 

@Id 
@Column(name = "CUSTOMER_ID") 
private Long id; 

@Column(name = "FIRST_NAME") 
private String firstname; 

@Column(name = "LAST_NAME") 
private String lastname; 

public CustomerBean() { 
    this.firstname = ""; 
    this.lastname = ""; 
} 

    // Getters & Setters 

지금 :

<form action="persistencedemo" method="get"> 
    <input type="submit" name="submit" value='ok'/> 
    <input type="hidden" name="firstName" value='<jsp:getProperty property="firstname" name="newCustomer"/>' /> 
    <input type="hidden" name="lastName" value='<jsp:getProperty property="lastname" name="newCustomer"/>' /> 
</form> 

...이 내 빈의 메인 섹션입니다 :

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


    private static final long serialVersionUID = 1L; 
    @PersistenceUnit 
    private EntityManagerFactory entityManagerFactory; 
    @Resource 
    private UserTransaction userTransaction; 

    @Override 
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
      throws ServletException, IOException { 


     EntityManager em = entityManagerFactory.createEntityManager(); 
     CustomerBean c1 = new CustomerBean(); 
     CustomerBean c2 = new CustomerBean(); 

     c1.setFirstname("My"); 
     c1.setLastname("Self"); 
     c1.setId(3L); 

     c2.setId(4L); 
     c2.setFirstname(req.getParameter("firstName")); 
     c2.setLastname(req.getParameter("lastName")); 

     try { 
      userTransaction.begin(); 
      em.persist(c1); 
      em.persist(c2); 
      userTransaction.commit(); 
     } 
     catch (Exception e) { 
      e.printStackTrace(); 
     } 


     resp.getWriter().print("Updated database!"); 

    } 
} 

[업데이트] 내 persistence.xml을

01 23,516,
<?xml version="1.0" encoding="UTF-8" ?> 
<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" 
version="2.0" xmlns="http://java.sun.com/xml/ns/persistence"> 
    <persistence-unit name="hello-world" transaction-type="RESOURCE_LOCAL"> 
    <class>com.jpa.PersistenceDemo</class> 
     <properties> 

      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/customerdb" /> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
      <property name="javax.persistence.jdbc.user" value="customeruser" /> 
      <property name="javax.persistence.jdbc.password" value="customerpass" /> 
     </properties> 
    </persistence-unit> 
</persistence>  

문제는 :

Unable to retrieve EntityManagerFactory for unitName null 

: 나는 오류 메시지와 함께 충돌 나는 entityManagerFactory.createEntityManager을 (호출하고 모든 시간)를 MySQL의 커넥터를 연결하고 테이블을 생성하지만, 글쎄, 모델 (bean)을 뷰 (jsp)에서 분리하기 위해 다른 구조를 사용해야한다는 사실 외에도 :

여기서 어떤 문제가 발생합니까?

+0

은 entityManagerFactory가 초기화 되었습니까? –

+0

persistence.xml 파일을 질문에 포함하십시오. – Perception

+0

persistence.xml의 내용을 게시하고 @PersistenceUnit의 단위 이름을 지정해야한다고 생각합니다. – OQJF

답변

0
  1. persistence.xml 파일의 위치는 어디입니까?

  2. 아마도 프로젝트의 구조가 잘못 되었습니까? EJB는 별도의 부분입니까? using CDI 프로젝트의 부분을 포장하거나 Enterprise Application에 포장하십시오.

Java를 작성하는 프로그램에서 "새 엔터프라이즈 프로젝트"를 만들고 내가 말하는 것에 대해 확실하지 않은 경우 자동으로 생성되는 것을보십시오.

+0

[이 그림을 참조하십시오] (http://docs.oracle.com/javaee/5/tutorial/doc/figures/overview-applicationModule.gif) –

관련 문제