ejb 3.0 - acesso remoto marco a. s. reis
TRANSCRIPT
![Page 1: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/1.jpg)
EJB 3.0 - Acesso RemotoMarco A. S. Reishttp://marcoreis.net
![Page 2: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/2.jpg)
Serialização
Recurso disponível desde a primeira versão do Java, permite que se salve o estado de um objeto em uma stream de dados.
Também permite que se recupere os dados da stream de volta em um objeto.
Para trocar objetos entre JVM's diferentes, é obrigatório implementar Serializable.
É assim que o RMI trabalha, tranferindo objetos entre diferentes máquinas.
![Page 3: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/3.jpg)
Interface Remota
Um session bean pode ser local ou remoto, dependendo do uso que se pretende.
Se a aplicação rodar em apenas um servidor, podemos implementar apenas as interfaces locais.
Caso o sistema seja distribuído, e há diversas justificativas para isso, as interfaces devem ser remotas e os objetos envolvidos devem obrigatoriamente ser Serializable.
![Page 4: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/4.jpg)
AppClient
Para acessar um componente remoto vamos criar uma aplicação cliente conforme o exemplo.
![Page 5: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/5.jpg)
Library
Adicione a library do JBoss, conforme o modelo.
![Page 6: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/6.jpg)
Cliente
Para acessar remotamente a aplicação cliente precisa das interfaces remotas, bem como das classes de entidades envolvidas.
Há várias formas de conseguir, uma delas é a função Export.
![Page 7: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/7.jpg)
Especificação
Selecione as classes de entidade mais a fachada remota.
Indique o caminho da lib do novo projeto como destino das classes.
![Page 8: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/8.jpg)
Serviços Remotos
Adicione a biblioteca recém-criada no classpath da aplicação.
![Page 9: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/9.jpg)
AppClient
O projeto, ao final, deve conter os arquivos ao lado.
![Page 10: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/10.jpg)
jndi.properties
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
java.naming.provider.url=jnp://192.168.1.101:1099
![Page 11: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/11.jpg)
JBoss
Para iniciar o JBoss é importante observar os parâmetros de bind, habilitando o servidor a receber solicitações remotas:
run.bat (.sh) -c default -b 0.0.0.0 ou
run.bat (.sh) -c default –host=0.0.0.0 ou
run.bat (.sh) -c default -Djava.bind.address=0.0.0.0
![Page 12: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/12.jpg)
ListaRecursosRemotos
package org.financeiro.remote;
import javax.naming.*;
public class ListaRecursosRemotos {
public static void main(String[] args) {
try {
Context ctx = new InitialContext();
NamingEnumeration<NameClassPair> lista = ctx.list("");
while (lista.hasMore()) {
NameClassPair proximo = lista.next();
System.out.println(proximo);
}
} catch (Exception e) {
}
}
}
![Page 13: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/13.jpg)
ConsultaCorrentistasRemotos
package org.financeiro.remote;import java.util.*;import javax.naming.*;import org.financeiro.entidades.*;import org.financeiro.negocio.*;public class ConsultaCorrentistasRemotos { public static void main(String[] args) { try { Context ctx = new InitialContext(); Object proxy = ctx.lookup("FachadaCorrentista/remote"); IFachadaCorrentistaRemote fachada = (IFachadaCorrentistaRemote) proxy; // System.out.println("Lista de correntistas"); List<Correntista> listaDeCorrentistas = fachada.consultaTodos(); for (Correntista c : listaDeCorrentistas) { System.out.println(c.getId() + " - " + c.getNome()); } } catch (Exception e) { e.printStackTrace(); } }}
![Page 14: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/14.jpg)
InsereCorrentistaRemoto
package org.financeiro.remote;
import java.util.*;import javax.naming.*;import javax.swing.*;import org.financeiro.entidades.*;import org.financeiro.negocio.*;
public class InsereCorrentistaRemoto { public static void main(String[] args) { try { Context ctx = new InitialContext(); Object proxy = ctx.lookup("FachadaCorrentista/remote"); IFachadaCorrentistaRemote fachada = (IFachadaCorrentistaRemote) proxy; // Correntista correntista = new Correntista(); correntista.setNome(JOptionPane.showInputDialog("Nome do Correntista")); correntista.setDataDeNascimento(new GregorianCalendar(1979, 4, 6) .getTime()); correntista.setTelefone("1234-5678"); fachada.inserir(correntista); JOptionPane.showMessageDialog(null, "Correntista inserido com sucesso"); } catch (Exception e) { e.printStackTrace(); } }}
![Page 15: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/15.jpg)
Monitoração
A versão 5.0 do Java trouxe uma API completa para monitoração: JMX (Java Management Extension).
![Page 16: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/16.jpg)
JMX Agent View
Para acessar a ferramenta de monitoração, acesse o endereço:
Http://localhost:8080/jmx-console
![Page 17: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/17.jpg)
EJB's instalados
Clique na opção jboss.j2ee, que irá listar todos os beans instalados no servidor.
![Page 18: EJB 3.0 - Acesso Remoto Marco A. S. Reis](https://reader035.vdocuments.com.br/reader035/viewer/2022070310/552fc0fb497959413d8b97e6/html5/thumbnails/18.jpg)
FachadaCorrentista
Verifique no InvokeStats as chamadas de cada método da fachada.