2013-03-27 7 views
0

Я пытаюсь использовать JSP, создав простой динамический веб-проект Eclipse.Не удалось получить EntityManagerFactory для unitName null

Я создал базовый JSP и форму, которая создает параметризованный запрос к HttpServlet. Этот сервлет должен просто использовать entity-компонент для хранения данных в базе данных.

Я использовал отображение через аннотации.

Это ссылающаяся часть моего JSP:

<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> 

... это основная часть моей фасоли:

@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 

и теперь - в конце концов - это мой очень простой сервлет :

@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!"); 

    } 
} 

[Update] Мой persistence.xml

<?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>  

Проблема: Я связала разъем MySql и создал таблицы, но все время, когда я призывающую к entityManagerFactory.createEntityManager() это сбой с сообщением об ошибке:

Unable to retrieve EntityManagerFactory for unitName null 

Ну, кроме того, что я должен использовать другую структуру для разделения модели (bean) из вида (jsp):

В чем проблема?

+0

Были ли entityManagerFactory инициализированы? –

+0

Включите в файл persistence.xml вопрос. – Perception

+0

опубликуйте содержимое persistence.xml, и я также думаю, что вы должны указать имя элемента @PersistenceUnit. – OQJF

ответ

0
  1. Где находится файл persistence.xml?

  2. Возможно, у проекта неправильная структура? Является ли EJB в своей отдельной части? Попробуйте упаковать части проекта using CDI или в Enterprise Application.

Попробуйте создать «New Enterprise Project» в любой программе, в которой вы пишете Java и посмотреть, что автоматически генерируется, если вы не уверены в том, что я говорю.

+0

[Ссылка на это изображение] (http://docs.oracle.com/javaee/5/tutorial/doc/figures/overview-applicationModule.gif) –

Смежные вопросы