JPA Toplink com datasource no Tomcat

9 respostas
A

Estou utilizando JPA com provedor Toplink, porém não estou conseguindo ler o datasource criado pelo Tomcat.

Acredito que seja erro no arquivo persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.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_1_0.xsd">
  <persistence-unit name="classionlinePU" transaction-type="RESOURCE_LOCAL">
    <provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
    <class>persistence.Categoria</class>
    <class>persistence.SubCategoria</class>

    <jta-data-source>java:/jdbc/Teste</jta-data-source>
    
    <properties/>

  </persistence-unit>
</persistence>

Se alguém puder me ajudar, agradeço

[ ]s

9 Respostas

francisco.rodrigues

O Tomcat não tem suporte para EJB3/JPA. Vc precisa usar um dos seguintes servidores de aplicação: JBoss, JOnAS, Glassfish/Sun one 9

Só para adicionar, o toplink é o provedor default do glassfish.
https://glassfish.dev.java.net/

A

Obrigado pela dica.

chicocx

Muito pelo contrário!
é totalmente possível utilizar JPA com tomcat.

configure o datasource no server.xml e faça referencia a ele pelo persistence.xml. É o que uso inclusive.

Mas mesmo assim envie o stack trace com o erro. Talvez eu possa te ajudar melhor.

mcbarsotti

chicocx:
Muito pelo contrário!
é totalmente possível utilizar JPA com tomcat.

configure o datasource no server.xml e faça referencia a ele pelo persistence.xml. É o que uso inclusive.

Mas mesmo assim envie o stack trace com o erro. Talvez eu possa te ajudar melhor.

cara, tem como vc postar um exemplo de como ficaria o seu server.xml e o seu persistence.xml???

Obrigado,

Danilo Barsotti

A

Segue o stack trace.

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: Exception forwarding for name welcome: javax.servlet.ServletException: 
Exception Description: An exception was thrown while processing persistence.xml from URL: file:/home/root/worknetbeans/classionline/build/web/WEB-INF/classes/META-INF/persistence.xml
Internal Exception: 
(1. cvc-complex-type.2.4.a: Invalid content was found starting with element 'jta-data-source'. One of '{"http://java.sun.com/xml/ns/persistence":class, "http://java.sun.com/xml/ns/persistence":exclude-unlisted-classes, "http://java.sun.com/xml/ns/persistence":properties}' is expected.)
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.ServletException: Exception forwarding for name welcome: javax.servlet.ServletException: 
Exception Description: An exception was thrown while processing persistence.xml from URL: file:/home/root/worknetbeans/classionline/build/web/WEB-INF/classes/META-INF/persistence.xml
Internal Exception: 
(1. cvc-complex-type.2.4.a: Invalid content was found starting with element 'jta-data-source'. One of '{"http://java.sun.com/xml/ns/persistence":class, "http://java.sun.com/xml/ns/persistence":exclude-unlisted-classes, "http://java.sun.com/xml/ns/persistence":properties}' is expected.)
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:66)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.jsp.JspException: Exception forwarding for name welcome: javax.servlet.ServletException: 
Exception Description: An exception was thrown while processing persistence.xml from URL: file:/home/root/worknetbeans/classionline/build/web/WEB-INF/classes/META-INF/persistence.xml
Internal Exception: 
(1. cvc-complex-type.2.4.a: Invalid content was found starting with element 'jta-data-source'. One of '{"http://java.sun.com/xml/ns/persistence":class, "http://java.sun.com/xml/ns/persistence":exclude-unlisted-classes, "http://java.sun.com/xml/ns/persistence":properties}' is expected.)
	org.apache.struts.taglib.logic.ForwardTag.doForward(ForwardTag.java:125)
	org.apache.struts.taglib.logic.ForwardTag.doEndTag(ForwardTag.java:105)
	org.apache.jsp.index_jsp._jspx_meth_logic_forward_0(index_jsp.java:83)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:58)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

note The full stack trace of the root cause is available in the Apache Tomcat/5.5.17 logs.
Apache Tomcat/5.5.17
francisco.rodrigues

Ops!!! Eu pensei que vc tava usando EJB3, foi mal…

Francisco

D

Cara, eu aprendi pelo livro do autor Edson Gonçalves, Desenvolvendo Aplicações Web com NetBeans IDE 5.5, a fazer no tomcat 5.5 da seguinte maneira:

Você configura no persistence.xml da seguinte maneira:



java:comp/env/jdbc/livraria

sua classe

value="seu.pacote.JPAToplinkSessionCustomizationUtil"/>


E cria a classe customizada para gerenciar as sessões JNDI, se não me falha a memória:

public class JPAToplinkSessionCustomizationUtil
        implements SessionCustomizer {
    
    public void customize(Session session) throws Exception{
        JNDIConnector connector =
 				(JNDIConnector)session.getLogin( ).getConnector( );
        connector.setLookupType(JNDIConnector.STRING_LOOKUP);
    }
    
    
}
chicocx

Desculpe-me a demora … mas no link abaixo existe um exemplo:

http://javacerrado.blogspot.com/2007/08/propriedades-da-jpa.html

t+

gabrielivate

[quote=djemacao]Cara, eu aprendi pelo livro do autor Edson Gonçalves, Desenvolvendo Aplicações Web com NetBeans IDE 5.5, a fazer no tomcat 5.5 da seguinte maneira:

Você configura no persistence.xml da seguinte maneira:



java:comp/env/jdbc/livraria

sua classe

value="seu.pacote.JPAToplinkSessionCustomizationUtil"/>


E cria a classe customizada para gerenciar as sessões JNDI, se não me falha a memória:

public class JPAToplinkSessionCustomizationUtil
        implements SessionCustomizer {
    
    public void customize(Session session) throws Exception{
        JNDIConnector connector =
 				(JNDIConnector)session.getLogin( ).getConnector( );
        connector.setLookupType(JNDIConnector.STRING_LOOKUP);
    }
    
    
}

como eu uso essa classe customizada..

Criado 7 de agosto de 2007
Ultima resposta 21 de jan. de 2008
Respostas 9
Participantes 6