Como é feita a distribuição com EJB

2 respostas
W

Pessoal como é feita uma aplicação distribuida com EJB é so configurar o servidor de aplicação para trabalhar em cluster que já será uma aplicação distribuida ? Como faço para ter minha aplicação web em um tomcat chamando meus serviços em um glassfish ?

Estive procurando na net mas nao estou encontrando, links relacionados são bem vindo.

Obrigado, @JP.

2 Respostas

C

“wladelin”:
Pessoal como é feita uma aplicação distribuida com EJB é so configurar o servidor de aplicação para trabalhar em cluster que já será uma aplicação distribuida ? Como faço para ter minha aplicação web em um tomcat chamando meus serviços em um glassfish ?

Estive procurando na net mas nao estou encontrando, links relacionados são bem vindo.

Obrigado, @JP.

Para vc usar os seus beans vc precisa implementar uma interface remota e registrar no servidor de aplicação este seus beans. Através de JNDI vc consegue acessar remotamente esses beans e usar em sua aplicação.

@Local
public interface ClienteServiceLocal {
    Cliente criarCliente(Cliente cliente);
    ...
    ...
    ...
}

@Remote
public interface ClienteServiceRemote {
    Cliente criarCliente(Cliente cliente);
    ...
    ...
    ...
}

@Stateless(name="ClienteService", mappedName="ClienteService")
public class ClienteService implements ClienteServiceRemote, ClienteServiceLocal {
    @EJB
    private IClienteEAO clienteEAO;

    public Cliente criarCliente(Cliente cliente) {
        return (Cliente) clienteEAO.criarcliente(cliente);
    }
    ...
    ...
    ...
}

Na sua aplicação você acessa os EJB como exemplificado abaixo.

public class Clientes {
    private Context ctx;

public void inserirCliente(Cliente c) {
    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.enterprise.naming.SerialInitContextFactory");
    env.put(Context.PROVIDER_URL, "localhost");
    env.put(Context.URL_PKG_PREFIXES, "com.sun.enterprise.naming");

    this.ctx = new InitialContext(env);
            
    ClienteServiceRemote clienteService = (ClienteServiceRemote)    this.ctx.lookup("ClienteService");

    clienteService.criarCliente(c);
    ...
    ...
    ...
}

O Glassfish é um servidor de aplicação com ou sem cluster. A opção do cluster é para melhorar da performance.

@braços,

W

Estive fazendo um app no netbeans p/ server glassfish peguei o .jar gerado no /dist e importei em uma app webcliente feita para o tomcat 6 mas deu um erro de compilação (parece nao reconhecer a anotation @GeneratedValue) e depois vi que a classe da anotation estava em um javaee.jar que era do container glassfish.

Esse código de Clientes.inserirCliente(Cliente) vai poder estar em um servidor tomcat, ou seja, servlet container ?

Criado 11 de novembro de 2007
Ultima resposta 12 de nov. de 2007
Respostas 2
Participantes 2