Olá pessoal,
faz teeempo que venho tentando fazer funcionar esta API!!!
Eu consigo fazer funcionar da maneira mais fácil! Instanciando diretamente o EntityManagerFactory mas não consigo nem a pau fazer funcionar com annotations peguei varios exemplos mas não vai!!!
Já estou quase desistindo! Alguem tem um exemplo 100% por favor para eu ver rodando e onde estou errando?!
[]s
Você está rodando em algum container?
Já tentei com TOMCAT
E também com o Netbeans que vem com o GlassFish, mas o EntityManager fica "NULL!"
E também tentei com o JBOSS e tb o entitymanager vem NULL
Devo estar errando algo besta por isso preciso de um exemplo funcionando
[]s
Como está o seu persistence.xml?
No JBoss, você criou o arquivo de configuração do seu data source?
No Glassfish você configurou suas conexões na administração?
Opa cara!
Vamo lá! Quero que funcione no JBOSS pra eu aprender passo-a-passo o Netbeans faz tudo sozinho…
Eu coloquei o seguinte arquivo no JBOSS --> "C:\Arquivos de programas\jboss-4.2.2.GA\server\default\deploy\systemmanager.xml"
peguei de um tutorial na net
<? xml version="1.0" encoding="UTF-8" ?>
<datasources>
<local-tx-datasource>
<jndi-name>jdbc/SystemManager</ jndi-name>
<connection-url>
jdbc:mysql://localhost:3306/SystemManager
</ connection-url>
<driver-class>com.mysql.jdbc.Driver</ driver-class>
<user-name>
sa
</ user-name>
<password>
root
</ password>
<min-pool-size>
5
</ min-pool-size>
<max-pool-size>
30
</ max-pool-size>
<idle-timeout-minutes>
1
</ idle-timeout-minutes>
<prepared-statement-cache-size>
32
</ prepared-statement-cache-size>
</ local-tx-datasource>
</ datasources>
E tenho minha classe que estou tentando conecatr com os annotations
[code]package sistema;
import javax.annotation.;
import javax.ejb.;
import javax.naming.;
import java.sql.;
import javax.persistence.*;
@Stateless
public class Conexao {
@PersistenceUnit(unitName="PU")
EntityManagerFactory emf;
public void testar(int custID) {
EntityManager em = emf.createEntityManager();
// OBject teste = em.createNamedQuery(" ");
}
}[/code]
E tenho meu 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="PU" transaction-type="JTA">
<jta-data-source>jdbc/SystemManager</jta-data-source>
<properties/>
</persistence-unit>
</persistence>
A aplicação aparece normalmente no Browser…quando tento conectar que acontece o seguinte erro
[quote]Caused by: java.lang.NullPointerException
at sistema.Conexao.testar(Conexao.java:16)
at org.apache.jsp.teste_jsp._jspService(teste_jsp.java:69)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
… 34 more
22:57:38,937 ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at sistema.Conexao.testar(Conexao.java:16)
at org.apache.jsp.teste_jsp._jspService(teste_jsp.java:69)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
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:654)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:442)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:115)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
at java.lang.Thread.run(Unknown Source)[/quote]
[]s
Aqui tem um exemplo de uma aplicação com JPA no JBoss.
Olá rcarneiro! Obrigado pelas respostas!!
Cara, eu baixei o exemplo de EJB que vc passou, e vi que o exempo esta dividido em 4 pastas, 3 projetos e um EAR…
Bom…estou entrando meio que sem saber o que fazer, não consigo nem colocar seu projeto para rodar, pq ele esta dividido em 4 partes, eu li sobre esse EAR mas naum entendi para que ele serve? Pode me explicar a extrutura dos seus arquivos?!
[]s
Oi Thiago,
existe um arquivo README.txt no arquivo compactado que você baixou. Por favor leia as instruções contidas nele.
Mencionei sobre o projeto para você tomar como base para o seu projeto (configurações, arquivos necessários, etc). Um arquivo EAR (Enterprise ARchive) é um arquivo próprio para os applications servers, onde contém informações (.jars, .wars, arquivos de configurações, etc) para o deploy de uma aplicação.
Cara, eu li seu README.txt, me desculpe a ignorancia…mas nunca mexi com EJB, pode paracer claro para vc mas eu não consigo entender!!
Olhe estes passos:
3 - ao modificar o projeto store-ejb, lembre-se de gerar o .JAR do projeto e copiar para o diretório
WEB-INF/lib do projeto store-web
Quer dizer que este projeto “store-ejb” só serve de apoio para “store-web”?!
a partir do 4 passo eu me perco completamente!
[]s
Thiago
Cade a interface remota do seu EJB Conexao?
Se voce esta dando new direto no Conexao, o container nao vai te injetar o EM!
Coloquei a interface e mesmo assim não funcionou…será que é porque estou tentando instanciar dentro do JSP?
De qualquer forma eu consegui de outra maneira obter o resultado que eu queria, evitar o LazyException…não com o “Open Session in View”, estou dando um <nome_colecao>.size() na hora da listagem, não é o que eu queria mas vi que no Java o buraco é bem mais embaixo, uma coisa puxa a outra e não estou consigo implementar a melhor solução ainda! É cruel estar pesquisando uma coisa aparentemente simples e se deparar com “N” conceitos novos!
Mas não vou desistir não!
A todos, Obrigado pela ajuda!
[]s
Thiago,
não instancie o objeto dentro da JSP, obtenha isso do seu Servlet e envie na requisição.
ah :? …
mas ae vai dar na mesma… eu vou ter que ter carregado antes de exibir a coleção!
Eu pensei que chamava dentro do JSP e de alguma forma a sessão era aberta exclusivamente para carregar a coleção e depois era fechada!
Bom…de qualquer forma foi um jeito forçado de estudar um pouquinho!
Brigadúúúú!
[]s
Você pode colocar o código dentro da JSP, mas fica horrível e é uma má prática.
Não…
no JSP eu queria fazer somente isso
out.print(objeto.getLista().get(0).getAtributo());
E isso seria tratado “por traz”
[]s
Envie esse objeto no seu Servlet.
Então…desculpe se minha pergunta ser idiota
Qual é a vantagem de enviar via servlet?
Olhe a solução que pensei
Tenho o metodo find(int id)
nele vou passar outro parametro find(int id, boolean carregaLista)
if(carregaLista) {
objeto.getLista().size();
}
E pronto tenho um objeto carregado no JSP ou no JSF
como seria esse atravéz de Servlet?
[]s
Se você tiver usando JSF é só criar esse método no seu Managed Bean.
Mencionei Servlet porque é uma boa prática de programação evitar códigos Java
em JSPs.
Ah tahhh, vc pensou que eu estivesse fazendo TUDO dentro do JSP né…
BLZZZ…tah dentro de uma classe JAVA!
O meu problema era o iniciação EAGER pois iria causar GRAAAAAANDE lentidão por isso da iniciação LAZY e esse grande empacamento que tive.
[]s