Interfaz SAAJ (SOAP with Attachments API for Java)
La interfaz SAAJ (SOAP with Attachments API for Java™) se utiliza para la mensajería SOAP que proporciona un modo estándar de enviar documentos XML a través de Internet desde un modelo de programación Java. SAAJ se utiliza para manipular el mensaje SOAP al contexto adecuado mientras atraviesa el entorno de ejecución.
El modelo de programación JAX-RPC (API Java para RPC basadas en XML) da soporte a SAAJ 1.2 para manipular XML.
El modelo de programación JAX-WS da soporte a SAAJ 1.2 y 1.3. SAAJ 1.3 incluye soporte para mensajes SOAP 1.2.
Las diferencias en la especificación SAAJ 1.2 y SAAJ 1.3 pueden consultarse en el tema "Diferencias en versiones de SAAJ.".
¿Cómo se utilizan los mensajes en los servicios web?
Los servicios web utilizan tecnología XML para intercambiar mensajes. Estos mensajes cumplen el esquema XML. Cuando se desarrollan aplicaciones de servicios web, existe un número limitado de API XML con las que trabajar, por ejemplo, Document Object Model (DOM). Resulta más eficaz manipular los objetos Java y completar la serialización y deserialización durante el tiempo de ejecución.
Los servicios web utilizan mensajes SOAP para representar llamadas de procedimiento remoto entre el cliente y el servidor. Normalmente, el mensaje SOAP se deserializa en una serie de objetos de empresa de tipo de valor Java que representan los parámetros y los valores de retorno. Asimismo, el modelo de programación Java proporciona API para que las aplicaciones y los manejadores puedan manipular directamente el mensaje SOAP. Como existe un número limitado de tipos de esquema XML soportados por los modelos de programación, la especificación proporciona el modelo de datos SAAJ en forma de extensión para manipular el mensaje.
Para manipular los tipos de esquema XML, es necesario que correlacione los tipos de esquema XML con los tipos Java mediante un enlazador de datos personalizados.
La interfaz SAAJ
Las clases relacionadas con SAAJ se encuentran en el paquete javax.xml.soap. SAAJ se basa en las interfaces y las clases abstractas, y muchas de las clases se inician invocando métodos de fábrica para crear una fábrica como, por ejemplo, SOAPConnectionFactory y SOAPFactory.

Permiso:
/opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties : access denied
(java.io.FilePermission /opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties
read)
Código:
com.ibm.ws.wsfvt.test.binding.addr1.binder.AddressBinder
in {file:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/installedApps/
ahp6405Node01Cell/DataBinding.ear/address1.war/WEB-INF/lib
/addressbinder1.jar}
Rastreo de pila:
java.security.AccessControlException: access denied (java.io.FilePermission
/opt/IBM/WebSphere/AppServer/java/jre/lib/jaxm.properties read)
.
SOAPFactory ignora la excepción y continúa hasta el siguiente medio de determinar qué implementación debe cargar. Por lo tanto, puede ignorar la entrada de registro para esta excepción de seguridad.
Puesto que este producto utiliza SOAPFactory para dar soporte a otras tecnologías de servicios web, como WS-Addressing (WS-A), WS-Atomic Transaction (WS-AT) y WS-Notification, puede omitir este SecurityException en cualquier aplicación de servicios web donde esté habilitada la seguridad Java.
gotcha- SOAPMessage: contiene el mensaje, la parte XML y la no XML
- SOAPHeader: representa el elemento XML de la cabecera SOAP
- SOAPBody: representa el elemento XML del cuerpo SOAP
- SOAPElement: representa los otros elementos del mensaje SOAP
- MessageContext: contiene un mensaje SOAP y propiedades relacionadas
- AttachmentPart: representa un documento adjunto binario
- SOAPPart: representa la parte XML del mensaje
- SOAPEnvelope: representa el elemento XML del sobre SOAP
- SOAPFault: representa el elemento XML del error SOAP
La interfaz principal en el modelo SAAJ es javax.xml.soap.SOAPElement, también denominada SOAPElement. Con este modelo, las aplicaciones pueden procesar un modelo SAAJ que utiliza código DOM preexistente. También es más fácil convertir objetos DOM preexistentes en objetos SAAJ.
Los mensajes creados con las interfaces SAAJ siguen los estándares SOAP. Un mensaje SOAP se representa en el modelo SAAJ como un objeto javax.xml.soap.SOAPMessage. El contenido XML del mensaje está representado por objeto javax.xml.soap.SOAPPart. Cada parte SOAP tiene un sobre SOAP. Este sobre está representado por el objeto javax.xml.SOAPEnvelope de SAAJ. La especificación SOAP define varios elementos que residen en el sobre SOAP; SAAJ define objetos para los distintos elementos del sobre SOAP.
El mensaje SOAP también puede contener datos no XML que se denominan anexos. Estos anexos están representados por objetos AttachmentPart de SAAJ a los que se puede acceder desde el objeto SOAPMessage.
- El servicio web puede ser un conducto a otro servicio web. En este caso, sólo se envía el mensaje SOAP.
- El servicio web puede manipular el mensaje utilizando otro modelo de datos, por ejemplo, un SDO (Service Data Object). Es más fácil convertir el mensaje de un DOM SAAJ a un modelo de datos diferente.
- Un manejador, por ejemplo, un manejador de validación de firma digital, puede manipular el mensaje de forma genérica.
Es posible que necesite ir un paso más allá para correlacionar los tipos de esquema XML, ya que la interfaz SOAPElement no siempre es la mejor alternativa para los sistemas heredados. En este caso, es posible que desee utilizar un modelo de programación genérico como, por ejemplo, SDO, que es más apropiado para las aplicaciones centradas en los datos.
El esquema XML puede configurarse para que incluya un enlace de datos personalizado que empareje el SDO u objeto de datos con el objeto Java. Por ejemplo, el tiempo de ejecución representa un mensaje SOAP de entrada en una interfaz SOAPElement y lo pasa al enlazador de datos del cliente para continuar con el proceso. Si el mensaje de entrada contiene un SDO, el tiempo de ejecución reconoce el código del objeto de datos, realiza una consulta de la correlación de tipo para ubicar el localizador personalizado y crea la interfaz SOAPElement que representa el código de SDO. SOAPElement se pasa a SDOCustomBinder.
Consulte la información acerca de los enlazadores de datos personalizados para obtener más información sobre el proceso de desarrollar aplicaciones con SOAPElement, con SDO y con enlazadores personalizados.

El comportamiento anterior a la devolución de null no cumple con la especificación.
trnsPara obtener una lista completa de los estándares y las especificaciones a los que se da soporte, consulte las especificaciones y la documentación de la API de los servicios Web.