Вызов JPA / EclipseLink со страницы JSP с использованием Ajax - PullRequest
1 голос
/ 30 марта 2012

У меня есть следующий код:

index.jsp:

 <form name="f"  action="db/ajoutConducteur.jsp" method="post">
 <input type="text" pattern="\d{8}" required placeholder="Cin" name="cin" id="cin"> <br/>
 <input type="text"  required placeholder="Permis" name="permis" id="permis"><br/>
 <input type="text" pattern="\w{3,30}" required placeholder="Nom" name="nom" id="nom"><br/>
 <input type="text" pattern="\w{3,30}" required placeholder="Prenom" name="prenom"id="prenom"><br/>
 <input type="date" required name="date" pattern="\d{2}/\d{2}/\d{4}" placeholder="Naissance JJ/MM/AAAA" id="date"><br/>
 <input type="submit" value="AddConducteur">

add.jsp:

  <%
  String cin= "12345678";  //just for test
  String permis="pasencore";//just for test
  String nom="meme";//just for test
  String prenom="balala";//just for test



  Conducteur c=new Conducteur(cin, nom, prenom, new Date(), permis, new Date());
  EntityManagerFactory emf=Persistence.createEntityManagerFactory("googleApiPU");

  EntityManager  em=emf.createEntityManager();
  em.getTransaction().begin();
  em.persist(c);
  em.getTransaction().commit();


 %>

(протестировал этот код в приложении Swing, и он работает с JPA, ...) Я назвал страницу прямо в браузере, вот трассировка стека org.apache.jasper.JasperException: произошло исключение при обработке страницы JSP /db/ajoutConducteur.jsp в строке 41

38: Conducteur c=new Conducteur(cin, nom, prenom, new Date(), permis, new Date());
39: EntityManagerFactory emf=Persistence.createEntityManagerFactory("googleApiPU");
40: 
41: EntityManager  em=emf.createEntityManager();
42:   em.getTransaction().begin();
43:   em.persist(c);
44:   em.getTransaction().commit();


Stacktrace:
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:412)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:546)
    at com.sun.faces.application.view.JspViewHandlingStrategy.executePageToBuildView(JspViewHandlingStrategy.java:364)
    at com.sun.faces.application.view.JspViewHandlingStrategy.buildView(JspViewHandlingStrategy.java:154)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:100)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:410)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Thread.java:722)
Caused by: javax.servlet.ServletException: java.lang.NoClassDefFoundError: Ltrage;
    at org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:865)
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:794)
    at org.apache.jsp.db.ajoutConducteur_jsp._jspService(ajoutConducteur_jsp.java:111)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    ... 28 more
Caused by: java.lang.NoClassDefFoundError: Ltrage;
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2308)
    at java.lang.Class.getDeclaredField(Class.java:1897)
    at org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getDeclaredField(PrivilegedAccessHelper.java:233)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.initializeCanonicalMetamodel(EntityManagerSetupImpl.java:2562)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.getMetamodel(EntityManagerSetupImpl.java:2531)
    at org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:484)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getDatabaseSession(EntityManagerFactoryDelegate.java:188)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:277)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:290)
    at org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:268)
    at org.apache.jsp.db.ajoutConducteur_jsp._jspService(ajoutConducteur_jsp.java:99)
    ... 31 more
Caused by: java.lang.ClassNotFoundException: trage
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    ... 43 more

Редактировать

проблема возникает здесь:

@Column(name = "KILOM\u00c9TRAGE", nullable = false)
private double kilométrage;

сущности создаются сетевыми компонентами из базы данных ... наконец, проблема связана с БД ..

Ответы [ 2 ]

0 голосов
/ 30 марта 2012

Из представленных сведений я предполагаю, что вы используете ту же конфигурацию для среды Java EE. Вместо этого вы должны использовать JTA, который управляется контейнером.

Обычно в Java используется SE RESOURCE_LOCAL, а в среде EE JTA.

Кроме того, при просмотре трассировки стека возникает проблема с загрузкой классов. Можно проверить, что Ltrage и другие классы включены в classpath.

0 голосов
/ 30 марта 2012

Попробуйте поместить свой код в блок try catch , как показано ниже:

try {
 Conducteur c=new Conducteur(cin, nom, prenom, new Date(), permis, new Date());
 EntityManagerFactory emf=Persistence.createEntityManagerFactory("googleApiPU");//EM
 ConducteurJpaController cjc=new ConducteurJpaController(emf);// JPA controller
 cjc.create(c);//persist
}
catch(Exception e)
{
 e.printStackTrace();
}

, чтобы увидеть подробный журнал в консоли.

В противном случае вы можетевыполните отладку step by step, чтобы узнать строку, которая является источником проблемы.

Надеюсь, что поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...