3.2.10. Cambios de invocaciones remotas
3.2.10.1. Migración de aplicaciones implementadas de JBoss EAP 5 que realizan invocaciones remotas en JBoss EAP 6 Copiar enlaceEnlace copiado en el portapapeles!
Copiar enlaceEnlace copiado en el portapapeles!
Resumen
En JBoss EAP 6, hay dos maneras de realizar invocaciones remotas al servidor:
- Puede utilizar la nueva API cliente EJB específica de JBoss para realizar la invocación.
- Puede utilizar JNDI para buscar un proxy para su bean e invocar en ese proxy retornado.
En JBoss EAP 5, la interfaz remota EJB se enlazaba en JNDI por defecto bajo el nombre "ejbName/local" para las interfaces locales y "ejbName/remote" para las interfaces remotas. Luego la aplicación cliente buscaba el bean usando "ejbName/remote".
En JBoss EAP 6 se usa el
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
Para los beans con estado:
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
ejb:NAMESPACE_NAME para acceso remoto a las EJBs con la siguiente sintaxis: Para los beans sin estado:
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
Los valores a sustituirse en la sintaxis anterior son:
<app-name>- el nombre de la aplicación de las EJBs implementadas. Este es usualmente el nombre ear sin el sufijo .ear, sin embargo, el nombre se puede sobreescribir en el archivo application.xml. Si la aplicación no se implementa como un .ear, este valor es una cadena vacía. Asuma que este ejemplo no se implementaba como un EAR.<module-name>- el nombre del módulo de las EJBs implementadas en el servidor. Este es usualmente el nombre jar de la implementación EJB sin el sufijo .jar, pero se puede sobreescribir usando el ejb-jar.xml. En este ejemplo, asuma que las EJBs se implementaban en una jboss-as-ejb-remote-app.jar así que el nombre del módulo es jboss-as-ejb-remote-app.<distinct-name>- un nombre diferente opcional para la EJB. Este ejemplo no usa un nombre diferente así que utiliza una cadena vacía.<bean-name>- por defecto, es el nombre simple de la clase de la clase de la implementación del bean.<fully-qualified-classname-of-the-remote-interface>- el nombre de la clase completamente calificada de la vista remota.
Actualización del código del cliente
Asuma que ha implementado los siguientes EJB sin estado en un servidor de JBoss EAP 6. Note que expone una vista remota para el 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")
Puede encontrar un ejemplo completo que funciona incluyendo el código del servidor y del cliente en los inicios rápidos. Para obtener mayor información consulte Review the Quickstart Tutorials en el capítulo titulado Inicie a desarrollar aplicaciones en la Guía de desarrollo para JBoss EAP 6 en https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.
Para obtener mayor información sobre las invocaciones remotas usando JNDI, consulte Invocación de un bean de sesión remotamente usando JNDI en el capítulo titulado JavaBeans empresariales en la Guía de desarrollo para JBoss EAP 6 en https://access.redhat.com/site/documentation/JBoss_Enterprise_Application_Platform/.