Dentro desse Session Bean, possuo um EntityManager que é injetado pela aplicação, e mais algumas injeções
de depedências através do Seam.
Além disso, possuo 2 métodos. Um para cálculo de Icms, e outro para calculo de Ipi.
Tudo ótimo, tudo funcionando na aplicação.
Qual meu problema?
Quando eu instancio essa classe dentro de outra classe, e tento executar os métodos recebo um NullPointerException.
Ou seja, não consigo instanciar essa classe dentro de outra e utilizar esses métodos. Como posso fazer isso?
entao primeiramente vc tem que fazer uma interface remota para esse seu Session bean
contendo o anotations @Remote
esse seu session bean tem que implementar
depois vc tem que ter dentro dessa sua classe onde vc quer Instanciar essa classe um lookup
segue abaixo a interface e a classe de lookup...
Interface:
importjava.rmi.RemoteException;// Aqui é o annotation para ser acessado remoto, e tbm para ser usado no lookup@RemotepublicinterfaceInterfaceBean{voidinserir()throwsRemoteException;// É obrigatório usar esse Remote no final de todos os metodos da interfacevoideditar()throwsRemoteException;}
CLasse com o lookup:
usando a classe que eu mandei para o nosso outro amigo com duvidas.. heehe
importjava.rmi.RemoteException;importjavax.naming.Context;importjavax.naming.InitialContext;importjavax.naming.NamingException;publicclassTesteNF{publicstaticvoidmain(String[]args){try{Contextcontext=newInitialContext();/* * Veja que no lookup("SessionBean/remote") é * onde vc vai colocar seu bean/remote, e pela interface vc vai usar os métodos. * */InterfaceBeani=(InterfaceBean)context.lookup("SessionBean/remote");// Aqui ja esta sendo usado pela interfacei.inserir();}catch(NamingExceptione){// TODO Auto-generated catch blocke.printStackTrace();}catch(RemoteExceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}
espero ter ajudado...
felipeguerra
Gbzao!:
Olá pessoal!
Qual meu problema?
Quando eu instancio essa classe dentro de outra classe…
Instanciar um SesisonBean? Eita, vc está com um problema mesmo…seria interessante estudar mais profundamente o EJB 3!!!
G
Gbzao
Muítissimo obrigado nandolup, já deixou bastante coisa mais clara para mim…
Vou estudar mais a fundo!
F
frazzato
Se for utilizar o Session Bean dentro do mesmo projeto você implementa uma interface Local e usa a anotação @EJB que o container se encarrega de injeta-lo.
Use somente @Remote se for utilizar maquinas virtuais separadas.
G
Gbzao
frazzato:
Se for utilizar o Session Bean dentro do mesmo projeto você implementa uma interface Local e usa a anotação @EJB que o container se encarrega de injeta-lo.
Use somente @Remote se for utilizar maquinas virtuais separadas.
A anotação @EJB não pode ser usada apenas em Stateful?