Dúvida com EJB3

Olá pessoal!

Estou com algumas dúvidas relacionada a EJB3.

Tenho uma classe / Session Bean, ele é Stateless.

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?

fala ae Queridao blz?

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:

[code]import java.rmi.RemoteException;

// Aqui é o annotation para ser acessado remoto, e tbm para ser usado no lookup
@Remote
public interface InterfaceBean {
void inserir() throws RemoteException; // É obrigatório usar esse Remote no final de todos os metodos da interface
void editar() throws RemoteException;

}
[/code]

CLasse com o lookup:

usando a classe que eu mandei para o nosso outro amigo com duvidas… heehe

import java.rmi.RemoteException;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class TesteNF {

	public static void main(String[] args) {
		
		try {
			Context context = new InitialContext();
			
			/* 
			 * Veja que no lookup("SessionBean/remote") é 
			 * onde vc vai colocar seu bean/remote, e pela interface vc vai usar os métodos.
			 * 
			*/
			InterfaceBean i  = (InterfaceBean ) context.lookup("SessionBean/remote");
			
			// Aqui ja esta sendo usado pela interface
			 i.inserir();

		} catch (NamingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

espero ter ajudado…

[quote=Gbzao!]Olá pessoal!

Qual meu problema?

Quando eu instancio essa classe dentro de outra classe…[/quote]
Instanciar um SesisonBean? Eita, vc está com um problema mesmo…seria interessante estudar mais profundamente o EJB 3!!!

Muítissimo obrigado nandolup, já deixou bastante coisa mais clara para mim…

Vou estudar mais a fundo!

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.

[quote=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.[/quote]

A anotação @EJB não pode ser usada apenas em Stateful?

lógico q nao