SlideShare uma empresa Scribd logo
1 de 61
Comunicação Distribuída - EJB
      Prof. Adriano Teixeira de Souza
   Estratégias diferentes que permitem a
    comunicação entre aplicações distribuídas.

   Tipos distintos de comunicação em um sistema
    distribuído:

    ◦ Sockets
    ◦ RMI - Remote Method Invocation
    ◦ CORBA – Commom Object Request Broker Architecture
    ◦ EJB – Enterprise Java Bean
    ◦ Web Services


                              Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
   Se utilizar a versão 7.0 do JBoss , não é
    requerida uma instalação, basta apenas
    descompactar o arquivo na sua máquina e
    adicionar a variável de ambiente
    JBOSS_HOME;




                         Prof. Adriano Teixeira de Souza
   Vá em Iniciar -> Painel de controle -> Sistema ->
    Avançado ->Variáveis de ambiente;
   Adicione as variáveis JAVA_HOME e JBOSS_HOME,
    com os seguintes valores:
    ◦ JAVA_HOME = “meu caminho do JDK”
    ◦ JBOSS_HOME = “meu caminho do Jboss”

   Caso não tenha permissão, “sete” as variáveis em
    tempo de console (abra uma “console” e digite):
    ◦ SET JAVA_HOME=diretorioJVM
    ◦ SET JBOSS_HOME=diretorio do JBOSS
    ◦ Em seguida, entre na pasta bin e digite RUN.BAT


                                Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
   JEE: Acrônimo de Java Enterprise Edition Kit

   Plataforma Java voltada para aplicações corporativas,
    no modelo de sistema distribuído.

   Voltada para aplicações multi-camadas, baseadas em
    componentes que são executados em um servidor de
    aplicações (JBoss, exemplo).

   A plataforma Java EE é considerada um padrão de
    desenvolvimento, pois o fornecedor de software nesta
    plataforma deve seguir determinadas regras
    compatíveis com Java EE.
                                Prof. Adriano Teixeira de Souza
   A plataforma J2EE contém uma série de especificações, cada uma com
    funcionalidades distintas. Entre elas, tem-se:

    ◦ EJBs (Enterprise Java Beans), utilizados no desenvolvimento de
      componentes de software. Eles permitem que o programador se
      concentre nas necessidades do negócio do cliente, enquanto questões
      de infra-estrutura, segurança, disponibilidade e escalabilidade são
      responsabilidade do servidor de aplicações.

    ◦ JPA (Java Persistence API), é uma API que padroniza o acesso a banco
      de dados através de mapeamento Objeto/Relacional dos Enterprise
      Java Beans
    ◦ JTA (Java Transaction API), é uma API que padroniza o tratamento de
      transações dentro de uma aplicação Java.
    ◦ JDBC (Java Database Connectivity), utilizado no acesso a bancos de dados;
    ◦ JCA (Java Connector Architecture), é uma API que padroniza a ligação a
      aplicações legadas.
    ◦ Servlets e JSP (Java Server Pages), utilizados para o desenvolvimento de
      aplicações Web com conteúdo dinâmico.
    ◦ E outros.



                                         Prof. Adriano Teixeira de Souza
• Transações gerenciadas
• Segurança
• Clustering
• Escalabilidade
• Alta Disponibilidade
• Comunicação Assíncrona
• Integração com Legado
• Persistência
• etc…

                       Prof. Adriano Teixeira de Souza
   Representa um objeto de entidade de negócios
    que existe no armazenamento persistente
    (banco de dados, por exemplo)
   Classes simplificadas, chamadas “POJOS”,
    mapeadas com JPA ;
   Flexíveis para qualquer banco de dados
    relacional;
   Tão portáveis, que podem ser usados também
    fora de um servidor de aplicação (aplicação
    “desktop”);
   São agrupados em uma unidade de
    persistência;

                        Prof. Adriano Teixeira de Souza
   Espelham objetos do mundo real;

   Possuem uma chave primária “id”(pode ser
    uma classe ou um tipo primitivo);

   Identificado pela anotação @Entity;

   Não necessitam de nenhuma interface;

   Gerenciados pelo EntityManager;


                         Prof. Adriano Teixeira de Souza
 Sistema   de Cadastro de Cliente



                 Prof. Adriano Teixeira de Souza
@Entity
 .
@Table(name=“cliente”)
public class Cliente implements Serializable {

          private static final long serialVersionUID = 1L;

          @Id
          @GeneratedValue(strategy=IDENTITY)
          private int id;

          private String nome;

          private String cpf;

          public Cliente() { }

          // get’s e set’s

          //equals e hashCode

} // fim da entidade


                                        Prof. Adriano Teixeira de Souza
   @Entity
    ◦ Indica ao provedor de persistência que a Classe bean será mapeada para uma
      tabela de banco de dados e gerenciada por um Entity Maganer;

   @Table
    ◦ Informa ao container EJB para qual tabela do banco será mapeada a
      classe bean;

   @Column
    ◦ Informa ao container EJB para qual coluna da tabela a propriedade do
      bean será mapeada;

   @Id
    ◦ Informa que atributo será tratado como chave primária na tabela de
      banco de dados.

   @GeneratedValue - define que o valor do atributo “id” será gerado
    automaticamente no momento em que os objetos forem persistidos
    (inseridos na tabela).


                                       Prof. Adriano Teixeira de Souza
   Implementar a interface java.io.Serializable não
    é obrigatório.
    ◦ Com “Serializable” é possível usar a mesma classe
      tanto para persistência, quanto para transferência de
      dados (entre sistemas ou camadas).

   Assim como todo POJO, as propriedades de um
    Entity Bean são acessadas através dos métodos
    get’s e set’s.



                             Prof. Adriano Teixeira de Souza
   Conjunto de todos os entity beans;
   Quem gerencia é um serviço de EntityManager;
   Cada unidade de persistência deve estar
    associada a um banco de dados;
   Todas essas informações estão descritas em
    um arquivo chamado persistence.xml
   Localizado no diretório META-INF da aplicação
   A unidade de persistência é identificada pela
    marcação:
    ◦ <persistence-unit name=“xxxx”>
      Onde “xxxx” é o nome a ser referenciado como a unidade
       de persisência.


                             Prof. Adriano Teixeira de Souza
O arquivo persistence.xml (definido com o
 datasource do banco de dados)


<?xml version="1.0" encoding="UTF-8"?>
<persistence>
 <persistence-unit name= “nomeUP” >
      <jta-data-source>
             java:jboss/datasources/TesteSQLiteDS
      </jta-data-source>
 </persistence-unit>
</persistence>



                             Prof. Adriano Teixeira de Souza
   <persistence-unit
    name=“nomeUP”>
    ◦ Conjunto das classes gerenciadas
      por um Entity Manager

   <jta-data-source>
    ◦ Define o banco de dados que será
      usado para esta implantação.
    ◦ No JBoss deve ser definido em um
      arquivo “.xml” chamado
      standalone.xml.




                               Prof. Adriano Teixeira de Souza
   São componentes EJB do lado do servidor que podem ser
    acessados utilizando vários protocolos de objetos
    distribuídos;

   Para acessar uma aplicação que foi instalada no servidor
    (JBoss), a aplicação cliente invoca os métodos do Session
    Bean.

   O Session Bean executa o trabalho para seu cliente,
    protegendo o cliente da complexidade através da execução
    de tarefas de negócio dentro do servidor.

   Suas atividades são geralmente transitórias (não tem um
    estado persistente);


                                 Prof. Adriano Teixeira de Souza
   Stateless:
    ◦ Não mantém estado;
    ◦ Cada método é completamente independente ;
   Stateful:
    ◦ Mantém estado;
    ◦ Não é compartilhado entre clientes;
   Todo Session Bean deve implementar uma interface
    local ou remota.
    ◦ Local – o cliente compartilha a mesma máquina
      (processador e memória) que o servidor
    ◦ Remoto – o cliente acessa de forma remota (de outra
      máquina), mesmo estando na mesma máquina que o
      servidor

                                Prof. Adriano Teixeira de Souza
   Será criado um “session beans” (componente)
      chamado ClienteFacade, que fornecerá todos os
      serviços/tarefas de um cadastro de clientes:
      ◦ Cadastrar um Cliente
      ◦ Listar os Clientes cadastrados
      ◦ Localizar um Cliente
         E outros que se tornarem necessários.


•Por convenção, todos os componentes “session beans” terão no nome o
sufixo “Facade”.
•A classe interface terá o mesmo nome da classe “session beans”,
adicionado com o sufixo “Remote” ou “Local”, dependendo do uso.


                                  Prof. Adriano Teixeira de Souza
@Stateless (mappedName =" ejb/ClienteBean")
@LocalBean
public class ClienteFacade implements ClienteFacadeRemote
{
  @PersistenceContext
  private EntityManager manager;

    public void cadastraCliente(Cliente cliente)
    {
        manager.persist(cliente);
    }

    public Cliente localizaCliente(int id)                {
        return manager.find(Cliente.class, id);
    }
}

                                    Prof. Adriano Teixeira de Souza
   @Stateless:
    ◦ Mostra que o componente ClienteFacade não
      mantém o estado (objetos/dados em memória);

   @PersistenceContext
    ◦ Obtém o acesso a um serviço EntityManager;




                            Prof. Adriano Teixeira de Souza
   Especifica quais métodos de negócio um cliente
    tem permissão para invocar no EJB;

   @Remote
    ◦ Instrui o container de que esta é uma interface remota
      para o ClienteFacade




                              Prof. Adriano Teixeira de Souza
@Remote
public interface ClienteFacadeRemote
{
  public void cadastraCliente(Cliente cliente);
  public Cliente localizaCliente(int id);
  public List<Cliente> listaClientes();
}




                          Prof. Adriano Teixeira de Souza
Passo-a-passo
   Considere um novo projeto para representar a aplicação
    “servidora” do Sistema de Cadastro de Clientes.
   Crie um projeto do tipo EJB: File – New – Project ... EJB




                                    Em seguida, informe:
                                    a) O nome do projeto
                                    b) O servidor para execução
                                    c) A configuração do JPA


                                         Veja a seguir...




                                 Prof. Adriano Teixeira de Souza
a) Nome do projeto



             b) Servidor para execução



             c) Configuração do JPA




            d) Pressione Next duas vezes



Prof. Adriano Teixeira de Souza
a) Defina a plataforma
                                b) Adicione a conexao



                                               c) Selecione o driver




                         e) Pressione Finish

                            Prof. Adriano Teixeira de Souza
a) Selecione a conexão




     b) Marque a opção para listar
     classes no arquivo persistence.xml



       c) Marque a opção para criar o
       arquivo orm.xml




Prof. Adriano Teixeira de Souza
   Visão do projeto JPA(“AULAJEE6-JPA”), na
    perspectiva “Java EE”:



                                      Área (pasta) de código fonte
                                      (source)




                         Prof. Adriano Teixeira de Souza
   As entidades utilizam anotações presentes na biblioteca do JPA, Java
    Persistence API.
   Considere a entidade Cliente apresentada anteriormente.
   Crie a classe Cliente.java no pacote modelo conforme figura abaixo.




                                    Prof. Adriano Teixeira de Souza
   Após importar as classes, adicione as referências
    das entidade no arquivo “persistence.xml”.
    ◦ Use o recurso “Generate Entities from Tables”




                                                      34
   Adicione o nome da “data-source” (TesteSQLiteDS) no arquivo
    persistence.xml.
    ◦ Use a tag:
       <jta-data-source>java:jboss/datasources/TesteSQLiteDS</jta-data-source>
    ◦ Ou use o editor (assistente) na aba “Connection”. Informe em JTA_Data
      Source: java:jboss/datasources/TesteSQLiteDS




                                      Prof. Adriano Teixeira de Souza
   Diferente da configuração em aplicação desktop (console ou
    stand-alone), uma aplicação no JBOSS fica responsável pelo
    acesso aos recursos de banco, que são gerenciados pela JTA –
    Java Transaction API.




                                                   36
   Abra o arquivo “standalone.xml” no diretório “configuration” do
      JBOSS contendo o acesso ao banco de dados.
     O exemplo a seguir, mostra o DS (data-source) TesteSQLiteDS,
      que registra esse nome no serviço de diretório JNDI (Java Naming
      and Directory Interface).




 Arquivo “standalone.xml”


Diretório:
jboss-as-7.1.0.Finalstandaloneconfiguration




                                                 Prof. Adriano Teixeira de Souza
Obs:
1. Implantar o driver do MySQL no diretório jboss-as-7.1.0.Finalmodulesorgsqlitemain




                                             Prof. Adriano Teixeira de Souza
   Considere um novo projeto para representar a aplicação
    “servidora” do Sistema de Eventos.
   Crie um projeto do tipo EJB: File – New – Project ... EJB




                                    Em seguida, informe:
                                    a) O nome do projeto
                                    b) A versão do EJB (use a 3.1)


                                         Veja a seguir...




                                 Prof. Adriano Teixeira de Souza
a) Nome do projeto



b) Versão do EJB (usar a 3.1)




   c) Clique em Next duas vezes
   d) Marque a opção “Generate ejb-
   jar.xml deployment descriptor”




Prof. Adriano Teixeira de Souza
   Visão do projeto EJB (“AULAJEE6-EJB”), na
    perspectiva “Java EE”:



                                 Área (pasta) de código fonte
                                 (source)




                         Prof. Adriano Teixeira de Souza
   Nesse passo serão criados o componente
    ClienteFacade e sua interface remota ClienteFacade
    Remote.
   No Eclipse, seleciona a pasta de código e escolha a
    opção New – Session Bean (na perspectiva JEE).
    ◦ Pode ser também: File - New – EJB – Session Bean




                                                   42
   Criar o “session bean”: ClienteFacade na pacote “facade” (dentro da
    pasta de código ejbModule).
   Desmarque a opção “Local” e marque “Remote”
    ◦ Altere o nome da interface remota para façade.ClienteFacade Remote




                                      Prof. Adriano Teixeira de Souza
44
45
“Deploy no Eclipse”
   Deployment (implantação) é o conjunto de
    atividades que tornam um software, ou componentes
    de software, pronto para uso.

   Durante o deployment, o container EJB lê as
    configurações contidas em arquivos descritores
    (deployment descriptor) ou nas annotations
    (anotações) no código-fonte e prepara um ambiente
    padronizado para a execução dos beans.

    ◦ O deployment descriptor especifica quais serviços de infra-
      estrutura o container EJB proverá aos enterprise beans, desde
      que o deployment seja feito num container EJB certificado.
    ◦ No Eclipse, cria-se o descritor através do atalho (sobre o
      projeto):
      Java EE Tools – Generate Deployment Descriptor Stub
      Será criado o arquivo ejb-jar.xml na pasta META-INF (do projeto)

                                   Prof. Adriano Teixeira de Souza
   Um arquivo “JAR” (Java Archive) é uma forma
    conveniente de “empacotar” componentes para uso
    em deployment
   O processo compacta (“zipa”) todas as classes,
    interfaces e arquivos descritores para um único
    arquivo JAR
   Em seguida esse arquivo deve ser copiado para a
    pasta “deploy” do JBOSS (ou do servidor de aplicação
    em uso).
   No Eclipse, você utiliza a opção:
    ◦ File – Export – EJB Jar File

    ◦ Ou usa o menu de atalho (veja na próxima figura)


                                     Prof. Adriano Teixeira de Souza
Escolha o diretório destino
no do Jboss
(..serverdefaultdeploy)


  Prof. Adriano Teixeira de Souza
   Para implantar é necessário iniciar o servidor JBoss
    ◦ Entre no diretório “bin”, onde está o Jboss instalado
    ◦ Execute o arquivo “run.bat” (na console Windows)
    ◦ Aguarde a carga ....




                                                       50
   O JBoss exige que você coloque seu projeto EJB
    “JAR” em um dirétorio deploy.
    ◦ O default é a pasta
        “jboss-as-7.1.0.Finalstandalonedeployments”


   O servidor examina o arquivo JAR em tempo de
    execução quando o servidor é inicializado para
    determinar quais containers EJB devem ser
    criados e acoplados em tempo de execução.
    ◦ Qualquer atualização do “JAR” pode ser feita com o
      JBoss “rodando”



                             Prof. Adriano Teixeira de Souza
Acessando os componentes EJB remotamente
                em uma aplicação console.
   Com o componente EJB ClienteFacade
    implantado, vamos testar o acesso de um
    cliente remoto (aplicação console)

   Para isso devemos criar o cliente que se
    conecta ao servidor, localiza a interface
    remota do componente ClienteFacade e
    interage com ele para criar e selecionar
    entidades “Cliente” no banco de dados.




                          Prof. Adriano Teixeira de Souza
   No Eclipse, crie um nov projeto Java EE, do tipo “Java Project”.
    ◦ Use a opção File – New Project – JavaEE
   Adicione o JAR criado anteriormente, para manter as
    dependências das classes entidades (JPA) e a EJB remoto.




                                Prof. Adriano Teixeira de Souza
Prof. Adriano Teixeira de Souza
   Adicione a bibliotecas para o cliente do diretório conforme abaixo.
public class Principal {
  private static InterfaceRepositorioClientes lookupRemote() throws NamingException {

         final Hashtable jndiProperties = new Hashtable();
         jndiProperties.put(
                               Context.URL_PKG_PREFIXES,
                              "org.jboss.ejb.client.naming");
         final Context context = new InitialContext(jndiProperties);
         final String appName = "";
         final String moduleName = "TesteJPA-EJB";
         final String distinctName = "";
         final String beanName = ServidorClientes.class.getSimpleName();
         final String viewClassName = InterfaceRepositorioClientes.class.getName();
         return (InterfaceRepositorioClientes) context.lookup(
                     "ejb:" + appName + "/" + moduleName + "/"
                     + distinctName + "/" + beanName + "!" + viewClassName);
  }




                                               Prof. Adriano Teixeira de Souza
public static void main(String[] args) throws NamingException {
        try{
               // cria um cliente
               InterfaceRepositorioClientes repositorioRemotoClientes = lookupRemote();
               System.out.println("Efetuado conexao com servidor.");
               Cliente cliente = new Cliente();
               cliente.setNome("Paulo");
               cliente.setCpf("0434567-89");


               System.out.println("Gravando novo cliente.");
               repositorioRemotoClientes.criarCliente(cliente);


               System.out.println("Listando todos clientes.");
               List<Cliente> clientes = repositorioRemotoClientes.listarClientes();
               for(Cliente c : clientes){
                   System.out.println("Cliente: "+c.getNome()+" ("+c.getCpf()+")");
               }
        }catch (Exception e) {
               e.printStackTrace();
        }
    }
}



                                                              Prof. Adriano Teixeira de Souza
   Colocar um arquivo jboss-ejb-client.properties no
      diretório src, o qual é o diretório base para os
      arquivos fonte com o conteúdo abaixo.
endpoint.name=client-endpoint
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=127.0.0.1
remote.connection.default.port = 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false


     Executar o programa




                                            Prof. Adriano Teixeira de Souza
   Desenvolver uma aplicação JavaEE para
    fornecer o seguinte componente:
    ◦ CadastrarAluno (Aluno a);
      Um aluno tem matricula, nome, curso.

    ◦ Desenvolver uma aplicação console para utilizar o
      componente CadastraAluno, usando a interface
      CadastrarAlunoRemote




                             Prof. Adriano Teixeira de Souza

Mais conteúdo relacionado

Mais procurados

Testing Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldTesting Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldYura Nosenko
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsEduardo Mendes
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)Young-Ho Cho
 
Ch9 .Best Practices for Class-Based Views
Ch9 .Best Practices  for  Class-Based ViewsCh9 .Best Practices  for  Class-Based Views
Ch9 .Best Practices for Class-Based ViewsWilly Liu
 
การติดตั้งและเปิดใช้งาน IIS
การติดตั้งและเปิดใช้งาน IISการติดตั้งและเปิดใช้งาน IIS
การติดตั้งและเปิดใช้งาน IISmrprasirtsit
 
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015devCAT Studio, NEXON
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesecosio GmbH
 
객체지향적인 도메인 레이어 구축하기
객체지향적인 도메인 레이어 구축하기객체지향적인 도메인 레이어 구축하기
객체지향적인 도메인 레이어 구축하기Young-Ho Cho
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 OverviewMike Ensor
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈용근 권
 
JAD e levantamento de requisitos
JAD e levantamento de requisitosJAD e levantamento de requisitos
JAD e levantamento de requisitosEduardo Castro
 
La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesEric SIBER
 

Mais procurados (20)

Hibernate
HibernateHibernate
Hibernate
 
Testing Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 worldTesting Spring Boot application in post-JUnit 4 world
Testing Spring Boot application in post-JUnit 4 world
 
Java Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e ServletsJava Web - MVC básico com JSP e Servlets
Java Web - MVC básico com JSP e Servlets
 
JBoss AS / EAP and Java EE6
JBoss AS / EAP and Java EE6JBoss AS / EAP and Java EE6
JBoss AS / EAP and Java EE6
 
[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)[JWPA-1]의존성 주입(Dependency injection)
[JWPA-1]의존성 주입(Dependency injection)
 
Ch9 .Best Practices for Class-Based Views
Ch9 .Best Practices  for  Class-Based ViewsCh9 .Best Practices  for  Class-Based Views
Ch9 .Best Practices for Class-Based Views
 
การติดตั้งและเปิดใช้งาน IIS
การติดตั้งและเปิดใช้งาน IISการติดตั้งและเปิดใช้งาน IIS
การติดตั้งและเปิดใช้งาน IIS
 
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
이승재, 마비노기 듀얼: 분산 데이터베이스 트랜잭션 설계와 구현, NDC2015
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examples
 
객체지향적인 도메인 레이어 구축하기
객체지향적인 도메인 레이어 구축하기객체지향적인 도메인 레이어 구축하기
객체지향적인 도메인 레이어 구축하기
 
spring-boot-fr.pdf
spring-boot-fr.pdfspring-boot-fr.pdf
spring-boot-fr.pdf
 
Maven 3 Overview
Maven 3  OverviewMaven 3  Overview
Maven 3 Overview
 
우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈우아한테크세미나-우아한멀티모듈
우아한테크세미나-우아한멀티모듈
 
JAD e levantamento de requisitos
JAD e levantamento de requisitosJAD e levantamento de requisitos
JAD e levantamento de requisitos
 
La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiques
 
Maven
MavenMaven
Maven
 
Java persistence api 2.1
Java persistence api 2.1Java persistence api 2.1
Java persistence api 2.1
 

Destaque

Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkDesenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkAmazon Web Services LATAM
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesRodrigo Cândido da Silva
 
ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)mauriciopel
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBAdriano Teixeira de Souza
 
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0Rafael Carneiro
 
Capítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - CoulourisCapítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - CoulourisWindson Viana
 
RC - SLAP - Apresentação da disciplina de Redes (2011-1)
RC - SLAP - Apresentação da disciplina de Redes (2011-1)RC - SLAP - Apresentação da disciplina de Redes (2011-1)
RC - SLAP - Apresentação da disciplina de Redes (2011-1)UFPB
 
ACII - SL06 - Virtualizacao
ACII - SL06 - VirtualizacaoACII - SL06 - Virtualizacao
ACII - SL06 - VirtualizacaoUFPB
 
SC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
SC - EAD - SL05 - Criação e Desenvolvimeto de CursosSC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
SC - EAD - SL05 - Criação e Desenvolvimeto de CursosUFPB
 
ACII - SLAP - Apresentacao
ACII - SLAP - ApresentacaoACII - SLAP - Apresentacao
ACII - SLAP - ApresentacaoUFPB
 
SC - EAD - SL06 - O Ensino e o Instrutor
SC - EAD - SL06 - O Ensino e o InstrutorSC - EAD - SL06 - O Ensino e o Instrutor
SC - EAD - SL06 - O Ensino e o InstrutorUFPB
 
SC - EAD - SLAP - Apresentação
SC - EAD - SLAP - ApresentaçãoSC - EAD - SLAP - Apresentação
SC - EAD - SLAP - ApresentaçãoUFPB
 

Destaque (20)

Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic BeanstalkDesenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
Desenvolvimento Ágil de Aplicações Java na Nuvem com o AWS Elastic Beanstalk
 
EJB
EJBEJB
EJB
 
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrõesMC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
MC31 - Desenvolvimento um Aplicativo completo usando JSF, EJB e padrões
 
Visão Geral de EJB 3.0
Visão Geral de EJB 3.0Visão Geral de EJB 3.0
Visão Geral de EJB 3.0
 
EJB 3.1
EJB 3.1EJB 3.1
EJB 3.1
 
ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)ApresentaçãO Ejb (Enterprise Java Beans)
ApresentaçãO Ejb (Enterprise Java Beans)
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJB
 
Java ee com ejb 3
Java ee com ejb 3Java ee com ejb 3
Java ee com ejb 3
 
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
Os Melhores do Mundo, um comparativo entre Spring e EJB 3.0
 
Capítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - CoulourisCapítulo 2 - Sistemas Distribuídos - Coulouris
Capítulo 2 - Sistemas Distribuídos - Coulouris
 
RC - SLAP - Apresentação da disciplina de Redes (2011-1)
RC - SLAP - Apresentação da disciplina de Redes (2011-1)RC - SLAP - Apresentação da disciplina de Redes (2011-1)
RC - SLAP - Apresentação da disciplina de Redes (2011-1)
 
ACII - SL06 - Virtualizacao
ACII - SL06 - VirtualizacaoACII - SL06 - Virtualizacao
ACII - SL06 - Virtualizacao
 
SC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
SC - EAD - SL05 - Criação e Desenvolvimeto de CursosSC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
SC - EAD - SL05 - Criação e Desenvolvimeto de Cursos
 
ACII - SLAP - Apresentacao
ACII - SLAP - ApresentacaoACII - SLAP - Apresentacao
ACII - SLAP - Apresentacao
 
SC - EAD - SL06 - O Ensino e o Instrutor
SC - EAD - SL06 - O Ensino e o InstrutorSC - EAD - SL06 - O Ensino e o Instrutor
SC - EAD - SL06 - O Ensino e o Instrutor
 
SC - EAD - SLAP - Apresentação
SC - EAD - SLAP - ApresentaçãoSC - EAD - SLAP - Apresentação
SC - EAD - SLAP - Apresentação
 

Semelhante a Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)

Semelhante a Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7) (20)

GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Hibernate conceitos
Hibernate conceitosHibernate conceitos
Hibernate conceitos
 
Resumo Anotacoes Certificacao SCBCD 5
Resumo Anotacoes Certificacao SCBCD 5Resumo Anotacoes Certificacao SCBCD 5
Resumo Anotacoes Certificacao SCBCD 5
 
Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
[Java] Contexts and Dependency Injection em JEE6
[Java] Contexts and Dependency Injection em JEE6[Java] Contexts and Dependency Injection em JEE6
[Java] Contexts and Dependency Injection em JEE6
 
CDI -Contextos e Dependências
CDI -Contextos e DependênciasCDI -Contextos e Dependências
CDI -Contextos e Dependências
 
Hibernate
HibernateHibernate
Hibernate
 
CDI Extensions e DeltaSpike
CDI Extensions e DeltaSpikeCDI Extensions e DeltaSpike
CDI Extensions e DeltaSpike
 
Palestra
PalestraPalestra
Palestra
 
Produtividade com JavaServer Faces
Produtividade com JavaServer FacesProdutividade com JavaServer Faces
Produtividade com JavaServer Faces
 
Workshop05
Workshop05Workshop05
Workshop05
 
Curso De Hibernate 3
Curso De Hibernate 3Curso De Hibernate 3
Curso De Hibernate 3
 
Hibernate
HibernateHibernate
Hibernate
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
Mini curso hibernate com anotações
Mini curso hibernate com anotaçõesMini curso hibernate com anotações
Mini curso hibernate com anotações
 
J530 15 workshop
J530 15 workshopJ530 15 workshop
J530 15 workshop
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Hibernate - Aula 01
Hibernate - Aula 01Hibernate - Aula 01
Hibernate - Aula 01
 
JSF & REST
JSF & RESTJSF & REST
JSF & REST
 
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
 

Mais de Adriano Teixeira de Souza

Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 

Mais de Adriano Teixeira de Souza (20)

Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 

Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)

  • 1. Comunicação Distribuída - EJB Prof. Adriano Teixeira de Souza
  • 2. Estratégias diferentes que permitem a comunicação entre aplicações distribuídas.  Tipos distintos de comunicação em um sistema distribuído: ◦ Sockets ◦ RMI - Remote Method Invocation ◦ CORBA – Commom Object Request Broker Architecture ◦ EJB – Enterprise Java Bean ◦ Web Services Prof. Adriano Teixeira de Souza
  • 4. Se utilizar a versão 7.0 do JBoss , não é requerida uma instalação, basta apenas descompactar o arquivo na sua máquina e adicionar a variável de ambiente JBOSS_HOME; Prof. Adriano Teixeira de Souza
  • 5. Vá em Iniciar -> Painel de controle -> Sistema -> Avançado ->Variáveis de ambiente;  Adicione as variáveis JAVA_HOME e JBOSS_HOME, com os seguintes valores: ◦ JAVA_HOME = “meu caminho do JDK” ◦ JBOSS_HOME = “meu caminho do Jboss”  Caso não tenha permissão, “sete” as variáveis em tempo de console (abra uma “console” e digite): ◦ SET JAVA_HOME=diretorioJVM ◦ SET JBOSS_HOME=diretorio do JBOSS ◦ Em seguida, entre na pasta bin e digite RUN.BAT Prof. Adriano Teixeira de Souza
  • 7. JEE: Acrônimo de Java Enterprise Edition Kit  Plataforma Java voltada para aplicações corporativas, no modelo de sistema distribuído.  Voltada para aplicações multi-camadas, baseadas em componentes que são executados em um servidor de aplicações (JBoss, exemplo).  A plataforma Java EE é considerada um padrão de desenvolvimento, pois o fornecedor de software nesta plataforma deve seguir determinadas regras compatíveis com Java EE. Prof. Adriano Teixeira de Souza
  • 8. A plataforma J2EE contém uma série de especificações, cada uma com funcionalidades distintas. Entre elas, tem-se: ◦ EJBs (Enterprise Java Beans), utilizados no desenvolvimento de componentes de software. Eles permitem que o programador se concentre nas necessidades do negócio do cliente, enquanto questões de infra-estrutura, segurança, disponibilidade e escalabilidade são responsabilidade do servidor de aplicações. ◦ JPA (Java Persistence API), é uma API que padroniza o acesso a banco de dados através de mapeamento Objeto/Relacional dos Enterprise Java Beans ◦ JTA (Java Transaction API), é uma API que padroniza o tratamento de transações dentro de uma aplicação Java. ◦ JDBC (Java Database Connectivity), utilizado no acesso a bancos de dados; ◦ JCA (Java Connector Architecture), é uma API que padroniza a ligação a aplicações legadas. ◦ Servlets e JSP (Java Server Pages), utilizados para o desenvolvimento de aplicações Web com conteúdo dinâmico. ◦ E outros. Prof. Adriano Teixeira de Souza
  • 9. • Transações gerenciadas • Segurança • Clustering • Escalabilidade • Alta Disponibilidade • Comunicação Assíncrona • Integração com Legado • Persistência • etc… Prof. Adriano Teixeira de Souza
  • 10.
  • 11. Representa um objeto de entidade de negócios que existe no armazenamento persistente (banco de dados, por exemplo)  Classes simplificadas, chamadas “POJOS”, mapeadas com JPA ;  Flexíveis para qualquer banco de dados relacional;  Tão portáveis, que podem ser usados também fora de um servidor de aplicação (aplicação “desktop”);  São agrupados em uma unidade de persistência; Prof. Adriano Teixeira de Souza
  • 12. Espelham objetos do mundo real;  Possuem uma chave primária “id”(pode ser uma classe ou um tipo primitivo);  Identificado pela anotação @Entity;  Não necessitam de nenhuma interface;  Gerenciados pelo EntityManager; Prof. Adriano Teixeira de Souza
  • 13.  Sistema de Cadastro de Cliente Prof. Adriano Teixeira de Souza
  • 14. @Entity . @Table(name=“cliente”) public class Cliente implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=IDENTITY) private int id; private String nome; private String cpf; public Cliente() { } // get’s e set’s //equals e hashCode } // fim da entidade Prof. Adriano Teixeira de Souza
  • 15. @Entity ◦ Indica ao provedor de persistência que a Classe bean será mapeada para uma tabela de banco de dados e gerenciada por um Entity Maganer;  @Table ◦ Informa ao container EJB para qual tabela do banco será mapeada a classe bean;  @Column ◦ Informa ao container EJB para qual coluna da tabela a propriedade do bean será mapeada;  @Id ◦ Informa que atributo será tratado como chave primária na tabela de banco de dados.  @GeneratedValue - define que o valor do atributo “id” será gerado automaticamente no momento em que os objetos forem persistidos (inseridos na tabela). Prof. Adriano Teixeira de Souza
  • 16. Implementar a interface java.io.Serializable não é obrigatório. ◦ Com “Serializable” é possível usar a mesma classe tanto para persistência, quanto para transferência de dados (entre sistemas ou camadas).  Assim como todo POJO, as propriedades de um Entity Bean são acessadas através dos métodos get’s e set’s. Prof. Adriano Teixeira de Souza
  • 17. Conjunto de todos os entity beans;  Quem gerencia é um serviço de EntityManager;  Cada unidade de persistência deve estar associada a um banco de dados;  Todas essas informações estão descritas em um arquivo chamado persistence.xml  Localizado no diretório META-INF da aplicação  A unidade de persistência é identificada pela marcação: ◦ <persistence-unit name=“xxxx”>  Onde “xxxx” é o nome a ser referenciado como a unidade de persisência. Prof. Adriano Teixeira de Souza
  • 18. O arquivo persistence.xml (definido com o datasource do banco de dados) <?xml version="1.0" encoding="UTF-8"?> <persistence> <persistence-unit name= “nomeUP” > <jta-data-source> java:jboss/datasources/TesteSQLiteDS </jta-data-source> </persistence-unit> </persistence> Prof. Adriano Teixeira de Souza
  • 19. <persistence-unit name=“nomeUP”> ◦ Conjunto das classes gerenciadas por um Entity Manager  <jta-data-source> ◦ Define o banco de dados que será usado para esta implantação. ◦ No JBoss deve ser definido em um arquivo “.xml” chamado standalone.xml. Prof. Adriano Teixeira de Souza
  • 20. São componentes EJB do lado do servidor que podem ser acessados utilizando vários protocolos de objetos distribuídos;  Para acessar uma aplicação que foi instalada no servidor (JBoss), a aplicação cliente invoca os métodos do Session Bean.  O Session Bean executa o trabalho para seu cliente, protegendo o cliente da complexidade através da execução de tarefas de negócio dentro do servidor.  Suas atividades são geralmente transitórias (não tem um estado persistente); Prof. Adriano Teixeira de Souza
  • 21. Stateless: ◦ Não mantém estado; ◦ Cada método é completamente independente ;  Stateful: ◦ Mantém estado; ◦ Não é compartilhado entre clientes;  Todo Session Bean deve implementar uma interface local ou remota. ◦ Local – o cliente compartilha a mesma máquina (processador e memória) que o servidor ◦ Remoto – o cliente acessa de forma remota (de outra máquina), mesmo estando na mesma máquina que o servidor Prof. Adriano Teixeira de Souza
  • 22. Será criado um “session beans” (componente) chamado ClienteFacade, que fornecerá todos os serviços/tarefas de um cadastro de clientes: ◦ Cadastrar um Cliente ◦ Listar os Clientes cadastrados ◦ Localizar um Cliente  E outros que se tornarem necessários. •Por convenção, todos os componentes “session beans” terão no nome o sufixo “Facade”. •A classe interface terá o mesmo nome da classe “session beans”, adicionado com o sufixo “Remote” ou “Local”, dependendo do uso. Prof. Adriano Teixeira de Souza
  • 23. @Stateless (mappedName =" ejb/ClienteBean") @LocalBean public class ClienteFacade implements ClienteFacadeRemote { @PersistenceContext private EntityManager manager; public void cadastraCliente(Cliente cliente) { manager.persist(cliente); } public Cliente localizaCliente(int id) { return manager.find(Cliente.class, id); } } Prof. Adriano Teixeira de Souza
  • 24. @Stateless: ◦ Mostra que o componente ClienteFacade não mantém o estado (objetos/dados em memória);  @PersistenceContext ◦ Obtém o acesso a um serviço EntityManager; Prof. Adriano Teixeira de Souza
  • 25. Especifica quais métodos de negócio um cliente tem permissão para invocar no EJB;  @Remote ◦ Instrui o container de que esta é uma interface remota para o ClienteFacade Prof. Adriano Teixeira de Souza
  • 26. @Remote public interface ClienteFacadeRemote { public void cadastraCliente(Cliente cliente); public Cliente localizaCliente(int id); public List<Cliente> listaClientes(); } Prof. Adriano Teixeira de Souza
  • 28. Considere um novo projeto para representar a aplicação “servidora” do Sistema de Cadastro de Clientes.  Crie um projeto do tipo EJB: File – New – Project ... EJB Em seguida, informe: a) O nome do projeto b) O servidor para execução c) A configuração do JPA Veja a seguir... Prof. Adriano Teixeira de Souza
  • 29. a) Nome do projeto b) Servidor para execução c) Configuração do JPA d) Pressione Next duas vezes Prof. Adriano Teixeira de Souza
  • 30. a) Defina a plataforma b) Adicione a conexao c) Selecione o driver e) Pressione Finish Prof. Adriano Teixeira de Souza
  • 31. a) Selecione a conexão b) Marque a opção para listar classes no arquivo persistence.xml c) Marque a opção para criar o arquivo orm.xml Prof. Adriano Teixeira de Souza
  • 32. Visão do projeto JPA(“AULAJEE6-JPA”), na perspectiva “Java EE”: Área (pasta) de código fonte (source) Prof. Adriano Teixeira de Souza
  • 33. As entidades utilizam anotações presentes na biblioteca do JPA, Java Persistence API.  Considere a entidade Cliente apresentada anteriormente.  Crie a classe Cliente.java no pacote modelo conforme figura abaixo. Prof. Adriano Teixeira de Souza
  • 34. Após importar as classes, adicione as referências das entidade no arquivo “persistence.xml”. ◦ Use o recurso “Generate Entities from Tables” 34
  • 35. Adicione o nome da “data-source” (TesteSQLiteDS) no arquivo persistence.xml. ◦ Use a tag:  <jta-data-source>java:jboss/datasources/TesteSQLiteDS</jta-data-source> ◦ Ou use o editor (assistente) na aba “Connection”. Informe em JTA_Data Source: java:jboss/datasources/TesteSQLiteDS Prof. Adriano Teixeira de Souza
  • 36. Diferente da configuração em aplicação desktop (console ou stand-alone), uma aplicação no JBOSS fica responsável pelo acesso aos recursos de banco, que são gerenciados pela JTA – Java Transaction API. 36
  • 37. Abra o arquivo “standalone.xml” no diretório “configuration” do JBOSS contendo o acesso ao banco de dados.  O exemplo a seguir, mostra o DS (data-source) TesteSQLiteDS, que registra esse nome no serviço de diretório JNDI (Java Naming and Directory Interface). Arquivo “standalone.xml” Diretório: jboss-as-7.1.0.Finalstandaloneconfiguration Prof. Adriano Teixeira de Souza
  • 38. Obs: 1. Implantar o driver do MySQL no diretório jboss-as-7.1.0.Finalmodulesorgsqlitemain Prof. Adriano Teixeira de Souza
  • 39. Considere um novo projeto para representar a aplicação “servidora” do Sistema de Eventos.  Crie um projeto do tipo EJB: File – New – Project ... EJB Em seguida, informe: a) O nome do projeto b) A versão do EJB (use a 3.1) Veja a seguir... Prof. Adriano Teixeira de Souza
  • 40. a) Nome do projeto b) Versão do EJB (usar a 3.1) c) Clique em Next duas vezes d) Marque a opção “Generate ejb- jar.xml deployment descriptor” Prof. Adriano Teixeira de Souza
  • 41. Visão do projeto EJB (“AULAJEE6-EJB”), na perspectiva “Java EE”: Área (pasta) de código fonte (source) Prof. Adriano Teixeira de Souza
  • 42. Nesse passo serão criados o componente ClienteFacade e sua interface remota ClienteFacade Remote.  No Eclipse, seleciona a pasta de código e escolha a opção New – Session Bean (na perspectiva JEE). ◦ Pode ser também: File - New – EJB – Session Bean 42
  • 43. Criar o “session bean”: ClienteFacade na pacote “facade” (dentro da pasta de código ejbModule).  Desmarque a opção “Local” e marque “Remote” ◦ Altere o nome da interface remota para façade.ClienteFacade Remote Prof. Adriano Teixeira de Souza
  • 44. 44
  • 45. 45
  • 47. Deployment (implantação) é o conjunto de atividades que tornam um software, ou componentes de software, pronto para uso.  Durante o deployment, o container EJB lê as configurações contidas em arquivos descritores (deployment descriptor) ou nas annotations (anotações) no código-fonte e prepara um ambiente padronizado para a execução dos beans. ◦ O deployment descriptor especifica quais serviços de infra- estrutura o container EJB proverá aos enterprise beans, desde que o deployment seja feito num container EJB certificado. ◦ No Eclipse, cria-se o descritor através do atalho (sobre o projeto):  Java EE Tools – Generate Deployment Descriptor Stub  Será criado o arquivo ejb-jar.xml na pasta META-INF (do projeto) Prof. Adriano Teixeira de Souza
  • 48. Um arquivo “JAR” (Java Archive) é uma forma conveniente de “empacotar” componentes para uso em deployment  O processo compacta (“zipa”) todas as classes, interfaces e arquivos descritores para um único arquivo JAR  Em seguida esse arquivo deve ser copiado para a pasta “deploy” do JBOSS (ou do servidor de aplicação em uso).  No Eclipse, você utiliza a opção: ◦ File – Export – EJB Jar File ◦ Ou usa o menu de atalho (veja na próxima figura) Prof. Adriano Teixeira de Souza
  • 49. Escolha o diretório destino no do Jboss (..serverdefaultdeploy) Prof. Adriano Teixeira de Souza
  • 50. Para implantar é necessário iniciar o servidor JBoss ◦ Entre no diretório “bin”, onde está o Jboss instalado ◦ Execute o arquivo “run.bat” (na console Windows) ◦ Aguarde a carga .... 50
  • 51. O JBoss exige que você coloque seu projeto EJB “JAR” em um dirétorio deploy. ◦ O default é a pasta “jboss-as-7.1.0.Finalstandalonedeployments”  O servidor examina o arquivo JAR em tempo de execução quando o servidor é inicializado para determinar quais containers EJB devem ser criados e acoplados em tempo de execução. ◦ Qualquer atualização do “JAR” pode ser feita com o JBoss “rodando” Prof. Adriano Teixeira de Souza
  • 52. Acessando os componentes EJB remotamente em uma aplicação console.
  • 53. Com o componente EJB ClienteFacade implantado, vamos testar o acesso de um cliente remoto (aplicação console)  Para isso devemos criar o cliente que se conecta ao servidor, localiza a interface remota do componente ClienteFacade e interage com ele para criar e selecionar entidades “Cliente” no banco de dados. Prof. Adriano Teixeira de Souza
  • 54. No Eclipse, crie um nov projeto Java EE, do tipo “Java Project”. ◦ Use a opção File – New Project – JavaEE
  • 55. Adicione o JAR criado anteriormente, para manter as dependências das classes entidades (JPA) e a EJB remoto. Prof. Adriano Teixeira de Souza
  • 57. Adicione a bibliotecas para o cliente do diretório conforme abaixo.
  • 58. public class Principal { private static InterfaceRepositorioClientes lookupRemote() throws NamingException { final Hashtable jndiProperties = new Hashtable(); jndiProperties.put( Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); final Context context = new InitialContext(jndiProperties); final String appName = ""; final String moduleName = "TesteJPA-EJB"; final String distinctName = ""; final String beanName = ServidorClientes.class.getSimpleName(); final String viewClassName = InterfaceRepositorioClientes.class.getName(); return (InterfaceRepositorioClientes) context.lookup( "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName); } Prof. Adriano Teixeira de Souza
  • 59. public static void main(String[] args) throws NamingException { try{ // cria um cliente InterfaceRepositorioClientes repositorioRemotoClientes = lookupRemote(); System.out.println("Efetuado conexao com servidor."); Cliente cliente = new Cliente(); cliente.setNome("Paulo"); cliente.setCpf("0434567-89"); System.out.println("Gravando novo cliente."); repositorioRemotoClientes.criarCliente(cliente); System.out.println("Listando todos clientes."); List<Cliente> clientes = repositorioRemotoClientes.listarClientes(); for(Cliente c : clientes){ System.out.println("Cliente: "+c.getNome()+" ("+c.getCpf()+")"); } }catch (Exception e) { e.printStackTrace(); } } } Prof. Adriano Teixeira de Souza
  • 60. Colocar um arquivo jboss-ejb-client.properties no diretório src, o qual é o diretório base para os arquivos fonte com o conteúdo abaixo. endpoint.name=client-endpoint remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false remote.connections=default remote.connection.default.host=127.0.0.1 remote.connection.default.port = 4447 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false  Executar o programa Prof. Adriano Teixeira de Souza
  • 61. Desenvolver uma aplicação JavaEE para fornecer o seguinte componente: ◦ CadastrarAluno (Aluno a);  Um aluno tem matricula, nome, curso. ◦ Desenvolver uma aplicação console para utilizar o componente CadastraAluno, usando a interface CadastrarAlunoRemote Prof. Adriano Teixeira de Souza