Básicamente SOAP es una forma de consumir un servicio remoto vía HTTP a través de intercambios de mensajes XML (y qué mensajes!!)
Al ser HTTP no hace falta exponer puertos especiales en nuestros sistemas (o si los abrimos podremos tratarlos como
cualquier puerto que atienda este protocolo), así como aprovechar todo el stack de seguridad como puede ser el uso de SSL.
Por una parte diseñas el interface a exponer junto con sus parámetros tanto de entrada como de salida y con la ayuda del veneno que
prefieras (Axis, Spring, CXF, …) generas un punto de entrada al mismo.
Con ayuda de tu veneno expones también el
WSDL que es lo que necesitará cualquier programa cliente que quiera consumirlo (como puedes imaginar, el XML no está
pensado para los ojos humanos, al menos no para los mios) usando a su vez su propio veneno
wsimport y wsdl2java son sólo algunos de los venenos que puedes elegir para ayudarte a generar la parte cliente y
que de forma genérica te solicitarán una URL donde resida el WSDL (suele ser un servidor web o también una ruta a un
fichero si te lo has descargado). Con esta definición tu veneno será capaz de crearte una clases "esqueleto" para
que las incluyas en tu proyecto y puedas así invocar al servicio de forma transparente.