Simple Object Access Protocol (SOAP)

Introdução

 * Web Services são descritos pela WSDL.
 * Expecificação de protocolo para troca de informações estruturadas em Web Services;
 * Formato de mensagem: Extensible Markup Language (XML);
 * Reside na Camada de Aplicação;
 * Independente de transporte (HTTP, HTTPS, SMTP);
 * Estilo de invocação imperativa;

XML estruturado em SOAP
Uma mensagem SOAP compreende três partes:


 * Envelope: define o conteúdo da mensagem (obrigatório);


 * Cabeçalho: contém informações de controle e processamento (opcional);

POST /InStock HTTP/1.1 Host: www.example.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: 299 SOAPAction: "http://www.w3.org/2003/05/soap-envelope"       IBM   
 * Corpo: contém informações da chamada e da resposta (obrigatório).

SOAP em Java/J2EE
Um Web Service precisa trabalhar atendendo requisições, logo, necessita de um servidor, por exemplo, o Apache Tomcat. Além disso, é necessário também uma implementação do protocolo SOAP que pode ser obtida através da biblioteca Apache Axis.

Apache Axis
Axis é uma engine SOAP - um framework desenvolvido em Java para processadores de SOAP como clients, servers, gateways, etc. Além disso, o framework fornece: Exemplo de utilização do framework: import org.apache.axis.client.Call; import org.apache.axis.client.Service; import javax.xml.namespace.QName; public class TestClient { public static void main(String [] args) { try { String endpoint = "http://ws.apache.org:5049/axis/services/echo"; Service service = new Service; Call call = (Call) service.createCall; call.setTargetEndpointAddress( new java.net.URL(endpoint) ); call.setOperationName(new QName("http://soapinterop.org/", echoString"));     String ret = (String) call.invoke( new Object[] { "Hello!" } );      System.out.println("Sent 'Hello!', got '" + ret + "'");    } catch (Exception e) {      System.err.println(e.toString);    }  } }
 * Servidor stand alone simples;
 * Componentes para serem acoplados aos servlets de uma aplicação;
 * Suporte extensivo à Web Service Description Language (WSDL);
 * Gerador de classes Java a partir de WSDL's;
 * Ferramenta de monitoramento de pacotes TCP/IP.

Referências

 * http://brunopereira.org/webservicesrest-indice/;
 * http://javafree.uol.com.br/artigo/871485/;
 * http://en.wikipedia.org/wiki/SOAP;
 * http://ws.apache.org/axis/java/user-guide.html;
 * http://blog.caelum.com.br/arquitetura-rest-com-java-jax-rs/;
 * http://www.devmedia.com.br/articles/viewcomp.asp?comp=15150;