Programación en castellano
Inicio > Tutoriales > Servidores de Aplicaciones Java > El API Apache SOAP v2.2
-Tutoriales

El API Apache SOAP v2.2


Escribir Proveedores

Cuando se crean servicios, tiene sentido aprovecharse de los artefactos de programación legales para no tener que reinventar la rueda, y para programar en el lenguaje en el que nos sintamos más confortables. Los desarrolladores de Apache SOAP reconocieron que no todos lo servicios iban a ser métodos de clases Java, y crearon una forma de permitir que cualquier tipo de artefacto de programación sea usado como una implementación de servicio. Para permitir esto, se creó una capa de abstracción entre el servidor Apache SOAP y la implementación de servicio. Esta capa se llama Apache SOAP Pluggable Provider.

Un proveedor conectable actúa como un puente entre el motor SOAP y el servicio que está siendo invocado. El proveedor es responsable de:

  • Localizar la implementación del servicio
  • Cargar la implementación del servicio
  • Invocar al servicio
  • Convertir los resultados de la implementación del servicio en un SOAP Envelope cuando sea necesario.

Apache SOAP viene con seis proveedores predefinidos:

  • org.apache.soap.providers.RPCJavaProvider
    Este es el proveedor por defecto para exponer artefactos Java y scripts BSF soportados mediante SOAP RPC.
  • org.apache.soap.providers.MsgJavaProvider
    Este es el proveedor por defecto para exponer artefactos Java y scripts BSF soportados mediante Mensajes SOAP.
  • org.apache.soap.providers.StatelessEJBProvider
    Este proveedor nos permite exponer Beans de Sesión sin Estado como servicios.
  • org.apache.soap.providers.StatefulEJBProvider
    Este proveedor nos permite exponer Beans de Sesión con Estado como servicios.
  • org.apache.soap.providers.EntityEJBProvider
    Estre proveedor nos permite exponer Beans de Entidad como servicios.
  • org.apache.soap.providers.com.RPCProvider
    Este proveedor nos permite exponer objetos COM mediante SOAP RPC. Nota: este proveedor sólo funciona sobre Windows.

. Usar Proveedores Conectables

La información sobre el proveedor que deseamos que utilice nuestro servicio está localizada en el descritor de despliegue. El elemento <provider>, así como sus elementos hijos, proporcionan información al entorno de ejecución y al proveedor sobre lo que deberían hacer para poner un servicio disponible. El atributo type del elemento <provider> identifica la clase Java que debería actúar como proveedor. Si estamos exponiendo una clase Java (como un servicio basado en RPC o un servicio orientado a mensaje) deberíamos especificar java como el valor para este atributo, si estámos exponiendo un script BSF soportado deberíamos especificar script, de otro modo deberíamos especificar el nombre totalmente cualificado de la clase del provedor.

Se puede especificar información adicional de los proveedores conectables añadiento elementos <option> como hijos de los elementos <provider>. Para más información sobre especificación de proveedores conectables y sus opciones, mira aquí.

. Escribir Proveedores Conectables

Si necesitamos soportar artefactos de programación que no están soportados directamente por uno de los proveedores incluidos, o si uno de éstos no cubre adecuadamente nuestras necesidades, necesitaremos crear nuestro propio proveedor conectable.

Los proveedores deben implementar el interface org.apache.soap.util.Provider, que es este:

public interface Provider {
  public void locate( DeploymentDescriptor dd,
                      Envelope             env,
                      Call                 call,
                      String               methodName,
                      String               targetObjectURI,
                      SOAPContext          reqContext)
                throws SOAPException ;
				
  public void invoke(SOAPContext req, SOAPContext res) throws SOAPException ;
}

El método locate será llamado para poder permitir al proveedor una oportunidad para verificar que existe la implementación de servicio y que está disponible para procesar la solicitud. Si ocurre un error, este método debería lanzar una SOAPException. Después de una llamada exitosa a locate el motor SOAP ejecutará el método invoke para llamar realmente a la implementación del servicio. Observa que la llamada a invoke no tiene ninguna información sobre el servicio. Toda la información fue pasada dentro del método locate, por eso es responsabilidad de locate guardar la información necesaria para que el método invoke pueda llamar al servicio.

El método invoke también es responsable de convertir cualquier respuesta de la implementación del servicio en un SOAP envelope y situarla en el parámetro res (un SOAPContext).

Cualquier elemento <option> que sea especificado en el descriptor de despliegue para el servicio está disponible mediante un Hashtable recuperable a través de una llamada al método dd.getProps() en el locate.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados