Tenho um sistema que se conecta via JPA em uma base que funciona tudo bem quando utilizado via console, mas não na web. Já não estou entendendo nada disso o.O, estou utilizando com tomcat 6.0
meu persistence.xml não está errado, senão não me traria resultados no console:
persistence.xml
<persistence 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 persistence_1_0.xsd" version="1.0">
<persistence-unit name="noticias" transaction-type="RESOURCE_LOCAL">
<provider>oracle.toplink.essentials.PersistenceProvider</provider>
<class>modelo.noticias.Categoria</class>
<class>modelo.noticias.Equipe</class>
<class>modelo.noticias.Funcionario</class>
<class>modelo.noticias.Noticia</class>
<class>modelo.noticias.NoticiaPortal</class>
<class>modelo.noticias.Portal</class>
<class>modelo.noticias.Status</class>
<class>modelo.noticias.Banner</class>
<properties>
<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver"/>
<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/noticias"/>
<property name="toplink.jdbc.user" value="noticias"/>
<property name="toplink.jdbc.password" value="noticias"/>
</properties>
</persistence-unit>
</persistence>
resource/Noticia.java
package br.com.bb.direc.jpa.resources;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class Noticias {
protected EntityManagerFactory emf;
public EntityManagerFactory getEMF (){
emf = Persistence.createEntityManagerFactory("noticias");
return emf;
}
}
e eu capturo a conex no meu controle:
EntityManagerFactory emf;
private EntityManager em;
Query q;
Logging log = new Logging("Intranet");
public Controle(EntityManagerFactory resource){
this.emf = resource;
em = (EntityManager) emf.createEntityManager();
}
tudo funciona perfeitamente se eu realizar um teste via console:
static Controle dao = new Controle(new Noticias().getEMF());
public static void main(String ... args){
List<Status> lista = dao.getFromNamedQuery("Status.findAll", new ArrayList());
for (Status u : lista){
System.out.print(u.getId() + " - " + u.getNome() + "\n");
}
}
o resultado disso acima é:
1 - Em edição
2 - Pronto para publicação
3 - Liberada
4 - Cancelada
OK até aqui. Se eu tentar fazer isso em um scriplet:
<%
ListasNoticias ldao = new ListasNoticias();
request.setAttribute("listaStatus", ldao.getListaDeStatus());
%>
chamando este metodo:
static Controle dao = new Controle(new Noticias().getEMF());
public List<Status> getListaDeStatus(){
List<Status> lista = dao.getFromNamedQuery("Status.findAll", new ArrayList());
return lista;
}
eu ganho esse monstro:
GRAVE: Servlet.service() for servlet jsp threw exception
javax.persistence.PersistenceException: No Persistence provider for EntityManager named noticias
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:32)
at br.com.bb.direc.jpa.resources.Noticias.getEMF(Noticias.java:10)
at br.com.bb.direc.controle.noticias.ListasNoticias.<clinit>(ListasNoticias.java:14)
at org.apache.jsp.APPS.adm.noticias.nova_002dnoticia_jsp._jspService(nova_002dnoticia_jsp.java:68)
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:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
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 aldux.autenticacao.filtros.FiltroAutenticacao.doFilter(FiltroAutenticacao.java:58)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:128)
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:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:662)
05/10/2011 13:13:51 org.apache.catalina.core.ApplicationDispatcher invoke
GRAVE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
at org.apache.jsp._500_jsp._jspService(_500_jsp.java:79)
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:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
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:438)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:416)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:271)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
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:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:662)
05/10/2011 13:13:51 org.apache.catalina.core.StandardHostValve custom
GRAVE: Exception Processing ErrorPage[exceptionType=java.lang.Exception, location=/500.jsp]
org.apache.jasper.JasperException: java.lang.NullPointerException
at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
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:438)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:416)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:271)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
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:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at org.apache.jsp._500_jsp._jspService(_500_jsp.java:79)
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:374)
... 19 more
Alguma sugestão?