Programación en castellano
-Tutoriales

El API Apache SOAP v2.2


Migrar desde Apache SOAP v2.1 a Apache SOAP v2.2

Este documento explica los cambios que debemos hacer para migrar desde Apache SOAP v2.1 a Apache SOAP v2.2.

. XMLParserLiaison Reemplazado con JAXP

Anteriomente usamos una solución casera para conseguir un analizador XML independiente. Sin embargo, dada la liberación del mecanismo Java para hacer esto, nos hemos decidido a usar JAXP. ¿Qué significa esto? Significa que si tenemos un código que usaba XMLParserLiaison tenemos que cambiar ese código. Afortunadamente, los cambios son simples: el ejemplo [differences between v1.2 and v1.3 of the "messaging"], nos muestra exactamente que hacer!

Algunas veces, este cambio podría ser necesario incluso si no tenemos ningún código que use directametne XMLParserLiaison. Si estás viendo esto, por favor, recompila tu código con el jar de la versión 2.2 en tu classpath y el problema se solucionará.

. Mantenimiento de Sesión HTTP

De nuevo soportamos el mantenimiento de sesión HTTP. El ejemplo addressbook2 muestra un ejemplo de su uso.

El soporte por sesión está activado por defecto. Si estuvieramos interesados en cualquier servicio HTTP de sesión con un cierto comportamiento, podríamos ver otro comportamiento ya que el código ahora mantiene correctamente las sesiones HTTP. Si queremos desactivar el soporte de sesión HTTP, necesitamos crear nuestro propio objeto SOAPHTTPConnection, seleccionar la propiedad de mentenimiento de sesión a false y seleccionar el transporte adecuado de llamada para este SOAPHTTPConnection:

Call call = new Call ();
SOAPHTTPConnection shc = new SOAPHTTPConnection ();
shc.setMaintainSession (false);
call.setSOAPTransport (shc);

// now make calls with "call"

Tener el soporte de sesión en el lado del cliente finalmente significa que Apache SOAP puede usarse para implementar servicios Web con estado sin tener ninguna intervención del usuario para menejar esto.

. Obtener Información de Entorno para Servicios RPC

Una cuestión común con Apache SOAP v2.1 era cómo un autor de servicios RPC podría acceder a información de Entorno como el objeto HTTPSession o las cabeceras HTTP. La respuesta V2.1 era que teníamos que escribir un proveedor personalizado para hacer esto. Aunque en v2.2 hay una forma mejor y más simple.

RPCJavaProvider (el proveedor que ejecuta todos los servicios de estilo RPC) ahora tiene el siguiente comportamiento: cuando busca el método en la clase destino para llamarlo y que procese la solicitud de servicio; si no se encuentra un método con la firma correspondiente, se hace una segunda búsqueda. La segunda búsqueda busca un método con argumento adicional (el primero) del tipo org.apache.soap.rpc.SOAPContext (por favor mira la documentación del API para ver los detalles de esta clase). Si lo encuentra, se le pasa un ejemplar de SOAPContext a la clase manejadora del servicio.

Tener acceso al SOAPContext entrante nos da mucha libertad: podemos acceder a todo lo siguiente mediante el método getProperty:

  • El objeto HTTPServlet usando la clave org.apache.soap.Constants.BAG_HTTPSERVLET
  • El objeto HTTPSession usando la clave org.apache.soap.Constants.BAG_HTTPSESSION
  • El objeto HTTPServletRequest usando la clave org.apache.soap.Constants.BAG_HTTPSERVLETREQUEST
  • El objeto HTTPServletResponse usando la clave org.apache.soap.Constants.BAG_HTTPSERVLETRESPONSE

Si la solicitud original SOAP estaba en la forma de SOAP Attachments, entonces podemos obtener las partes MIME no referenciadas usando los métodos getBodyPart.

Nota:
SOAPContext es un objeto de sólo lectura, no debemos usar ningúno de sus métodos set<FOO>!

Nota: Al usar esta característica hacemos que nuestra aplicación sea totalmente dependiente de Apache SOAP. Debemos usarla con cuidado!

. Otros Problemas de Migración

Si tienes otros problemas de migración por favor, chequea las FAQs en http://xml.apache.org/soap/faq.

 
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: jugar gratis | amor | navidad 2009 | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados