Preciso de um exemplo conectando meu cliente em um ejb

6 respostas
pedrohms

Olá galera. Eu estava procurando aqui no forum por um exemplo de conexao de um cliente à um ejb num servidor glassfish, mas infelizmente não encontrei. É o seguinte: só preciso de um exemplo(do servidor glassfish), pq todos os outros que procurei não deram certo. O bean está aí embaixo:

@Stateless
public class MainManage implements MainManageInterfaceLocal {

    public double multiplicaNumero(double x, double y) {
        return x*y;
    }

@Remote
public interface MainManageInterfaceRemote {

    public double multiplicaNumero(double x, double y);
}

6 Respostas

Andre_Brito

Já tentou isso: https://glassfish.dev.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB ?

pedrohms

certo. Mas só que o seguinte: O JNDI, eu preciso de mapealo? eu consigo usar o lookup sem ter que declarar endereco ou porta do servidor? Pelo link que me passou parecesse que não. É preciso ou é obrigatorio algum tipo de xml? se sim, é do lado do servidor ou do cliente. É preciso a interface local que nem era no EJB2?

Só pra esclarecer o do por que da pergunta, é que eu estou lendo o livro EJB3 em ação mas lá não explica como funciona uma conexao de cliente remotamente, e eu não tenho conhecimento nenhum de como fazer essa conexao remotamente ou direto na maquina local por isso pedi um exemplo, pq aí eu posso identificar como funciona essa conexao

Andre_Brito

Depende cara. Eu não uso Glassfish v3, uso JBoss e o OpenEJB. No JBoss coloco o endereço do servidor sim. Na verdade, no JBoss tenho que colocar alguns parâmetros relacionados a JNP. Tem que dar uma pesquisada e uma lida na versão que você tem no Glassfish. No OpenEJB (um conteiner EJB), é MUITO simples:

Properties p = new Properties();
p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
p.put("java.naming.provider.url", "http://localhost:4204/ejb");
// user and pass optional
p.put("java.naming.security.principal", "myuser");
p.put("java.naming.security.credentials", "mypass");

InitialContext ctx = new InitialContext(p);

MyBean myBean = (MyBean) ctx.lookup("MyBeanRemote");

Depende. Você está usando EJB 3 ou EJB 3.1? No 3.1 grande parte dos xmls foram descartados.

Se for EJB 3 é do lado do servidor. O cliente só precisa saber o ip do servidor.

No EJB 3 sim. No EJB 3.1 não.

Sinto não poder dar mais informações sobre o Glassfish. É interessante procurar algum documentação na Internet sobre ele e dar uma estudada.

pedrohms

Cara, essa resposta me esclareceu muita coisa. Só mais uma coisa, vc tem algum código de aplicação aí com o cliente e o bean, para me disponibilizar? Ajudaria muito, e se não tiver problema para vc me passar via mp algum messenger so pra tirar algumas duvidas, se tiver deixa quieto que o código ja ajuda :D, mesmo não sendo glassfish.

Andre_Brito

Um exemplo usando stateless e EJB 3, fazendo lookup remoto usando OpenEJB.

@Stateless
public class CalculatorImpl implements CalculatorRemote {

	public int sum(int add1, int add2) {
		return add1 + add2;
	}

	public int multiply(int mul1, int mul2) {
		return mul1 * mul2;
	}

}
@Remote
public interface CalculatorRemote {
	
	public int sum(int add1, int add2);
	
	public int multiply(int mul1, int mul2);

}
private InitialContext initialContext;

@Override
protected void setUp() {
	Properties p = new Properties();
	p.put("java.naming.factory.initial", "org.apache.openejb.client.RemoteInitialContextFactory");
	p.put("java.naming.provider.url", "ejbd://192.168.0.2:4201");
}

@TestCase
public void testCalculatorViaRemoteInterface() throws Exception {
    Object object = initialContext.lookup("CalculatorImplRemote");
	
    assertNotNull(object);
	assertTrue(object instanceof CalculatorRemote);
	CalculatorRemote calc = (CalculatorRemote) object;
	assertEquals(10, calc.sum(4,6));
	assertEquals(12, calc.multiply(3,4));
}
W

Caro pedrohms,

Por favor, estou com o mesmo problema, por favor poderia me explicar como voce resolveu

Criado 24 de agosto de 2010
Ultima resposta 9 de dez. de 2010
Respostas 6
Participantes 3