El API Apache SOAP v2.2

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.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP