Marco A. S. Reis http://marcoreis.net EJB 3.0 - Acesso Remoto Marco A. S. Reis http://marcoreis.net.

Slides:



Advertisements
Apresentações semelhantes
Aplicação de exemplo Struts Aplicação de exemplo
Advertisements

I/O Carlos Bazilio Depto de Ciência e Tecnologia
Programação em Java Prof. Maurício Braga
Sistemas distribuídos
Marco A. S. Reis JPQL Marco A. S. Reis
Reflexão Marco Antonio Arquiteto de Software Novembro/2007.
Sockets Marco Antonio – marcoreis.net Arquiteto de Software Dezembro/2007.
Utilitários Marco Antonio. Enum Como o nome sugere, é uma enumeração de opções para uma determinada situação A principal vantagem é limitar as opções.
Collections Marco Antonio, Arquiteto de Software – TJDF Atualizado Dezembro/2008.
Entrada e Saída Marco Antonio Arquiteto de Software Dezembro/2007.
Java Básico Orientação a Objeto Marco Antonio Software Architect Fev/2008.
Relatórios Marco Antonio Software Architect Agosto
Session Bean Marco A. S. Reis. Camada de negócio Fazem parte da camada de negócio as classes que contém os métodos que irão gerar a aplicação. A medida.
Comunicação entre processos distribuídos
Tratamento de Exceções
Programação orientada a objetos
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Java RMI Alcides Calsavara. Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância.
Prof. João Bosco M. Sobral
Invocação de Métodos Remotos RMI
Slide 1 Rede Nacional de Ensino e Pesquisa Treinamento em Gradep - junho 2005 Serviço ContextManager Treinamento no GRADEp Serviço ContextManager CtxManagerDemo.
PROGRAMAÇÃO DISTRIBUÍDA EM JAVA Verão/2001
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
CRIANDO OBJETOS EM JAVA
Prof.: Bruno Rafael de Oliveira Rodrigues
Hibernate com JPA Prática
Concorrência em Java Threads em Java.
Introdução a linguagem Python
Threads: Introdução e Implementação
Capítulo 2 Java Servlets.
JAVA Linguagem Ambiente de Desenvolvimento
Arquitetura CORBA e Objetos Distribuídos
Hashing - Espalhamento
Chamada Remota de Procedimentos
Introdução a aplicativos Java
Desenvolvimento de Aplicações CORBA
Remote Method Invocation RMI
Stateful Session Beans
1 Mobilidade de Código com μcode Projeto Giga Alexandre Lages
Objetos Distribuídos Nazareno Andrade.
Professora Lucélia Oliveira
T. D. S. I. PARA WEB Prof. Emmanuel Nolêto. Java RMI.
LPII Professora Lucélia. Pacotes Um pacote em Java é um diretório onde ficam armazenadas uma ou mais classes. Geralmente as classes com a mesma afinidade.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Concorrência e thread Petrônio Júnior(pglj) Márcio Neves(mmn2)
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
Hibernate + JBoss Mapeamento O-R em aplicações corporativas Ricardo Cavalcanti Jobson Ronan
Entity Beans Marco Antonio Arquiteto de Software Dezembro/2007.
SessionBeans Marco Antonio Arquiteto de Software.
RMI - JAVA.
Conceitos da arquitetura
Java Kickstart, day 2 Semelhanças com linguagem C.
Polimorfismo.
Coleções, Genéricos, Threads Marco Antonio. Collection Principais métodos da interface Collection.
Programação para Web Unidade 06 – Java Beans e BDs Prof.: Henrique Santos.
Estrutura de Controle em JAVA
RMI (Remote Method Invocation) Bruno Edson Plínio Tadeu
RMI Objetos Distribuídos Luiz C. D´oleron SCJP
Java Conexão com Baco de dados Saulo Bazzi Oberderfer Fonte:
Aglets.
Socket em Java.
APLICAÇÃO J2EE – EXEMPLO PRÁTICO Guilherme Amaral Avelino.
Programação Distribuída em Java Aula Na aula passada vimos: I/O Streams Filtros Readers and Writers.
RMI Remote Method Invocation
Laboratório de Programação II Método main Dados e Métodos de Classes.
RMI Java Remote Method Invocation em Java. Introdução Java Remote Method Invocation (Java RMI) permite desenvolver sistemas distribuídos baseados em Java.
PSW1 Prof. Rafael. Persistência Atividade que permite que o estado de um objeto exista mesmo após a extinção do processo computacional que o criou. Em.
Desenvolvimento WEB II Professora: Kelly de Paula Cunha Apresentação baseada no material didático elaborado pelo Prof. Pasteur Ottoni de Miranda Junior.
Arleys Pereira Nunes de Castro - Mestrando : Modelagem computacional (SENAI-MCTI) Especialista : Sistema distribuídos
Transcrição da apresentação:

Marco A. S. Reis http://marcoreis.net EJB 3.0 - Acesso Remoto Marco A. S. Reis http://marcoreis.net

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.

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.

AppClient Para acessar um componente remoto vamos criar uma aplicação cliente conforme o exemplo.

Library Adicione a library do JBoss, conforme o modelo.

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.

Especificação Selecione as classes de entidade mais a fachada remota. Indique o caminho da lib do novo projeto como destino das classes.

Serviços Remotos Adicione a biblioteca recém-criada no classpath da aplicação.

AppClient O projeto, ao final, deve conter os arquivos ao lado.

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

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

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) {

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();

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(); }

Monitoração A versão 5.0 do Java trouxe uma API completa para monitoração: JMX (Java Management Extension).

JMX Agent View Para acessar a ferramenta de monitoração, acesse o endereço: Http://localhost:8080/jmx-console

EJB's instalados Clique na opção jboss.j2ee, que irá listar todos os beans instalados no servidor.

FachadaCorrentista Verifique no InvokeStats as chamadas de cada método da fachada.