Interfaces de extensión de servlets

Puede utilizar generadores de extensiones y manejadores para añadir contenido al mensaje remoto para llamadas a servlets y portlets. La extensión de los servlets también puede modificar el comportamiento actual ya que refuerza el concepto de filtro. La infraestructura de extensiones del asignador de solicitudes remotas (RRD) se basa en los generadores de extensiones, que asocian datos arbitrarios a una solicitud RRD de salida, y en los manejadores de extensiones, que consumen datos y realizan acciones basadas en los datos recibidos. Para obtener más información sobre el paquete com.ibm.wsspi.rrd.extension, consulte el artículo sobre interfaces de programación de aplicaciones (API) adicionales para administradores.

Generadores de extensiones

Los generadores de extensiones, que forman parte de una cadena de generadores de extensiones, se invocan antes de iniciar una solicitud RRD. Esta cadena de generadores de extensiones se define en el punto de extensión com.ibm.wsspi.rrd.generators del archivo plugin.xml que puede residir en una de las ubicaciones siguientes:
  • Otro paquete OSGI.
  • Cualquier biblioteca compartida. Por ejemplo, una biblioteca compartida enlazada a un cargador de clases del servidor.
  • En el directorio WEB-INF de una aplicación web local habilitada para RRD.

Cada generador de extensiones se define mediante un elemento generador, que contiene un atributo de ID que se utiliza para asignar un identificador exclusivo al generador de extensiones, de modo que cualquier generador de extensiones puede ser el destino de las extensiones añadidas a los datos de la respuesta RRD. El atributo class se utiliza para especificar el nombre de clase del generador de extensiones que debe implementar la interfaz com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator. Cada generador de extensiones puede tener asociado también una atributo order, que resulta útil para aplicar el orden de ejecución del generador de extensiones en un entorno en el que hay varios archivos de descriptor de generador de extensiones. Adicionalmente, un generador tiene un atributo obligatorio denominado type que define el tipo del generador. Para el RRD del servlet, el valor es “servlet” la clase debe implementar la interfaz com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator.

Adicionalmente, cada generador de extensiones se puede proporcionar con un número arbitrario de parámetros de inicialización, que se especifican incluyendo cero o más elementos init-param como hijos del elemento de generador. La siguiente es una declaración de generador de extensiones de ejemplo:
<extension point="com.ibm.wsspi.rrd.generators">
  <generator id="int1"
        class="com.ibm.ws.rrd.example.extension.IntExtensionGenerator"
        order="1"
        type=”servlet”>
	   <init-param>
              <param-name>intValue</param-name>
              <param-value>100</param-value>
	   </init-param>
   </generator>
   <generator id="string1"
        class="com.ibm.ws.rrd.example.extension.StringExtensionGenerator"
        order="2"
        type=”servlet”>
      <init-param>
              <param-name>stringValue</param-name>
              <param-value>This is an example string</param-value>
      </init-param>
   </generator>
   <generator id="int2"
        class="com.ibm.ws.rrd.example.extension.IntExtensionGenerator"
        order="3"
        type=”servlet”>
      <init-param>
              <param-name>intValue</param-name>
              <param-value>200</param-value>
      </init-param>
   </generator>
</extension>
Para obtener más información sobre el paquete com.ibm.wsspi.rrd.extension.generator, consulte el artículo sobre interfaces de programación de aplicaciones (API) para administradores.

Manejadores de extensiones

Los manejadores de extensiones, que forman parte de una cadena de manejadores de extensiones, se invocan después de recibir una solicitud RRD. Esta cadena de manejadores de extensiones se define en el punto de extensión com.ibm.wsspi.rrd.handlers del archivo plugin.xml que puede residir en una de las ubicaciones siguientes:
  • Otro paquete OSGI.
  • Cualquier biblioteca compartida. Por ejemplo, una biblioteca compartida enlazada a un cargador de clases del servidor.
  • En el directorio WEB-INF de una aplicación web local habilitada para RRD.

Cada manejador de extensiones se define mediante un elemento de manejador que contiene los atributos namespaceURI y localName, la combinación de los cuales define el nombre cualificado de los datos de la extensión que el manejador de extensiones puede procesar. Cada manejador de extensiones requiere adicionalmente un identificador exclusivo que se especifica mediante el atributo de ID. El valor especificado mediante este atributo debe corresponder a un generador de extensiones, que genera los datos de extensión de un nombre cualificado y un identificador coincidentes. El atributo class se utiliza para especificar el nombre de clase del manejador de extensiones que debe implementar la interfaz com.ibm.wsspi.rrd.extension.handler.ExtensionHandler. Adicionalmente, un manejador tiene un atributo obligatorio denominado type que define el tipo del generador. El valor es “servlet” y la clase debe implementar la interfaz com.ibm.wsspi.rrd.extension.handler.ExtensionHandler.

Adicionalmente, cada manejador de extensiones se puede proporcionar con un número arbitrario de parámetros de inicialización, que se especifican incluyendo cero o más elementos init-param como hijos del elemento de manejador. La siguiente es una declaración de manejador de extensiones de ejemplo:
  <extension point="com.ibm.wsspi.rrd.handlers">
      <handler id="int1"
               class="com.ibm.ws.rrd.example.extension.IntExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="1"
               type=”servlet”/>
      <handler id="string1"
               class="com.ibm.ws.rrd.example.extension.StringExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="2"
               type=”servlet”/>
      <handler id="int2"
               class="com.ibm.ws.rrd.example.extension.IntExtensionHandler"
               namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
               localName="SimpleType" order="3"
               type=”servlet”/>
</extension>
Para obtener más información sobre el paquete com.ibm.wsspi.rrd.extension.handler, consulte el artículo sobre interfaces de programación de aplicaciones (AP) adicionales para administradores.

Delegadores de extensiones

Un delegador de extensiones permite que RRD maneje los contenedores de servlets arbitrarios permitiendo que los usuarios especifiquen las instancias específicas de la cadena de manejadores y generadores de extensiones que se van a utilizar una llamada RRD. RRD mantiene una lista que el usuario de delegadores de extensiones que el usuario puede ampliar y selecciona un delegador adecuado durante la ejecución basándose en el tipo de solicitud de servlet que se está emitiendo.

Los delegadores de extensiones personalizadas se pueden definir en el punto de extensión com.ibm.wsspi.rrd.rrd-extension-delegator del archivo plugin.xml, que puede residir en una de las ubicaciones siguientes:
  • Otro paquete OSGI.
  • Cualquier biblioteca compartida. Por ejemplo, una biblioteca compartida enlazada a un cargador de clases del servidor.
  • En el directorio WEB-INF de una aplicación web local habilitada para RRD.
Cada delegador de extensiones se define mediante un elemento ExtensionDelegator que contiene un atributo de prioridad para definir el orden relativo en el que se inicia un delegador de extensiones y un atributo de nombre de clase que define la clase de implementación de un delegador de extensiones determinado, que debe implementar la interfaz com.ibm.wsspi.rrd.extension.factory.ExtensionDelegator. Tenga en cuenta que el orden de ejecución de dos o más delegadores de extensiones con la misma prioridad no es pronosticable. La siguiente es una declaración de delegador de extensiones de ejemplo:
<extension point="com.ibm.wsspi.rrd.rrd-extension-delegator">
  <ExtensionDelegatorRegistration>
    <ExtensionDelegator priority="1" classname="com.ibm.ws.rrd.extension.PortletExtensionDelegator"/>
    <ExtensionDelegator priority="2" classname="com.ibm.ws.rrd.extension.ServletExtensionDelegator"/>
  </ExtensionDelegatorRegistration>
</extension>

Paquetes EMF personalizados

Los datos de las extensiones generados por un generador de extensiones y que el manejador de extensiones consume se serializan utilizando EMF (Eclipse Modeling Framework). Los usuarios que piensan utilizar datos de extensiones personalizados deben utilizar el punto de extensión com.ibm.wsspi.rrd.rrd-emf-packages para garantizar que los paquetes EMF adecuados se han inicializado antes de utilizar RRD. Este punto de extensión forma parte del archivo plugin.xml que puede residir en una de las siguientes ubicaciones:
  • Otro paquete OSGI.
  • Cualquier biblioteca compartida. Por ejemplo, una biblioteca compartida enlazada a un cargador de clases del servidor.
  • En el directorio WEB-INF de una aplicación web local habilitada para RRD.
Cada paquete EMF se define mediante un elemento emfPackage, que contiene un elemento className que debe apuntar a la clase de implementación de fábrica EMF generado para un paquete EMF determinado (la clase de modelo generada que implementa org.eclipse.emf.ecore.impl.EFactoryImpl). La siguiente es una declaración de paquete EMF de ejemplo:
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
  <emfPackages>
    <emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
  </emfPackages>
</extension>
Nota: Si el mismo código del modelo EMF generado se comparte entre varias aplicaciones web, el código del modelo EMF debe formar parte de una biblioteca de servidores compartida, pero únicamente en el caso de que todas las aplicaciones web estén ejecutándose en el mismo servidor de aplicaciones. En un entorno de producción, éste no suele ser el caso y el código del modelo EMF debe existir a nivel de aplicación web.

Icon that indicates the type of topic Reference topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rweb_rrd_servlet_ext
File name: rweb_rrd_servlet_ext.html