3.2.10.2. Invocação Remota de um Bean de Sessão usando JNDI


Essa tarefa descreve como adicionar suporte a um cliente remoto para a invocação dos beans de sessão usando JNDI. Essa tarefa presume que o projeto esteja sendo construído usando Maven.
A seção início rápido ejb-remote contém os projetos Maven operantes que demostram essa funcionalidade. Esta seção contém projetos para ambos os beans de sessão para implantação e o cliente remoto. As amostras de código abaixo foram tiradas do projeto de cliente remoto.
Essa tarefa presume que os beans de sessão não requerem autenticação.

Atenção

A Red Hat recomenda que você explicitamente desabilite o SSL a favor do TLSv1.1 ou TLSv1.2 em todos os pacotes afetados.

Pré-requisitos

Os pré-requisitos a seguir devem ser cumpridos antes da inicialização:
  • Você já deve possuir um projeto Maven criado e pronto para ser usado.
  • A configuração para o repositório Maven do JBoss EAP 6 já foi adicionada.
  • Os beans de sessão que você deseja invocar já estão implantados.
  • Os beans de sessão implantados implementam as interfaces comerciais remotas.
  • As interfaces comerciais remotas dos beans de sessão estão disponíveis como uma dependência Maven. Caso as interfaces comerciais remotas estejam disponíveis apenas como um arquivo JAR, recomenda-se a adição do JAR ao seu repositório Maven como um artefato. Consulte a documentação Maven para orientações install:install-file sobre as direções, http://maven.apache.org/plugins/maven-install-plugin/usage.html
  • Você precisa saber o nome do host e a porta JNDI do servidor hospedando os beans de sessão.
Para invocar um bean de sessão de um cliente remoto, você precisa primeiro configurar o projeto corretamente.

Procedimento 3.22. Adição da Configuração do Projeto Maven para Invocação Remota dos Beans de Sessão

  1. Adicione as dependências do projeto necessárias

    O pom.xml para o projeto deve ser atualizado para incluir as dependências necessárias.
  2. Adicione o arquivo jboss-ejb-client.properties

    A API do cliente EJB JBoss espera encontrar um arquivo na raiz do projeto nomeado jboss-ejb-client.properties que contenha a informação da conexão para o serviço JNDI. Adicione este arquivo ao diretório src/main/resources/ do seu projeto com o seguinte conteúdo.
    # In the following line, set SSL_ENABLED to true for SSL
    remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
    remote.connections=default
    # Uncomment the following line to set SSL_STARTTLS to true for SSL
    # remote.connection.default.connect.options.org.xnio.Options.SSL_STARTTLS=true
    remote.connection.default.host=localhost
    remote.connection.default.port = 4447
    remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
    # Add any of the following SASL options if required
    # remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
    # remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false
    # remote.connection.default.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=JBOSS-LOCAL-USER
    
    Copy to Clipboard Toggle word wrap
    Altere a porta e o nome do host para coincidir com o seu servidor. 4447 é o número de porta padrão. Para uma conexão segura, configure a linha SSL_ENABLED como true e remova os comentários da linha SSL_STARTTLS. A interface remota no contêiner suporta as conexões seguras e não seguras usando a mesma porta.
  3. Adicione dependências para as interfaces comerciais remotas

    Adicione as dependências Maven ao pom.xml para as interfaces comerciais remotas dos beans de sessão.
    <dependency>
       <groupId>org.jboss.as.quickstarts</groupId>
       <artifactId>jboss-ejb-remote-server-side</artifactId>
       <type>ejb-client</type>
       <version>${project.version}</version>
    </dependency>
    Copy to Clipboard Toggle word wrap
Agora que o projeto foi configurado corretamente, você pode adicionar o código para acessar e invocar os beans de sessão.

Procedimento 3.23. Obtenção de um Proxy Bean usando JNDI e Invocação de Métodos do Bean

  1. Maneje as exceções verificadas

    Dois dos métodos usados nos códigos a seguir (InitialContext() e lookup()) possuem uma exceção verificada do tipo javax.naming.NamingException. Essas chamadas de método devem estar inseridas em um bloco de tentativa/captura que capture NamingException ou em um método que seja declarado para lançar NamingException. O início rápido ejb-remote utiliza a segunda técnica.
  2. Crie um Contexto JNDI

    Um objeto do Contexto JNDI fornece o mecanismo para solicitar recursos do servidor. Crie um contexto JNDI usando o seguinte código:
    final Hashtable jndiProperties = new Hashtable();
    jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming");
    final Context context = new InitialContext(jndiProperties);
    Copy to Clipboard Toggle word wrap
    As propriedades de conexão para o serviço JNDI são lidas a partir do arquivo jboss-ejb-client.properties.
  3. Use o método lookup() do Contexto JNDI para obter um proxy bean

    Invoque o método lookup() do proxy bean e passe-o o nome JNDI do bean de sessão que você necessita. Isto retornará um objeto que deve ser convertido para o tipo da interface comercial remota que contém os métodos que você deseja invocar.
    final RemoteCalculator statelessRemoteCalculator = (RemoteCalculator) context.lookup(
        "ejb:/jboss-ejb-remote-server-side//CalculatorBean!" + 
        RemoteCalculator.class.getName());
    
    Copy to Clipboard Toggle word wrap
    Os nomes JNDI de bean de sessão são definidos usando uma sintaxe especial. Consulte Seção 3.2.10.3, “Referência de Nomeação JNDI EJB ” para mais informações.
  4. Invocação de Métodos

    Agora que você possui um objeto bean proxy, você pode invocar qualquer um dos métodos contidos na interface comercial remota.
    int a = 204;
    int b = 340;
    System.out.println("Adding " + a + " and " + b + " via the remote stateless calculator deployed on the server");
    int sum = statelessRemoteCalculator.add(a, b);
    System.out.println("Remote calculator returned sum = " + sum);
    Copy to Clipboard Toggle word wrap
    O bean proxy passa a solicitação de invocação do método para o bean de sessão no servidor, onde é executado. O resultado é retornado ao bean proxy que, então, o retorna ao chamador. A comunicação entre o bean proxy e o bean de sessão remoto é transparente ao chamador.
Agora você deve conseguir configurar um projeto Maven para suportar a invocação dos beans de sessão em um servidor remoto e gravar o código para invocar os métodos dos beans de sessão usando um bean proxy recuperado do servidor usando JNDI.
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2026 Red Hat
Voltar ao topo