3.2.10. Cambios de invocaciones remotas


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.
Esta sección cubre la opción 2: codificación de cambios requeridos para los clientes que usan JNDI.

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 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>

Copy to Clipboard Toggle word wrap
Para los beans con estado:
ejb:<app-name>/<module-name>/<distinct-name>/<bean-name>!<fully-qualified-classname-of-the-remote-interface>?stateful

Copy to Clipboard Toggle word wrap
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.

@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
En JBoss EAP 5, la búsqueda EJB del cliente y la invocación se codificaba de manera similar a esto:
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
En JBoss EAP 6, usando la información descrita anteriormente, la búsqueda del cliente e invocación se codifica así:
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-as-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
Si su cliente está accediendo un EJB con estado debe agregar "?stateful" al final de la búsqueda del contexto así:
final RemoteCalculator statefulRemoteCalculator =  (RemoteCalculator) context.lookup("ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName + "?stateful")
Copy to Clipboard Toggle word wrap

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/.
Red Hat logoGithubredditYoutubeTwitter

Aprender

Pruebe, compre y venda

Comunidades

Acerca de la documentación de Red Hat

Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar. Explore nuestras recientes actualizaciones.

Hacer que el código abierto sea más inclusivo

Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.

Acerca de Red Hat

Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.

Theme

© 2026 Red Hat
Volver arriba