3.2.10. Alterações da Invocação Remota


Sumário

No JBoss EAP 5, a interface remota do EJB foi limitada ao JNDI, por default, sob o nome "ejbName/local" para interfaces locais e "ejbName/remote" para interfaces remotas. O aplicativo do cliente pesquisa então o bean usando o "ejbName/remote".

No JBoss EAP 6, um novo API do cliente EJB foi introduzido para realizar a invocação. No entanto, caso não deseje regravar o seu código para uso do novo API, é possível modificar o código existente para uso do ejb:BEAN_REFERENCE para o acesso remoto aos EJBs com a seguinte sintaxe.
Segue abaixo a sintaxe ejb:BEAN_REFERENCE para os beans stateless:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>

Copy to Clipboard Toggle word wrap
Segue abaixo a sintaxe ejb:BEAN_REFERENCE para os beans stateful:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful

Copy to Clipboard Toggle word wrap
Os valores a serem substituídos na sintaxe acima são:
  • <app-name> - o nome do aplicativo dos EJBs implantados. Isto é tipicamente o nome ear sem o sufixo .ear, no entanto, o nome pode ser substituído no arquivo application.xml. Caso o aplicativo não seja implantado com um .ear, esse valor é um string vazio. Vamos assumir que esta amostra não estava implantada como um EAR.
  • <module-name> - o nome do módulo dos EJBs implantados no servidor. Isto é tipicamente o nome jar da implantação EJB, sem o sufixo .jar, porém isto pode ser substituído usando o ejb-jar.xml. Nesta amostra, assuma que os EJBs foram implantados num jboss-ejb-remote-app.jar, portanto o nome do módulo é jboss-ejb-remote-app.
  • <distinct-name> - um nome distinto opcional para o EJB. Esta amostra não usa um nome distinto, portanto isto usa um string vazio.
  • <bean-name> - por default é um nome de classe simples da classe de implantação do bean.
  • <fully-qualified-classname-of-the-remote-interface> - o nome da classe inteiramente qualificado de visualização remota.
Atualização do código do cliente

Assuma que você implantou o seguinte EJB stateless a um servidor do JBoss EAP 6. Perceba que isto o expõe a uma visualização remota para o bean.

@Stateless
@Remote(RemoteCalculator.class)
public class CalculatorBean implements RemoteCalculator {
 
    @Override
    public int add(int a, int b) {
        return a + b;
    }
 
    @Override
    public int subtract(int a, int b) {
        return a - b;
    }
}
Copy to Clipboard Toggle word wrap
No JBoss EAP 5, a pesquisa EJB do cliente e a invocação foi codificada como o seguinte:
InitialContext ctx = new InitialContext();
RemoteCalculator calculator = (RemoteCalculator) ctx.lookup("CalculatorBean/remote");
int a = 204;
int b = 340;
int sum = calculator.add(a, b);
Copy to Clipboard Toggle word wrap
No JBoss EAP 6, a pesquisa do cliente e a invocação com o uso da informação descrita acima, é codificada como o seguinte:
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 = "jboss-ejb-remote-app";
final String distinctName = "";
final String beanName = CalculatorBean.class.getSimpleName();
final String viewClassName = RemoteCalculator.class.getName();
final RemoteCalculator statelessRemoteCalculator =  (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName);
 
int a = 204;
int b = 340;
int sum = statelessRemoteCalculator.add(a, b);
Copy to Clipboard Toggle word wrap
Caso o seu cliente estiver acessando um EJB stateful, você deve anexar "?stateful" ao final da pesquisa do contexto como abaixo:
final RemoteCalculator statefulRemoteCalculator =  (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")
Copy to Clipboard Toggle word wrap

Uma amostra de trabalho completa, incluindo ambos código do servidor e cliente podem ser encontrados nas Iniciações Rápidas. Refira-se à Revisão dos Tutoriais da Iniciação Rápida no capítulo nomeado Iniciando os Aplicativos de Desenvolvimento no Guia de Desenvolvimento para o JBoss EAP 6 no https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.
Voltar ao topo
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

© 2025 Red Hat