Recuperar EJB container OC4J

6 respostas
andrebar

[color=blue][size=18]Sras ou Srs,

Estou com dificuldade de recuperar um EJB de um container OCJ4 Standalone Server 10.1.3.n, executando dentro do eclipse (galileu)

Talvez por falta de maiores conhecimentos, devo estar cometendo algum erro. Há alguém que possa dar-me uma luz?

Valeu antecipado!

André.

[/size][/color]

//=== A INTERFACE ===========================================

package br.com.xxx.teste;

public interface TestaEjbLocal {

void testarEjb();

}

// ==== A IMPLEMENTAÇÃO =====================================

package br.com.xxx.teste;

import javax.ejb.Local;
import javax.ejb.Stateless;

@Stateless

@Local(TestaEjbLocal.class)

public class TestaEjb implements TestaEjbLocal {
public void testarEjb() {
	System.out.println("=== EXECUTOU TestaEjb ===");

}

}
// === A APLICAÇÃO (main) ======================================

package br.com.xxx.teste;

import java.util.Hashtable;

import javax.ejb.CreateException;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.naming.NamingException;

public class Teste {

@SuppressWarnings("unchecked")
public static void main(String[] args) throws NamingException, CreateException {

	Hashtable env = new Hashtable();
	env.put("java.naming.provider.url", "ormi://localhost:8888/_testeEJB");
	env.put("java.naming.factory.initial", "com.evermind.server.rmi.RMIInitialContextFactory");
	env.put(Context.SECURITY_PRINCIPAL, "oc4jadmin");
	env.put(Context.SECURITY_CREDENTIALS, "welcome");
	Context ctx = new InitialContext (env);
	
	TestaEjbLocal ejb = null;

	try {
		System.out.println("tentando o lookup..."); // A EXECUÇÃO FICA TRAVADA AQUI  !!

		ejb = (TestaEjbLocal) ctx.lookup("java:comp/env/_testeEJB_TestaEjbLocal");
		System.out.println("lookup ok");
		
		ejb.testarEjb();

	} catch (Exception e) {
		e.printStackTrace();
	}
}

// === O RESULTADO NO CONSOLE ======================================

tentando o lookup…

6 Respostas

Andre_Brito

Primeiro, coloque seus códigos entre as tags code. Assim:

Segundo, troque seu System.out.println por System.err.println. Alguns servidores não mostram os outs, somente os errs. Por isso, uma boa prática é usar um mecanismo de Log mais arrojado, como o sl4j ou a API de log do Java mesmo.

Terceiro, dá exception?

andrebar

Não dá exception. A execução fica parada ao fazer o lookup e não segue adiante.

Andre_Brito

Tente trocar sua ejb = (TestaEjbLocal) ctx.lookup("java:comp/env/_testeEJB_TestaEjbLocal"); por ejb = (TestaEjbLocal) ctx.lookup("java:comp/env/ejb/_testeEJB_TestaEjbLocal"); e poste o resultado.

andrebar
Mesmo problema.

Será que a configuração do contexto está correta?

Hashtable env = new Hashtable();

env.put(java.naming.provider.url, ormi://localhost:8888/_testeEJB);

env.put(java.naming.factory.initial, com.evermind.server.rmi.RMIInitialContextFactory);

env.put(Context.SECURITY_PRINCIPAL, oc4jadmin);

env.put(Context.SECURITY_CREDENTIALS, welcome);

Context ctx = new InitialContext (env);
Andre_Brito

Acredito que sim. Não uso OC4J. A única diferença é que quando preciso criar o Context, uso Context.PROVIDER_URL e Context.INITIAL_CONTEXT_FACTORY. Tente tirar essa parte de segurança e veja se acontece alguma Exception.

andrebar
Tentei alterar a linha do provider.url (localhost:8888) para Context.PROVIDER_URL, ormi://localhost:23891”), e a exceção é lançada:

Tentando o lookup

javax.naming.CommunicationException: Connection refused: connect [Root exception is java.net.ConnectException: Connection refused: connect]

at com.evermind.server.rmi.RMIClient.lookup(RMIClient.java:311)

at com.evermind.server.rmi.RMIClientContext.lookup(RMIClientContext.java:59)

at javax.naming.InitialContext.lookup(InitialContext.java:351)

at br.com.previ.teste.Teste.main(Teste.java:48)

Caused by: java.net.ConnectException: Connection refused: connect

at java.net.PlainSocketImpl.socketConnect(Native Method)

at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)

at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)

at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)

at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:367)

at java.net.Socket.connect(Socket.java:524)

at java.net.Socket.connect(Socket.java:474)

at java.net.Socket.(Socket.java:371)

at java.net.Socket.(Socket.java:213)

at com.evermind.server.rmi.RMIClientConnection.createSocket(RMIClientConnection.java:802)

at oracle.oc4j.rmi.ClientSocketRmiTransport.createNetworkConnection(ClientSocketRmiTransport.java:59)

at oracle.oc4j.rmi.ClientRmiTransport.connectToServer(ClientRmiTransport.java:75)

at oracle.oc4j.rmi.ClientSocketRmiTransport.connectToServer(ClientSocketRmiTransport.java:69)

at com.evermind.server.rmi.RMIClientConnection.connect(RMIClientConnection.java:765)

at com.evermind.server.rmi.RMIClientConnection.sendLookupRequest(RMIClientConnection.java:247)

at com.evermind.server.rmi.RMIClientConnection.lookup(RMIClientConnection.java:231)

at com.evermind.server.rmi.RMIClient.lookup(RMIClient.java:302)

 3 more

Não sei, mas acho que a configuração do contexto não está muito correta.

Criado 3 de junho de 2011
Ultima resposta 8 de jun. de 2011
Respostas 6
Participantes 2