El API Apache SOAP v2.2

Apache SOAP utiliza documentos XML llamados Descriptores de Despliegue para proporcionar informaci�n al sistema de ejecuci�n SOAP sobre los servicios que deber�an estar disponibles para los clientes. Pueden proporcionar un amplio conjunto de informaci�n como la URN para el servicio (que se utiliza para enrutar las solicitudes que le vienen), los detalles de la clase y del m�todo si el servicio est� siendo proporcionado por una clase Java, o el nombre del script si el servicio est� implementado por cualquiera de los lenguajes de script BSF soportados. El contenido exacto del descriptor de despliegue depende del tipo de artefacto que est� siendo expuesto mediante SOAP. Abajo encontraremos detalles sobre los diferentes tipos de descriptores de despliegue que pueden usarse en esta versi�n.

.�Descriptores de Despliegue para Clases Java Est�ndards

Un descriptor de despliegue que expone un servicio que est� implementado mediante una clase Java est�ndard (incluyendo un Java Bean normal) se parece a este:

<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
    id="urn:service-urn>" [type="message"] [checkMustUnderstands="true|false"]>
	<isd:provider type="java"
	    scope="Request | Session | Application"
		methods="exposed-methods">
		<isd:java class="implementing-class" [static="true|false"]/>
    </isd:provider> 
	<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>
</isd:service>

Donde service-urn es la URN donde queremos dar un servicio, exposed-methods es una lista de m�todos separados por espacios que desamos exponer, e implementing-class es el nombre totalmente cualificado de la clase (por ejemplo packagename.classname) que proporciona los m�todos que est�n siendo expuestos. Sobre el elemento <service>, hay un atributo opcional llamado type que podr�a ser configurado con el valor message si el servicio est� orientado a documento en lugar de ser un servicio RPC, y un atributo opcional llamado checkMustUnderstands que podr�a ser true o false dependiendo de si queremos o no que el servidor lance un Fault si hab�a cabeceras SOAP en la solicitud que fueron marcadas como MustUnderstand. En el elemento <java> hay un atributo opcional llamado static, que podr�a seleccionarse a true o false, dependiendo de si los m�todos que est�n siendo expuestos son est�ticos o no. El elemento <provider> tambi�n acepta un atributo scope que indica el tiempo de vida de la ejemplarizaci�n de la clase implementada. Request indica que el objeto se eliminar� despu�s de que se haya completado la solicitud, Session indica que el objeto vivir� todo el tiempo de vida de la sesi�n HTTP actual, y Application indica que el objeto vivir� hasta que se haya cerrado el servidor de servicios.

.�Descriptor de Despliegue EJB

Un descriptor de despliegue que expone un servicio que est� implementado mediante un Enterprise Java Bean se parecer�a a esto:

<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
    id="urn:service-urn">
	<isd:provider type="provider-class"
	    scope="Application"
		methods="exposed-methods">
		<isd:option key="JNDIName" value="jndi-name"/>
		<isd:option key="FullHomeInterfaceName" value="home-name" />
		<isd:option key="ContextProviderURL" value="context-provider" />
		<isd:option key="FullContextFactoryName" value="factory-name" />
	</isd:provider>
	<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>
</isd:service>

Donde service-urn y exposed-methods tienen el mismo significado que en el descriptor de despliegue de una clase Java est�ndard, provider-class es org.apache.soap.providers.StatelessEJBProvider, org.apache.soap.providers.StatefulEJBProvider, o org.apache.soap.providers.EntityEJBProvider, dependiendo de si la implementaci�n es o no un bean de sesi�n sin estado, un bean de sesi�n con estado, o un bean de entidad, respectivamente, jndi-name es el nombre JNDI registrado del EJB, home-name es el nombre totalmente cualificado de la clase home del EJB, context-provider es la URL asociada con el proveedor de contexto JNDI, y factory-name es el nombre de la factor�a de contextos JNDI. Por campatibilidad con versiones anteriores, el jndi-name tambi�n podr�a especificarse en el atributo class del elemento <java>.

.�Descriptor de Despliegue de un Script BSF

Un descriptor de despliegue que expone un servicio que est� implementado mediante un Script BSF se parece a esto:

<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment"
    id="urn:service-urn">
	<isd:provider type="script"
	    scope="Request | Session | Application"
		methods="exposed-methods">
		<isd:script language="language-name" [source="source-filename"]>
		      [script-body]
		</isd:script>
	</isd:provider>
	<isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>
</isd:service>

Donde service-urn, exposed-methods, tienen el mismo significado que en el descriptor de despliegue de una clase Java est�ndard, y language-name es el nombre del lenguaje BSF soportado en el que est� escrito el script. El descriptor de despliegue tambi�n debe tener un atributo source sobre el elemento <script>, o contener un script-body, que tenga el script real a utilizar para proporcionar el servicio. Si el descriptor de despliegue tiene un atributo source, entonces source-filename se refiere al fichero que contiene la implementaci�n del servicio.

.�Especificar Oyentes de Fault

En todos los ejemplos de arriba se ha registrado un s�lo oyente de fault, org.apache.soap.server.DOMFaultListener, cualquier clase que implemente el interface org.apache.soap.server.SOAPFaultListener podr�a ser registrada mediante el elemento <faultListener>. Se podr�an especificar m�ltiples oyentes de fault simplemente a�adiendo elementos <faultListener> adicionales. Para m�s informaci�n sobre oyentes de fault de Apache SOAP, mira aqu�.

.�Especificar el Mapeo de Tipos en un Descriptor de Despliegue

La informaci�n de mapeo de tipos para servicios RPC tambi�n podr�a especificarse en los descriptores de despliegue. Los mapeos se especifican a trav�s del uso de un elemento <mappings> que opcionalmente podr�a aparecer como hijo del elemento <service>. Los mapeos especificados de esta forma est�n s�lo disponibles para el servicio descrito por el descriptor de despliegue en el que aparecen. Un descriptor de despliegue con mapeo de tipos, se parece a esto:

<isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment" id="...">
  <isd:provider .../>
  <isd:faultListener .../>
  <isd:mappings [defaultRegistryClass="registry-class"]>
    <isd:map encodingStyle="encoding-uri" xmlns:x="qname-namespace" qname="x:qname-element"
             javaType="java-type" java2XMLClassName="serializer" xml2JavaClassName="deserializer"/>
    ...
  </isd:mappings>

Donde encoding-uri es la URI para el m�todo de codificaci�n (por ejemplo http://schemas.xmlsoap.org/soap/encoding para la codificaci�n est�ndard SOAP), qname-namespace es el espacio de nombres del elemento, qname-element es el nombre del elemento XML, java-type es la clase Java totalmente cualificada que hemos proporcionado para el mapeo (por ejemplo, samples.Date,) serializer es la clase Java totalmente cualificada que implementa org.apache.soap.util.xml.Serializer, y deserializer es la clase totalmente caulificada que implementa org.apache.soap.util.xml.Deserializer. El elemento <mappings> es un atributo opcional llamado defaultRegistryClass, cuyo valor (indicado por registry-class) es la clase Java totalmente cualificada (que es una subclase de org.apache.soap.encoding.SOAPMappingRegistry) que deseamos usar como tipo por defecto en registro de mapeo. Para m�s informaci�n sobre el soporte de mapeo de tipos en Apache SOAP, mira aqu�.

COMPARTE ESTE ARTÍCULO

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