3.2.10. Alterações da Invocação Remota
3.2.10.1. Migração dos Aplicativos Implantados do JBoss EAP 5 que realiza Invocações Remotas ao JBoss EAP 6 Copiar o linkLink copiado para a área de transferência!
Copiar o linkLink copiado para a área de transferência!
Sumário
Existem duas maneiras de tornar as invocações remotas ao servidor no JBoss EAP 6:
- Você pode usar o novo API do cliente EJB específico do JBoss para realizar a invocação.
- Você pode usar o JNDI para pesquisar um proxy para seu bean e invocar no proxy retornado.
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, você pode usar o
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
Para beans stateful:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
ejb:NAMESPACE_NAME para acesso remoto ao EJBs com a seguinte sintaxe; para beans stateless:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful
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 é uma sequência vazia. 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, mas pode ser substituído usando o ejb-jar.xml. Nessa amostra, assuma que os EJBs foram implantados num jboss-as-ejb-remote-app.jar, de forma que o nome do módulo é jboss-as-ejb-remote-app.<distinct-name>- é um nome distinto opcional para o EJB. Essa amostra não usa um nome distinto, portanto usa uma sequência vazia.<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.
final RemoteCalculator statefulRemoteCalculator = (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")
final RemoteCalculator statefulRemoteCalculator = (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")
Uma amostra de trabalho completa, incluindo ambos código do cliente e servidor pode ser encontrada no Quickstart. Para maiores informações, consulte a Revisão de Tutoriais do Quickstart no capítulo Iniciação dos Aplicativos de Desenvolvimento do Guia de Desenvolvimento para o JBoss EAP 6 no https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.
Para maiores informações sobre as invocações remotas usando o JNDI, refira-se à Invocação do Bean de Sessão Remotamente usando o JNDI no capítulo Enterprise JavaBeans do Guia de Desenvolvimento para o JBoss EAP 6 no https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.