Introducción a losIntroducción a los
WebservicesWebservices
ContenidosContenidos
 DefiniciónDefinición
 Protocolos que hacen posible la existencia de losProtocolos que hacen posible la existencia de los
WebservicesWebservices
 Webservices en JavaWebservices en Java
 EjemploEjemplo
WebservicesWebservices
 Los servicios Web proporcionan una manera deLos servicios Web proporcionan una manera de
crear aplicaciones que pueden ser accedidas ycrear aplicaciones que pueden ser accedidas y
utilizadas por diferentes clientes utilizandoutilizadas por diferentes clientes utilizando
diferentes plataformas.diferentes plataformas.
 Permite invocar funciones de otras aplicacionesPermite invocar funciones de otras aplicaciones
independientemente de cómo se hayan creadoindependientemente de cómo se hayan creado
las aplicacioneslas aplicaciones
 Permite integración de aplicacionesPermite integración de aplicaciones
WebservicesWebservices
 Los Servicios Web son para los computadores,Los Servicios Web son para los computadores,
lo que las páginas Web para los humanoslo que las páginas Web para los humanos
 Fortaleza de los WebServices – basados enFortaleza de los WebServices – basados en
estándaresestándares
 Protocolos de comunicación
 Formatos de representación de datos
 Lenguajes descriptivos
 Mecanismo de descubrimiento
Protocolos y estándaresProtocolos y estándares
 HTTPHTTP
 XMLXML
 SOAP, XML-RPCSOAP, XML-RPC
 WSDLWSDL
 UDDIUDDI
Protocolos y EstándaresProtocolos y Estándares
 HTTPHTTP
 Un esquema de direccionamiento comprensible.Un esquema de direccionamiento comprensible.
 Arquitectura Cliente-Servidor.Arquitectura Cliente-Servidor.
 HTTP se asienta en el paradigma solicitud/respuesta. LaHTTP se asienta en el paradigma solicitud/respuesta. La
comunicación se asienta sobre TCP/IP. El puerto porcomunicación se asienta sobre TCP/IP. El puerto por
defecto es el 80, pero se pueden utilizar otros.defecto es el 80, pero se pueden utilizar otros.
Protocolos y EstándaresProtocolos y Estándares
 HTTPHTTP
 Es un protocolo sin conexión y sin estado.Es un protocolo sin conexión y sin estado.
 Después de que el servidor ha respondido la petición delDespués de que el servidor ha respondido la petición del
cliente, se rompe la conexión entre ambos.cliente, se rompe la conexión entre ambos.
 Está abierto a nuevos tipos de datos.Está abierto a nuevos tipos de datos.
 Cuando un servidor HTTP transmite información deCuando un servidor HTTP transmite información de
vuelta a un cliente, incluye una cabecera que le indica alvuelta a un cliente, incluye una cabecera que le indica al
cliente sobre los tipos de datos que componen elcliente sobre los tipos de datos que componen el
documento.documento.
Protocolos y EstándaresProtocolos y Estándares
 XML (XML (eXtended Markup Language)
 Base de los servicios WebBase de los servicios Web
 Permite comunicación entre sistemas de formaPermite comunicación entre sistemas de forma
estándarestándar
 Información con estructuraInformación con estructura
 Utilizado ampliamente en la industriaUtilizado ampliamente en la industria
 Futuro estándar de estructuración de informaciónFuturo estándar de estructuración de información
Protocolos y EstándaresProtocolos y Estándares
 SOAP v/s XML-RPCSOAP v/s XML-RPC
 Invocación de procedimientos a través de protocolosInvocación de procedimientos a través de protocolos
estándarestándar
 XML-RPC . Unix FriendlyXML-RPC . Unix Friendly
 SOAP . Arquitectura .NETSOAP . Arquitectura .NET
 Especifican todas las reglas necesarias para ubicarEspecifican todas las reglas necesarias para ubicar
servicios Web XML, integrarlos en aplicaciones yservicios Web XML, integrarlos en aplicaciones y
establecer la comunicación entre ellos.establecer la comunicación entre ellos.
 Incompatibles entre síIncompatibles entre sí
Protocolos y EstándaresProtocolos y Estándares
 SOAP v/s XML-RPCSOAP v/s XML-RPC
 Estandarizados por la W3CEstandarizados por la W3C
 SOAP lidera en desarrollos de WebservicesSOAP lidera en desarrollos de Webservices
 Google posee un servicio Web de búsquedaGoogle posee un servicio Web de búsqueda
implementado con protocolo SOAPimplementado con protocolo SOAP
Protocolos y EstándaresProtocolos y Estándares
 SOAPSOAP
 Protocolo de acceso a objetos simpleProtocolo de acceso a objetos simple
 soporte completo y minucioso de todo tipo desoporte completo y minucioso de todo tipo de
servicios Webservicios Web
 Mas potente que XML-RPCMas potente que XML-RPC
 Incluye toda una arquitectura a su alrededorIncluye toda una arquitectura a su alrededor
Protocolos y EstándaresProtocolos y Estándares
 WSDL y UDDIWSDL y UDDI
 El archivo WSDL, en formato XML, indica alEl archivo WSDL, en formato XML, indica al
sistema que consulte, qué servicios disponesistema que consulte, qué servicios dispone
 WSDL además da una referencia precisa sobre elWSDL además da una referencia precisa sobre el
servicio, para poder invocarlo usando los parámetrosservicio, para poder invocarlo usando los parámetros
adecuadosadecuados
 UDDI es un Servicio Web en línea que se puedeUDDI es un Servicio Web en línea que se puede
utilizar desde las aplicaciones para descubrir deutilizar desde las aplicaciones para descubrir de
forma dinámica otros servicios en líneaforma dinámica otros servicios en línea
Protocolos y EstándaresProtocolos y Estándares
 WSDL y UDDIWSDL y UDDI
Cliente Servicio Web
SOAP
SOAP
Registro UDDI
WSDL WSDL
Webservices en JavaWebservices en Java
 Apache Axis – Implementación de SOAP paraApache Axis – Implementación de SOAP para
Java y C++Java y C++
 Continuación del proyecto Apache SOAPContinuación del proyecto Apache SOAP
 Deploy de servicios en forma naturalDeploy de servicios en forma natural
 Requiere un WebServer para operar (ApacheRequiere un WebServer para operar (Apache
Tomcat)Tomcat)
Ejemplo deploy simpleEjemplo deploy simple
 Cálculo raíz cuadradaCálculo raíz cuadrada
public class Raizpublic class Raiz
{{
public double raizCuadrada(String i1)public double raizCuadrada(String i1)
{{
return Math.sqrt(Integer.parseInt(i1));return Math.sqrt(Integer.parseInt(i1));
}}
}}
 Guardamos clase con extensión .jws enGuardamos clase con extensión .jws en
directorio de Axisdirectorio de Axis
Ejemplo deploy simpleEjemplo deploy simple
 XML SOAP generadoXML SOAP generado
<?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body><soapenv:Body>
<raizCuadradaResponse<raizCuadradaResponse
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/>
<raizCuadradaReturn xsi:type="xsd:double">2.0</raizCuadradaReturn><raizCuadradaReturn xsi:type="xsd:double">2.0</raizCuadradaReturn>
</raizCuadradaResponse></raizCuadradaResponse>
</soapenv:Body></soapenv:Body>
</soapenv:Envelope></soapenv:Envelope>
Ejemplo deploy simpleEjemplo deploy simple
 Cliente que utiliza este WebserviceCliente que utiliza este Webservice
String numero ="465";String numero ="465";
Service service =Service service = newnew Service();Service();
Call call = (Call)service.createCall();Call call = (Call)service.createCall();
call.setTargetEndpointAddress(call.setTargetEndpointAddress(newnew URL("http://localhost:8080/axis/Raiz.jws"));URL("http://localhost:8080/axis/Raiz.jws"));
call.setOperationName(call.setOperationName(newnew QName("http://soapinterop.org/", "RaizCuadrada"));QName("http://soapinterop.org/", "RaizCuadrada"));
Double returnValue = (Double)call.invoke(Double returnValue = (Double)call.invoke(newnew Object[]{numero});Object[]{numero});
System.out.println("La raiz de "+numero +" es "+returnValue);System.out.println("La raiz de "+numero +" es "+returnValue);
Ejemplo deploy simpleEjemplo deploy simple
 Tipos de datos estandarizadosTipos de datos estandarizados
 xsd:base64Binaryxsd:base64Binary byte[]byte[]
 xsd:booleanxsd:boolean booleanboolean
 xsd:bytexsd:byte bytebyte
 xsd:dateTimexsd:dateTime java.util.Calendarjava.util.Calendar
 xsd:decimalxsd:decimal java.math.BigDecimaljava.math.BigDecimal
 xsd:doublexsd:double doubledouble
 xsd:floatxsd:float floatfloat
 xsd:hexBinaryxsd:hexBinary byte[]byte[]
 xsd:intxsd:int intint
 xsd:integerxsd:integer java.math.BigIntegerjava.math.BigInteger
 xsd:longxsd:long longlong
 xsd:shortxsd:short shortshort
 xsd:stringxsd:string java.lang.Stringjava.lang.String
 xsd:QNamexsd:QNamejavax.xml.namespace.QNamejavax.xml.namespace.QName
Deploy más elaboradoDeploy más elaborado
 Ejemplo: Webservice que retorna una clase creada por nosotrosEjemplo: Webservice que retorna una clase creada por nosotros
public class Archivo implements Serializablepublic class Archivo implements Serializable
{{
public String Nombre;public String Nombre;
public byte[] Datos;public byte[] Datos;
public Archivo(){}public Archivo(){}
public void setNombre(String param_Nombre){public void setNombre(String param_Nombre){
Nombre = param_Nombre;}Nombre = param_Nombre;}
public void setDatos(byte[] param_Datos){public void setDatos(byte[] param_Datos){
Datos = param_Datos;}Datos = param_Datos;}
public byte[] getDatos()public byte[] getDatos() {{
return Datos;return Datos; }}
public String getNombre(){public String getNombre(){
return Nombre;}return Nombre;}
}}
Deploy más elaboradoDeploy más elaborado
 Archivo WSDDArchivo WSDD
<deployment xmlns="http://xml.apache.org/axis/wsdd/"<deployment xmlns="http://xml.apache.org/axis/wsdd/"
xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="EventosServidor" provider="java:RPC"><service name="EventosServidor" provider="java:RPC">
<parameter name="className" value="WS_EventosServidor"/><parameter name="className" value="WS_EventosServidor"/>
<parameter name="allowedMethods" value="*"/><parameter name="allowedMethods" value="*"/>
<beanMapping qname="myNS:Archivo" xmlns:myNS="urn:BeanService"<beanMapping qname="myNS:Archivo" xmlns:myNS="urn:BeanService"
languageSpecificType="java:Archivo"/>languageSpecificType="java:Archivo"/>
</service></service>
</deployment></deployment>
Deploy más elaboradoDeploy más elaborado
 ClienteCliente
Service service =Service service = newnew Service();Service();
Call call = (Call)service.createCall();Call call = (Call)service.createCall();
QName archivoqn =QName archivoqn = newnew QName("urn:BeanService","Archivo");QName("urn:BeanService","Archivo");
call.setOperationName( "descargaEventos" );call.setOperationName( "descargaEventos" );
call.registerTypeMapping(Archivo.call.registerTypeMapping(Archivo.classclass,archivoqn,,archivoqn,newnew
BeanSerializerFactory(Archivo.BeanSerializerFactory(Archivo.classclass,archivoqn),,archivoqn),newnew
BeanDeserializerFactory(Archivo.BeanDeserializerFactory(Archivo.classclass,archivoqn),,archivoqn),falsefalse););
call.registerTypeMapping(Archivo.call.registerTypeMapping(Archivo.classclass,archivoqn,,archivoqn,newnew
BeanSerializerFactory(Archivo.BeanSerializerFactory(Archivo.classclass,archivoqn),,archivoqn),newnew
BeanDeserializerFactory(Archivo.BeanDeserializerFactory(Archivo.classclass,archivoqn));,archivoqn));
call.setTargetEndpointAddress(call.setTargetEndpointAddress(newnew
URL("http://localhost:8080/axis/services/EventosServidor"));URL("http://localhost:8080/axis/services/EventosServidor"));
Archivo[] returnValue = (Archivo[])call.invoke(Archivo[] returnValue = (Archivo[])call.invoke(newnew Object[]{Fecha,Hora});Object[]{Fecha,Hora});
FinFin

Webservices

  • 1.
    Introducción a losIntroduccióna los WebservicesWebservices
  • 2.
    ContenidosContenidos  DefiniciónDefinición  Protocolosque hacen posible la existencia de losProtocolos que hacen posible la existencia de los WebservicesWebservices  Webservices en JavaWebservices en Java  EjemploEjemplo
  • 3.
    WebservicesWebservices  Los serviciosWeb proporcionan una manera deLos servicios Web proporcionan una manera de crear aplicaciones que pueden ser accedidas ycrear aplicaciones que pueden ser accedidas y utilizadas por diferentes clientes utilizandoutilizadas por diferentes clientes utilizando diferentes plataformas.diferentes plataformas.  Permite invocar funciones de otras aplicacionesPermite invocar funciones de otras aplicaciones independientemente de cómo se hayan creadoindependientemente de cómo se hayan creado las aplicacioneslas aplicaciones  Permite integración de aplicacionesPermite integración de aplicaciones
  • 4.
    WebservicesWebservices  Los ServiciosWeb son para los computadores,Los Servicios Web son para los computadores, lo que las páginas Web para los humanoslo que las páginas Web para los humanos  Fortaleza de los WebServices – basados enFortaleza de los WebServices – basados en estándaresestándares  Protocolos de comunicación  Formatos de representación de datos  Lenguajes descriptivos  Mecanismo de descubrimiento
  • 5.
    Protocolos y estándaresProtocolosy estándares  HTTPHTTP  XMLXML  SOAP, XML-RPCSOAP, XML-RPC  WSDLWSDL  UDDIUDDI
  • 6.
    Protocolos y EstándaresProtocolosy Estándares  HTTPHTTP  Un esquema de direccionamiento comprensible.Un esquema de direccionamiento comprensible.  Arquitectura Cliente-Servidor.Arquitectura Cliente-Servidor.  HTTP se asienta en el paradigma solicitud/respuesta. LaHTTP se asienta en el paradigma solicitud/respuesta. La comunicación se asienta sobre TCP/IP. El puerto porcomunicación se asienta sobre TCP/IP. El puerto por defecto es el 80, pero se pueden utilizar otros.defecto es el 80, pero se pueden utilizar otros.
  • 7.
    Protocolos y EstándaresProtocolosy Estándares  HTTPHTTP  Es un protocolo sin conexión y sin estado.Es un protocolo sin conexión y sin estado.  Después de que el servidor ha respondido la petición delDespués de que el servidor ha respondido la petición del cliente, se rompe la conexión entre ambos.cliente, se rompe la conexión entre ambos.  Está abierto a nuevos tipos de datos.Está abierto a nuevos tipos de datos.  Cuando un servidor HTTP transmite información deCuando un servidor HTTP transmite información de vuelta a un cliente, incluye una cabecera que le indica alvuelta a un cliente, incluye una cabecera que le indica al cliente sobre los tipos de datos que componen elcliente sobre los tipos de datos que componen el documento.documento.
  • 8.
    Protocolos y EstándaresProtocolosy Estándares  XML (XML (eXtended Markup Language)  Base de los servicios WebBase de los servicios Web  Permite comunicación entre sistemas de formaPermite comunicación entre sistemas de forma estándarestándar  Información con estructuraInformación con estructura  Utilizado ampliamente en la industriaUtilizado ampliamente en la industria  Futuro estándar de estructuración de informaciónFuturo estándar de estructuración de información
  • 9.
    Protocolos y EstándaresProtocolosy Estándares  SOAP v/s XML-RPCSOAP v/s XML-RPC  Invocación de procedimientos a través de protocolosInvocación de procedimientos a través de protocolos estándarestándar  XML-RPC . Unix FriendlyXML-RPC . Unix Friendly  SOAP . Arquitectura .NETSOAP . Arquitectura .NET  Especifican todas las reglas necesarias para ubicarEspecifican todas las reglas necesarias para ubicar servicios Web XML, integrarlos en aplicaciones yservicios Web XML, integrarlos en aplicaciones y establecer la comunicación entre ellos.establecer la comunicación entre ellos.  Incompatibles entre síIncompatibles entre sí
  • 10.
    Protocolos y EstándaresProtocolosy Estándares  SOAP v/s XML-RPCSOAP v/s XML-RPC  Estandarizados por la W3CEstandarizados por la W3C  SOAP lidera en desarrollos de WebservicesSOAP lidera en desarrollos de Webservices  Google posee un servicio Web de búsquedaGoogle posee un servicio Web de búsqueda implementado con protocolo SOAPimplementado con protocolo SOAP
  • 11.
    Protocolos y EstándaresProtocolosy Estándares  SOAPSOAP  Protocolo de acceso a objetos simpleProtocolo de acceso a objetos simple  soporte completo y minucioso de todo tipo desoporte completo y minucioso de todo tipo de servicios Webservicios Web  Mas potente que XML-RPCMas potente que XML-RPC  Incluye toda una arquitectura a su alrededorIncluye toda una arquitectura a su alrededor
  • 12.
    Protocolos y EstándaresProtocolosy Estándares  WSDL y UDDIWSDL y UDDI  El archivo WSDL, en formato XML, indica alEl archivo WSDL, en formato XML, indica al sistema que consulte, qué servicios disponesistema que consulte, qué servicios dispone  WSDL además da una referencia precisa sobre elWSDL además da una referencia precisa sobre el servicio, para poder invocarlo usando los parámetrosservicio, para poder invocarlo usando los parámetros adecuadosadecuados  UDDI es un Servicio Web en línea que se puedeUDDI es un Servicio Web en línea que se puede utilizar desde las aplicaciones para descubrir deutilizar desde las aplicaciones para descubrir de forma dinámica otros servicios en líneaforma dinámica otros servicios en línea
  • 13.
    Protocolos y EstándaresProtocolosy Estándares  WSDL y UDDIWSDL y UDDI Cliente Servicio Web SOAP SOAP Registro UDDI WSDL WSDL
  • 14.
    Webservices en JavaWebservicesen Java  Apache Axis – Implementación de SOAP paraApache Axis – Implementación de SOAP para Java y C++Java y C++  Continuación del proyecto Apache SOAPContinuación del proyecto Apache SOAP  Deploy de servicios en forma naturalDeploy de servicios en forma natural  Requiere un WebServer para operar (ApacheRequiere un WebServer para operar (Apache Tomcat)Tomcat)
  • 15.
    Ejemplo deploy simpleEjemplodeploy simple  Cálculo raíz cuadradaCálculo raíz cuadrada public class Raizpublic class Raiz {{ public double raizCuadrada(String i1)public double raizCuadrada(String i1) {{ return Math.sqrt(Integer.parseInt(i1));return Math.sqrt(Integer.parseInt(i1)); }} }}  Guardamos clase con extensión .jws enGuardamos clase con extensión .jws en directorio de Axisdirectorio de Axis
  • 16.
    Ejemplo deploy simpleEjemplodeploy simple  XML SOAP generadoXML SOAP generado <?xml version="1.0" encoding="UTF-8"?><?xml version="1.0" encoding="UTF-8"?> <soapenv:Envelope<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body><soapenv:Body> <raizCuadradaResponse<raizCuadradaResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/>soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/> <raizCuadradaReturn xsi:type="xsd:double">2.0</raizCuadradaReturn><raizCuadradaReturn xsi:type="xsd:double">2.0</raizCuadradaReturn> </raizCuadradaResponse></raizCuadradaResponse> </soapenv:Body></soapenv:Body> </soapenv:Envelope></soapenv:Envelope>
  • 17.
    Ejemplo deploy simpleEjemplodeploy simple  Cliente que utiliza este WebserviceCliente que utiliza este Webservice String numero ="465";String numero ="465"; Service service =Service service = newnew Service();Service(); Call call = (Call)service.createCall();Call call = (Call)service.createCall(); call.setTargetEndpointAddress(call.setTargetEndpointAddress(newnew URL("http://localhost:8080/axis/Raiz.jws"));URL("http://localhost:8080/axis/Raiz.jws")); call.setOperationName(call.setOperationName(newnew QName("http://soapinterop.org/", "RaizCuadrada"));QName("http://soapinterop.org/", "RaizCuadrada")); Double returnValue = (Double)call.invoke(Double returnValue = (Double)call.invoke(newnew Object[]{numero});Object[]{numero}); System.out.println("La raiz de "+numero +" es "+returnValue);System.out.println("La raiz de "+numero +" es "+returnValue);
  • 18.
    Ejemplo deploy simpleEjemplodeploy simple  Tipos de datos estandarizadosTipos de datos estandarizados  xsd:base64Binaryxsd:base64Binary byte[]byte[]  xsd:booleanxsd:boolean booleanboolean  xsd:bytexsd:byte bytebyte  xsd:dateTimexsd:dateTime java.util.Calendarjava.util.Calendar  xsd:decimalxsd:decimal java.math.BigDecimaljava.math.BigDecimal  xsd:doublexsd:double doubledouble  xsd:floatxsd:float floatfloat  xsd:hexBinaryxsd:hexBinary byte[]byte[]  xsd:intxsd:int intint  xsd:integerxsd:integer java.math.BigIntegerjava.math.BigInteger  xsd:longxsd:long longlong  xsd:shortxsd:short shortshort  xsd:stringxsd:string java.lang.Stringjava.lang.String  xsd:QNamexsd:QNamejavax.xml.namespace.QNamejavax.xml.namespace.QName
  • 19.
    Deploy más elaboradoDeploymás elaborado  Ejemplo: Webservice que retorna una clase creada por nosotrosEjemplo: Webservice que retorna una clase creada por nosotros public class Archivo implements Serializablepublic class Archivo implements Serializable {{ public String Nombre;public String Nombre; public byte[] Datos;public byte[] Datos; public Archivo(){}public Archivo(){} public void setNombre(String param_Nombre){public void setNombre(String param_Nombre){ Nombre = param_Nombre;}Nombre = param_Nombre;} public void setDatos(byte[] param_Datos){public void setDatos(byte[] param_Datos){ Datos = param_Datos;}Datos = param_Datos;} public byte[] getDatos()public byte[] getDatos() {{ return Datos;return Datos; }} public String getNombre(){public String getNombre(){ return Nombre;}return Nombre;} }}
  • 20.
    Deploy más elaboradoDeploymás elaborado  Archivo WSDDArchivo WSDD <deployment xmlns="http://xml.apache.org/axis/wsdd/"<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">xmlns:java="http://xml.apache.org/axis/wsdd/providers/java"> <service name="EventosServidor" provider="java:RPC"><service name="EventosServidor" provider="java:RPC"> <parameter name="className" value="WS_EventosServidor"/><parameter name="className" value="WS_EventosServidor"/> <parameter name="allowedMethods" value="*"/><parameter name="allowedMethods" value="*"/> <beanMapping qname="myNS:Archivo" xmlns:myNS="urn:BeanService"<beanMapping qname="myNS:Archivo" xmlns:myNS="urn:BeanService" languageSpecificType="java:Archivo"/>languageSpecificType="java:Archivo"/> </service></service> </deployment></deployment>
  • 21.
    Deploy más elaboradoDeploymás elaborado  ClienteCliente Service service =Service service = newnew Service();Service(); Call call = (Call)service.createCall();Call call = (Call)service.createCall(); QName archivoqn =QName archivoqn = newnew QName("urn:BeanService","Archivo");QName("urn:BeanService","Archivo"); call.setOperationName( "descargaEventos" );call.setOperationName( "descargaEventos" ); call.registerTypeMapping(Archivo.call.registerTypeMapping(Archivo.classclass,archivoqn,,archivoqn,newnew BeanSerializerFactory(Archivo.BeanSerializerFactory(Archivo.classclass,archivoqn),,archivoqn),newnew BeanDeserializerFactory(Archivo.BeanDeserializerFactory(Archivo.classclass,archivoqn),,archivoqn),falsefalse);); call.registerTypeMapping(Archivo.call.registerTypeMapping(Archivo.classclass,archivoqn,,archivoqn,newnew BeanSerializerFactory(Archivo.BeanSerializerFactory(Archivo.classclass,archivoqn),,archivoqn),newnew BeanDeserializerFactory(Archivo.BeanDeserializerFactory(Archivo.classclass,archivoqn));,archivoqn)); call.setTargetEndpointAddress(call.setTargetEndpointAddress(newnew URL("http://localhost:8080/axis/services/EventosServidor"));URL("http://localhost:8080/axis/services/EventosServidor")); Archivo[] returnValue = (Archivo[])call.invoke(Archivo[] returnValue = (Archivo[])call.invoke(newnew Object[]{Fecha,Hora});Object[]{Fecha,Hora});
  • 22.