добрый день ! возник такой вот вопрос - как заставить работать связку
Tomcat + EclipseLink (ORM) ? без спринга ! Помогите разобраться !
ошибка в сервлете при вызове
em = emf.createEntityManager(); - emf = null !
не видит Tomcat что есть PersistenceUnit
что есть :
tomcat - servlet - model bean - mysql
Entity созданный по таблице :
| Код |
@Entity @Table(name = "USER", catalog = "db", schema = "") @XmlRootElement @NamedQueries({....}) public class User implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Basic(optional = false) @Column(name = "id", nullable = false) private Integer id; ....
get set }
|
сервлет
| Код |
WebServlet(name = "ListPersonServlet", urlPatterns = {"/ListPersonServlet"}) public class ListPersonServlet extends HttpServlet {
@PersistenceUnit(unitName="WebPU" , name="persistence/em") private EntityManagerFactory emf;
....
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
.... EntityManager em = null; try { List persons = Collections.EMPTY_LIST; em = emf.createEntityManager(); persons = em.createNamedQuery("SELECT t FROM User t").getResultList();
....
|
в em = emf.createEntityManager(); - emf = null !
persistence
| Код |
<?xml version="1.0" encoding="UTF-8"?> <persistence version="2.0" xmlns="http://java.sun.com/xml/ns/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"> <persistence-unit name="WebPU" transaction-type="RESOURCE_LOCAL"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider> <class>model.User</class> <exclude-unlisted-classes>false</exclude-unlisted-classes> <properties> <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/db"/> <property name="javax.persistence.jdbc.password" value="123456"/> <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="eclipselink.session.customizer" value="util.EclipseLinkSessionCustomizer" /> </properties> </persistence-unit> </persistence>
|
EclipseLinkSessionCustomizer
| Код |
import org.eclipse.persistence.config.SessionCustomizer; import org.eclipse.persistence.sessions.JNDIConnector; import org.eclipse.persistence.sessions.Session;
public class EclipseLinkSessionCustomizer implements SessionCustomizer{
@Override public void customize(Session session) throws Exception { JNDIConnector connector = (JNDIConnector) session.getLogin().getConnector(); connector.setLookupType(JNDIConnector.STRING_LOOKUP); } }
|
|