Algunas extensiones del marco de trabajo Apache SOAP necesitan la habilidad de interact�ar con el SOAP envelope antes de enviarlo o despu�s de recibirlo. Para facilitar este tipo de interacci�n, Apache SOAP proporciona la habilidad de insertar extensiones de transporte conectables en tiempo de ejecuci�n. La ejemplarizaci�n real de estas extensiones de transporte en el marco de Apache SOAP son conocidas como Envelope Editors.
�Usar Envelope Editors en el Servidor
Para permitir las extensiones de transporte en el servidor, necesitamos seelccionar un par�metro de inicializaci�n llamado EnvelopeEditorFactory en los ficheros de configuraci�n de los servlets RPCRouter y MessageRouter. El valor de este par�metro deber�a ser el nombre totalmente cualificado de una clase Java que implemente org.apache.soap.transport.EnvelopeEditorFactory.
�Usar Envelope Editors en el Cliente
Para usar Envelope Editor en el lado del cliente necesitamos ejemplarizar nuestro Envelope Editor, y luego crear un ejemplar de org.apache.soap.transport.FilterTransport pasarle el objeto Envelope Editor, y un ejemplar de un objeto que represente cualquier transporte sobre el que nos estemos comunicando (por ejemplo org.apache.soap.transport.http.SOAPHTTPConnection). Luego necesitamos invocar a org.apache.soap.rpc.Call.setSOAPTransport(...) o a org.apache.soap.messaging.Message.setSOAPTransport(...), depediendo de si est�mos invocando un servicio basado en RPC o un servicio orientado a mensaje, respectivamente, pas�ndole un ejemplar de FilterTransport.
�Crear un Envelope Editor
Para crear un Envelope Editor, primero debemos crear una Envelope Editor Factory implementando el interface org.apache.soap.transport.EnvelopeEditorFactory:
public interface EnvelopeEditorFactory
{
public EnvelopeEditor create(Properties props) throws SOAPException;
}
El m�todo creado toma un objeto java.util.Properties que contiene propiedades que, en el caso de lo servlets HTTP, son pasados desde los par�metros de inicializaci�n del servlet.
Para crear un Envelope Editor, necesitamos implementar el interface org.apache.soap.transport.EnvelopeEditor:
public interface EnvelopeEditor
{
public void editIncoming(Reader in, Writer out) throws SOAPException;
public void editOutgoing(Reader in, Writer out) throws SOAPException;
}
Los dos m�todos son las rutinas que son llamadas cuando se reciben mensajes de entrada y cuando un mensaje de salida est� listo para ser enviado, respectivamente.
La clase org.apache.soap.transport.EnvelopeEditorAdapter contiene un Envelope Editor de ejemplo.