You are on page 1of 18

SOAP

SOAP v1.1
v1.1
Protocolo
Protocolo Simple
Simple de
de Acceso
Acceso aa Objetos
Objetos

Prof.
Prof. Cosimo
Cosimo Stufano
Stufano

INTRODUCCIÓN

• Ingenieros de software rechazan el uso de tecnologías que


no sean de su preferencia
• Se crea una polaridad que hace difícil alcanzar un nivel
adecuado de interoperabilidad entre sistemas de software
heterogéneo
• Sería muy útil encontrar una tecnología estandarizada sobre
la cual se pusieran de acuerdo para crear mecanismos de
integración
• Una posible solución a este problema es considerar
tecnologías simples y populares (e.g. HTTP y XML)
• El Protocolo Simple de Acceso a Objetos (SOAP, Simple
Object Access Protocol) surge con esta orientación

1
BREVE RESEÑA
A principios de 1999:
Un grupo de investigadores e ingenieros de Microsoft Corporation,
DevelopMentor y UserLand Software comenzaron el desarrollo del
Protocolo Simple de Acceso a Objetos (SOAP, Simple Object
Access Protocol)

A finales de 1999:
Fue sometido a consideración un borrador de la especificación de
SOAP version 1.0 ante la Internet Engineering Task Force (IETF)
Se incorporan al grupo de desarrollo representantes de las
empresas IBM y Lotus Development Corporation

En mayo del 2000:


Se somete a consideración del World Wide Web Consortium
(W3C) la versión 1.1 de la especificación de SOAP con la finalidad
de promover la formación de un grupo de trabajo en el área de
protocolos basados en XML (eXtensible Markup Language)

¿QUÉ
¿QUÉ ES
ES SOAP?
SOAP?

SOAP es un protocolo ligero basado en XML (eXtensible


Markup Language) para el intercambio de información en un
ambiente descentralizado y distribuido.
Consiste en tres partes:
• Un envoltorio que sirve de contenedor del mensaje, describe el
contenido del mensaje e indica cómo procesarlo
• Un conjunto de reglas de codificación para expresar tipos de
datos definidos
• Una convención para representar llamadas y respuestas a
procedimientos remotos

Su propósito es satisfacer las necesidades de desarrolladores


de sistemas de procesamiento distribuido que encuentran
difícil la utilización de otras tecnologías existentes (e.g.
CORBA y DCOM)

2
¿QUÉ
¿QUÉ ES
ES SOAP?
SOAP?

SOAP permite que objetos de un programa, ejecutándose en


una plataforma computacional invoquen métodos de objetos
remotos de otro programa que puede estarse ejecuntando en
una plataforma diferente
SOAP emplea:
• El Lenguaje Extensible de Marcas (XML, eXtensible Markup
Language) para definir la estructura del mensaje
• El Protocolo de Transferencia de Hipertexto (HTTP, Hypertext
Transfer Protocol) del World Wide Web como medio de
transporte

SOAP XML

HTTP/SMTP
TCP/IP

¿QUÉ
¿QUÉ ES
ES SOAP?
SOAP?

A pesar de que la especificación sólo define su utilización con


HTTP, puede ser utilizado en combinación con una variedad
de protocolos. (e.g. SMTP implementado por IBM-SOAP 1.2
for Java)
En cierto sentido, SOAP es similar a IIOP (Internet Inter-ORB
Protocol), parte fundamental de CORBA y a RMI (Remote
Method Invocation) de Java
Una de las ventajas más importantes de SOAP es su
inmunidad a las barreras de seguridad (firewalls)

3
CONSIDERACIONES DE DISEÑO

La simplicidad y extensibilidad son las carcaterísticas más


importante de SOAP
Algunas características tradicionales de los sistemas de pase
de mensajes y de objetos distribuidos no forman parte de la
especificación básica de SOAP. Entre estas tenemos:
• Recolector distribuido de “desechos” (Distributed garbage
collection)
• Manejo de mensajes por lotes (Boxcarring or batching of
messages)
• Objetos por referencias (Objects-by-reference)
• Activación

MODELO DE INTERCAMBIO DE MENSAJES

Los mensajes SOAP tienen un solo sentido (del emisor al


receptor) y pueden ser combinados para implementar
patrones tales como de solicitud y respuesta

SOAP permite el procesamiento en uno o más nodos


intermedios antes de llegar a su destino final

4
MODELO DE INTERCAMBIO DE MENSAJES

El procesamiento de un mensaje SOAP por una aplicación


receptora es como sigue:
• Identificar todas las partes del mensaje SOAP relacionadas
con la aplicación
• Verificar que todas las partes identificadas son soportadas por
la aplicación, para luego procesar el mensaje. Si este no es el
caso se descarta el mensaje. El procesador puede ignorar
partes del mensaje que no afecten su procesamiento
• Si la aplicación SOAP no es el destinatario final del mensaje,
remueve todas las partes identificadas en el paso 1 y es
posteriormente retransmitido
etransmitido al
al siguiente
siguiente nodo
nodo especificado
especificado en
en la
la
“ruta
“ruta del
del mensaje”
mensaje”

RELACIÓN CON XML

Todos los mensajes SOAP están codificados utilizando XML


SOAP define dos espacios de nombres:
• Envoltorio SOAP: http:// schemas.xmlsoap.org/soap/envelope/
• Serialización SOAP: http://schemas.xmlsoap.org/soap/encoding/

Un mensaje SOAP no debe contener una Declaración de Tipo


de Documento (DTD, Document Type Declaration) ni
Instrucciones de Procesamiento (Processing Instructions)

5
COMPONENTES DE UN MENSAJE SOAP

Un mensaje SOAP es un documento XML conformado por:


• Un Envoltorio (Envelope): es la raíz del documento XML
que representa el mensaje
• Un Encabezado opcional (Header): constituye un
mecanismo genérico para agregarle características a un
mensaje SOAP
• El Cuerpo del Mensaje (Body): es el contenedor de la
información de interés para la aplicación receptora del
mensaje

COMPONENTES DE UN MENSAJE SOAP


SOLICITUD
POST
POST /StockQuote
/StockQuote HTTP/1.1
HTTP/1.1
Host:
Host: www.stockquoteserver.com
www.stockquoteserver.com
Content-Type:
Content-Type: text/xml;
text/xml; charset="utf-8"
charset="utf-8" Encabezado
Encabezado HTTP
HTTP
Content-Length:
Content-Length: nnnn
nnnn
SOAPAction: "http://electrocommerce.org/abc#MyMessage"
SOAPAction: "http://electrocommerce.org/abc#MyMessage"

<SOAP-ENV:Envelope
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

<SOAP-ENV:Header>
<SOAP-ENV:Header>
<t:Transaction
Envoltorio
Envoltorio SOAP

<t:Transaction
xmlns:t="some-URI"
xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1">
SOAP-ENV:mustUnderstand="1">
55 Encabezado SOAP
</t:Transaction>
</t:Transaction>
</SOAP-ENV:Header>
</SOAP-ENV:Header>
SOAP

<SOAP-ENV:Body>
<SOAP-ENV:Body>
<m:GetLastTradePrice
<m:GetLastTradePrice xmlns:m="Some-URI">
xmlns:m="Some-URI">
<symbol>DEF</symbol>
<symbol>DEF</symbol> Cuerpo del Mensaje SOAP
</m:GetLastTradePrice>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Body>

</SOAP-ENV:Envelope>
</SOAP-ENV:Envelope>

6
COMPONENTES DE UN MENSAJE SOAP
RESPUESTA EXITOSA

HTTP/1.1
HTTP/1.1 200
200 OK
OK
Content-Type:
Content-Type: text/xml;
text/xml; charset="utf-8"
charset="utf-8" Encabezado
Encabezado HTTP
HTTP
Content-Length:
Content-Length: nnnn
nnnn

<SOAP-ENV:Envelope
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

Envoltorio
Envoltorio SOAP
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

<SOAP-ENV:Body>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse
<m:GetLastTradePriceResponse xmlns:m="Some-URI">
<Price>43.6</Price>
xmlns:m="Some-URI"> Cuerpo del Mensaje
<Price>43.6</Price>
</m:GetLastTradePrice>
</m:GetLastTradePrice>
SOAP

SOAP
</SOAP-ENV:Body>
</SOAP-ENV:Body>

</SOAP-ENV:Envelope>
</SOAP-ENV:Envelope>

COMPONENTES DE UN MENSAJE SOAP


FALLA EN LA RESPUESTA

HTTP/1.1
HTTP/1.1 200
200 OK
OK
Content-Type:
Content-Type: text/xml;
text/xml; charset="utf-8"
charset="utf-8" Encabezado
Encabezado HTTP
HTTP
Content-Length:
Content-Length: nnnn
nnnn

<SOAP-ENV:Envelope
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>

<SOAP-ENV:Body>
Envoltorio

<SOAP-ENV:Body>
Envoltorio SOAP

<SOAP-ENV:Fault>
<SOAP-ENV:Fault>
<faultcode>
<faultcode>
Client.Authentication
Client.Authentication
</faultcode>
</faultcode>
<faultstring>
<faultstring>
Cuerpo del Mensaje
SOAP

Authentication
Authentication Error.
Error. SOAP
</faultstring>
</faultstring>
<faultactor>”Some-URI”</faultactor>
<faultactor>”Some-URI”</faultactor>
<detail>Some
<detail>Some details</detail>
details</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Body>

</SOAP-ENV:Envelope>
</SOAP-ENV:Envelope>

7
ESTILO DE CODIFICACIÓN

Sistema simple de codificación, basado en XML, producto de la


generalización de características comunes encontradas en los
tipos de datos presentes en lenguajes de programación, base de
datos y data semi-estructurada
Existen dos categorías de tipos de datos: simples y compuestos
El identificador de espacio de nombres para los elemento y
atributos definidos en la especificación de SOAP es
"http://schemas.xmlsoap.org/soap/encoding/"
El uso del modelo de datos y estilo de codificación es
recomendado por la especificación de SOAP pero no es de
carácter obligatorio; otros modelo de datos y estilos de
codificación pueden ser empleados con SOAP

TIPOS DE DATOS SIMPLES

SOAP adopta como tipos de datos simples los especificados


para XML en la sección "Built-in Datatypes" del documento
"XML Schema Part 2: Datatypes".
Estos son:
• Tipos de Datos Primarios: string, boolean, float, double,
decimal, timeDuration, recurringDuration, binary, uriReference,
ID, IDREF, ENTITY y Qname
• Tipos de Datos Derivados: CDATA, token, language, IDREFS,
ENTITIES, NMTOKEN, NMTOKENS, Name, NCName,
NOTATION, integer, nonPositiveInteger, negativeInteger, long,
int, short, byte, nonNegativeInteger, unsignedLong,
unsignedInt, unsignedShort, unsignedByte, positiveInteger,
timeInstant, time, timePeriod, date, month, year, century,
recurringDate y recurringDay

8
EJEMPLOS DE TIPOS DE DATOS SIMPLES

Esquema:
<element
<element name="age"
name="age" type="int"/>
type="int"/>
<element
<element name="height"
name="height" type="float"/>
type="float"/>
<element
<element name="displacement"
name="displacement" type="negativeInteger"/>
type="negativeInteger"/>
<element
<element name="color">
name="color">
<simpleType
<simpleType base="xsd:string">
base="xsd:string">
<enumeration
<enumeration value="Green"/>
value="Green"/>
<enumeration
<enumeration value="Blue"/>
value="Blue"/>
</simpleType>
</simpleType>
</element>
</element>

Data:
<age>45</age>
<age>45</age>
<height>5.9</height>
<height>5.9</height>
<displacement>-450</displacement>
<displacement>-450</displacement>
<color>Blue</color>
<color>Blue</color>

TIPOS DE DATOS COMPUESTOS

SOAP define tipos de datos compuestos correspondientes a


patrones estructurales presentes con frecuencia en lenguajes
de programación. Estos son:
• Estructuras
• Arreglos

Los tipos de datos compuestos a su vez pueden contener


tipos de datos compuestos
La especificación de SOAP no limita la serialización de otros
tipos de datos compuestos

9
EJEMPLOS DE TIPOS DE DATOS COMPUESTOS

Estructura (Struct)
Una
Una estructura
estructura es
es un tipo de datos compuesto en la cual los
nombres
nombres de de acceso
acceso de sus valores miembros es la única
distinción
distinción entre
entre ellos
ellos

Esquema:
Esquema:
<element
<element name="Book">
name="Book">
<complexType>
<complexType>
<element
<element name="title"
name="title" type="xsd:string"/>
type="xsd:string"/>
<element
<element name="author"
name="author" type="xsd:string"/>
type="xsd:string"/>
<element
<element name="preface"
name="preface" type="xsd:string"/>
type="xsd:string"/>
<element
<element name="intro"
name="intro" type="xsd:string"/>
type="xsd:string"/>
</complexType>
</complexType>
</e:Book>
</e:Book>
Una
Una estructura
estructura de
de tipo
tipo “Book”:
“Book”:
<e:Book>
<e:Book>
<title>XML
<title>XML by
by Example</title>
Example</title>
<author>Benoît
<author>Benoît Marchal</author>
Marchal</author>
<preface>Prefatory
<preface>Prefatory text</preface>
text</preface>
<intro>This
<intro>This is
is aa book</intro>
book</intro>
</e:Book>
</e:Book>

EJEMPLOS DE TIPOS DE DATOS COMPUESTOS

Arreglo (Array)

Un
Un arreglo
arreglo es
es un
un tipo
tipo de
de dato
dato compuesto
compuesto donde
donde la
la posición
posición de
de
sus miembros sirve
sus miembros sirve como única distinción entre ellos. Los
arreglos
arreglos SOAP
SOAP están definidos como "SOAP-ENC:Array".

Esquema:
Esquema:
<element
<element name="myFavoriteNumbers"
name="myFavoriteNumbers" type="SOAP-ENC:Array"/>
type="SOAP-ENC:Array"/>

Un
Un arreglo
arreglo de
de dos
dos enteros:
enteros:
<myFavoriteNumbers
<myFavoriteNumbers SOAP-ENC:arrayType="xsd:int[2]">
SOAP-ENC:arrayType="xsd:int[2]">
<number>3</number>
<number>3</number>
<number>4</number>
<number>4</number>
</myFavoriteNumbers>
</myFavoriteNumbers>

10
EJEMPLOS DE TIPOS DE DATOS COMPUESTOS

Arreglo (Array)

Los
Los miembros
miembros dede un
un arreglo
arreglo pueden
pueden ser
ser de
de cualquier
cualquier tipo
tipo que
que sea
sea sustituto
sustituto del
del
tipo
tipo de
de dato
dato especificado
especificado en
en el
el atributo
atributo arrayType
arrayType

Puesto
Puesto que
que el
el tipo
tipo SOAP-ENC:Array
SOAP-ENC:Array admite
admite miembros
miembros dede cualquier
cualquier tipo,
tipo, mezclas
mezclas
de
de tipos
tipos arbitrarias
arbitrarias de
de tipos
tipos pueden
pueden estar
estar contenidas
contenidas en
en arreglos
arreglos

Por
Por ejemplo:
ejemplo:
<SOAP-ENC:Array
<SOAP-ENC:Array SOAP-ENC:arrayType="xsd:ur-type[4]">
SOAP-ENC:arrayType="xsd:ur-type[4]">
<SOAP-ENC:int>12345</SOAP-ENC:int>
<SOAP-ENC:int>12345</SOAP-ENC:int>
<SOAP-ENC:decimal>6.789</SOAP-ENC:decimal>
<SOAP-ENC:decimal>6.789</SOAP-ENC:decimal>
<xsd:string>
<xsd:string>
Of
Of Mans
Mans First
First Disobedience,
Disobedience, and
and the
the Fruit
Fruit
Of
Of that
that Forbidden
Forbidden Tree,
Tree, whose
whose mortal
mortal tast
tast
Brought
Brought Death
Death into
into the
the World,
World, and
and all
all our
our woe,
woe,
</xsd:string>
</xsd:string>
<SOAP-ENC:uriReference>
<SOAP-ENC:uriReference>
http://www.dartmouth.edu/~milton/reading_room/
http://www.dartmouth.edu/~milton/reading_room/
</SOAP-ENC:uriReference
</SOAP-ENC:uriReference >>
</SOAP-ENC:Array>
</SOAP-ENC:Array>

EJEMPLOS DE TIPOS DE DATOS COMPUESTOS


Arreglos Transmitidos Parcialmente (Arreglos Variantes)

Arreglo de cinco elementos en el cual sólo se transmiten los dos últimos


mediante la especificación del atributo SOAP-ENC:offset
<SOAP-ENC:Array
<SOAP-ENC:Array
SOAP-ENC:arrayType="xsd:string[5]"
SOAP-ENC:arrayType="xsd:string[5]"
SOAP-ENC:offset="[2]">
SOAP-ENC:offset="[2]">
<item>The
<item>The third
third element</item>
element</item>
<item>The
<item>The fourth
fourth element</item>
element</item>
</SOAP-ENC:Array>
</SOAP-ENC:Array>

Arreglos Esparcidos
Cada elemento especifica
especifica su
su posición
posición mediante
mediante el
el atributo
atributo SOAP-
SOAP-
ENC:position
<SOAP-ENC:Array
<SOAP-ENC:Array
SOAP-ENC:arrayType="xsd:string[5]"
SOAP-ENC:arrayType="xsd:string[5]" >>
<item
<item SOAP-ENC:position="[1]">The
SOAP-ENC:position="[1]">The first
first element</item>
element</item>
<item
<item SOAP-ENC:position="[3]">The
SOAP-ENC:position="[3]">The third
third element</item>
element</item>
</SOAP-ENC:Array>
</SOAP-ENC:Array>

11
SOAP SOBRE HTTP

• La implementación de SOAP sobre HTTP permite conjugar la


formal y descentralizada flexibilidad de SOAP con las
características de HTTP
• SOAP sigue naturalmente el modelo de solicitud/respuesta
de HTTP incorporando el contenido de una solicitud SOAP en
una solicitud HTTP e igualmente el contenido de una
respuesta SOAP en una respuesta HTTP
• Todas las solicitudes y respuestas SOAP deben asignar el
valor text/xml al encabezado Content-Type para ser
reconocidas como tales
• La especificación sólo define el uso del método POST

LLAMADAS A PROCEDIMIENTOS REMOTOS


USANDO SOAP
Las llamadas a procedimientos remotos y las respuestas
correspondientes son transportadas dentro del elemento Body
de un mansaje SOAP
Una llamada RPC se mapea naturalmente a una solicitud HTTP
y una respuesta RPC se mapea a una respuesta HTTP
Para realizar una llamada a un procedimiento remoto es
necesario la siguiente información:
• URI del objeto destino
• Nombre del método
• Firma del método (opcional)
• Parámetros del método
• Data de encabezado (opcional)

12
LLAMADAS A PROCEDIMIENTOS REMOTOS
USANDO SOAP

La representación de una llamada RPC presenta las


siguientes características:
• Es vista como una estructura simple que contiene como
elementos parámetros de tipo [in] o [in/out]
• El nombre y el tipo de la estructura es idéntico al nombre del
método invocado
• Cada parámetro es visto como un elemento de la estructura
cuyo nombre y tipo corresponde al nombre y tipo del
parámetro correspondiente. Los parámetros aparecen en el
mismo orden que lo establece la firma del método

LLAMADAS A PROCEDIMIENTOS REMOTOS


USANDO SOAP

La representación de una respuesta RPC presenta las siguientes


características:
•• Es
Es vista
vista como
como una
una estructura
estructura simple
simple cuyos
cuyos elemento
elemento corresponden
corresponden al al
valor
valor de
de retorno
retorno del
del método
método yy aa cada
cada parámetro
parámetro del
del tipo
tipo [out]
[out] oo [in/out]
[in/out]
•• El
El primer
primer elemento
elemento es es el
el valor
valor de
de retorno
retorno yy el
el resto
resto son
son los
los parámetros
parámetros
tipo
tipo [out]
[out] oo [in/out]
[in/out] ordenados
ordenados dede acuerdo
acuerdo aa la
la firma
firma del
del método
método
•• Cada
Cada parámetro
parámetro es es visto
visto como
como un
un elemento
elemento de de la
la estructura
estructura cuyo
cuyo
nombre
nombre yy tipo
tipo corresponde
corresponde al
al nombre
nombre yy tipo
tipo del
del parámetro
parámetro
•• El
El nombre
nombre del
del valor
valor de
de retorno
retorno no
no es
es importante,
importante, sin
sin embargo
embargo se
se ha
ha
establecido
establecido un
un convención
convención para
para nombrar
nombrar lala estructura
estructura de
de retorno,
retorno, la
la
cual
cual consiste
consiste en
en agregarle
agregarle la
la cadena
cadena “Response”
“Response” al al nombre
nombre deldel
método
método invocado
invocado
Una respuesta SOAP no puede contener un resultado y un elemento
Fault en el cuerpo del mensaje

13
RPC Y EL ELEMENTO HEADER

• Información adicional relevante a la codificación de la


invocación de un método puede ser expresada dentro del
elemento Header, mas no información que sea parte de la
definición del método (firma del método)

• Como ejemplo del uso de un elemento del Header está el


pase de un identificador de transacción junto al mensaje

CONSIDERACIONES DE SEGURIDAD

La especificación de SOAP no incluye métodos que


garanticen la integridad y privacidad de los datos
Ya que SOAP trabaja sobre HTTP, podría utilizar cualquier
característica de seguridad desarrollada para este protocolo,
tales como:
• SSL (SecureSocketsLayer) y
• HTTPS (HyperText Trasnfer Protocol Secure)

Se espera que sean incluidas consideraciones de seguridad


en futuras versiones

14
INTERFACES DE PROGRAMACIÓN
DE APLICACIONES

Developmentor (http://www.develop.com/soap/)
• Disponibles: APIs para Java y Perl
• En desarrollo: API para C/C++ y COM

IBM (http://www.alphaworks.ibm.com)
• Disponible: API para Java

DETALLES OPERACIONALES
DE IBM-SOAP V.1.2

Para emplear el API provisto por IBM se


requiere los siguientes herramientas de
software:

• Herramientas de desarrollo para Java2.


• Servidor Web Apache.
• Tomcat  (Servlets y JavaServer Pages)

SOAP
Services

Servlet & JSP


Web Client Web Server Engine

ServiceManager
JSPs

15
DESARROLLO DE APLICACIONES
USANDO IBM-SOAP V.1.2

1) Desarrollar la clase Java correspondiente al servicio SOAP

public class Calculator


{
public double sum(double arg1, double arg2)
throws Exception
{
return arg1+arg2;
}
}

DESARROLLO DE APLICACIONES
USANDO IBM-SOAP V.1.2

2) Desarrollar el cliente SOAP


public class Calculator {
....
private double doSum (double arg1, double arg2) throws SOAPException {
// Construcción del objeto Call.
Call call = new Call();
call.setTargetObjectURI ("urn:ibm-soap-demo-calculator");
call.setMethodName (sum);
call.setEncodingStyleURI(encodingStyleURI);
Vector params = new Vector ();
params.addElement
new Parameter("arg1", double.class, new Double (arg1), null));
params.addElement
new Parameter("arg2", double.class, new Double (arg2), null));
call.setParams (params);
// Hace la llamada
Response resp = call.invoke (url, “”); // (router URL, actionURI)
// Chequeo de la respuesta
if (resp.generatedFault()) {
Fault fault = resp.getFault ();
System.out.println ("Ouch, the call failed: ");
System.out.println ("Fault Code = " + fault.getFaultCode ());
System.out.println ("Fault String = " + fault.getFaultString());
return Double.NaN;
}
else {
Parameter result = resp.getReturnValue ();
return ((Double)result.getValue ()).doubleValue ();
}
}
}

16
DESARROLLO DE APLICACIONES
USANDO IBM-SOAP V.1.2

3) Configurar el servicio empleando la Herramienta de Administración

Algunos campos:

• ID del servicio
• Tiempo de vida del
objeto
• Métodos
• Tipo de proveedor (Java
o scripts)
• Tipo de codificación

INTEGRACIÓN CON CORBA

• Se anticipa que SOAP, actualmente auspiciado por W3C,


seá el protocolo utilizado en las interacciones B2B en un
futuro no muy lejano
• OMG (Object Management Group) anunció que había
comenzado a trabajar en un estándar permitirá la integración
de SOAP con CORBA
• La propuesta está publicada como “CORBA/SOAP
Interworking Request For Proposal”
• Se espera que este nuevo estándar este listo para mediados
del año 2001, posibilitando que clientes SOAP invoquen a
servidores CORBA y, clientes y servidores CORBA
interoperen empleando SOAP

17
CONCLUSIONES

• SOAP es un protocolo para la integración de sistemas


heterogéneos caracterizado por su relativa simplicidad y por la
gran popularidad de las tecnologías subyacentes que lo integran,
vale decir HTTP y XML

• La especificación del protocolo no incluye características que


presentan otras tecnologías de procesamiento distribuido tales
como activación de objetos, servicio de nombres y “recolector de
desechos”, entre otras

CONCLUSIONES

• Una de las ventajas más importantes de SOAP es su inmunidad a


las barreras de seguridad (firewalls), característica que favorece la
creación de complejos sistemas de procesamiento ampliamente
distribuidos que operan sobre la existente infraestructura de
Internet

• Aun con una especificación carente de un modelo de objetos claro


que evidencia la inmadurez de esta tecnología, SOAP promete
convertirse en el protocolo estándar utilizado en interacciónes B2B

18

You might also like