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
- 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.
<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
- 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.
<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.
- 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.
<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
- 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.
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
<emfPackages>
<emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
</emfPackages>
</extension>