5.2 JAX-RPC. Caso de estudio: Apache Axis

Tamaño: px
Comenzar la demostración a partir de la página:

Download "5.2 JAX-RPC. Caso de estudio: Apache Axis"

Transcripción

1 5.2 JAX-RPC. Caso de estudio: Apache Axis

2 Qué es JAX-RPC? (1) JAX-RPC es el API estándar en Java para implementar e invocar operaciones de servicios web mediante el paradigma de los RPCs Similar al paradigma de CORBA Especifica un mapping de WSDL a Java Permite que las implementaciones de JAX-RPC proporcionen un compilador de WSDL a Java, que genere stubs (proxies) y skeletons para invocar e implementar servicios web Especifica un mapping de Java a WSDL Permite que las implementaciones de JAX-RPC proporcionen un compilador de Java a WSDL, que genere el documento WSDL correspondiente a un interfaz Java La definición del interfaz Java está sujeta a ciertas restricciones El documento WSDL permite que un cliente (escrito sobre cualquier plataforma) pueda invocar el servicio web

3 Qué es JAX-RPC? (y 2) Proceso de desarrollo Interfaz Java Documento WSDL Compilador Java Compilador WSDL2Java Compilador Java2WSDL Stubs, skeletons y tipos Java Documento WSDL

4 Qué es Apache Axis? Una implementación de JAX-RPC para contenedores web J2EE Como veremos más adelante, existen dos maneras de implementar un servicio web Dentro de un contenedor web Dentro de un contenedor de EJBs Incluye Un conjunto de librerías Un compilador de Java a WSDL Un compilador de WSDL a Java

5 Ejemplo StockQuote Servicio Web que ofrece una interfaz con una operación que a partir de un conjunto de identificadores de valores bursátiles devuelve sus cotizaciones Cada cotización incluye Su identificador Su valor El número de segundos de antigüedad que tiene el valor (el valor real actual sería ligeramente distinto) Cliente standalone SOAP/HTTP Internet SOAP/HTTP StockQuoteProvider El ejemplo permitirá aprender cómo en JAX-RPC Se define el interfaz de un servicio web Se invoca un servicio web Se implementa un servicio web

6 Definición de la interfaz del servicio web (1) Se ha definido en el paquete es.udc.fbellas.corbaws.stockquote.servi cedef El paquete incluye StockQuoteProvider: la interfaz propiamente dicha Define la operación getlasttradeprices TradePrice: la clase que modela una cotización La operación getlasttradeprices devuelve los TradePrice correspondientes a un conjunto de identificadores de valores bursátiles que recibe como parámetro IncorrectTickerSymbolException La operación getlasttradeprices levanta esta excepción si alguno de los identificadores no existe

7 Definición de la interfaz del servicio web (2) Método de trabajo Compilar las clases del paquete es.udc.fbellas.corbaws.stockquote.servicedef Utilizar el compilador de Java a WSDL sobre StockQuoteProvider Genera StockQuoteProvider.wsdl Usar el compilador de WSDL a Java sobre StockQuoteProvider.wsdl Se le indicará que genere el código Java en el paquete es.udc.fbellas.corbaws.stockquote.wsdl El código generado incluirá Stub, skeleton y clases auxiliares, y Otra vez StockQuoteProvider, TradePrice e IncorrectTickerSymbolException (incluyen atributos y operaciones adicionales que necesitan el stub y el skeleton) Tanto el cliente como el servicio web usarán estos tipos (paquete es.udc.fbellas.corbaws.stockquote.wsdl) Los tipos definidos en es.udc.fbellas.corbaws.stockquote.servicedef sólo se definen para poder usar el compilador de Java a WSDL y obtener el fichero WSDL (y a partir de éste, usar el compilador de WSDL a Java)

8 Definición de la interfaz del servicio web (y 3) Alternativamente se podría intentar usar sólo un paquete Ejemplo Compilar las clases del paquete es.udc.fbellas.corbaws.stockquote.servicedef Utilizar el compilador de Java a WSDL sobre StockQuoteProvider Genera StockQuoteProvider.wsdl Usar el compilador de WSDL a Java sobre StockQuoteProvider.wsdl Problema Indicando que genere el código Java en el paquete es.udc.fbellas.corbaws.stockquote.servicedef El compilador de WSDL a Java machaca los tipos StockQuoteProider, TradePrice y IncorrectTickerSymbolException con los generados por él En principio esto no debería suponer un problema, pero no funciona bien en Axis 1.3 cuando se repite el proceso una segunda vez (compilador de Java a WSDL + compilador de WSDL a Java)

9 es.udc.fbellas.corbaws.stockquote.servicedef.stockquoteprovider package es.udc.fbellas.corbaws.stockquote.servicedef; import java.rmi.remote; import java.rmi.remoteexception; public interface StockQuoteProvider extends Remote { TradePrice[] getlasttradeprices(string[] tickersymbols) throws RemoteException, IncorrectTickerSymbolException; }

10 es.udc.fbellas.corbaws.stockquote.servicedef.tradeprice (1) package es.udc.fbellas.corbaws.stockquote.servicedef; import java.io.serializable; public class TradePrice implements Serializable { private String tickersymbol; private double price; private int elapsedseconds; public String gettickersymbol() { return tickersymbol; } public void settickersymbol(string tickersymbol) { this.tickersymbol = tickersymbol; } public double getprice() { return price; }

11 es.udc.fbellas.corbaws.stockquote.servicedef.tradeprice (y 2) public void setprice(double price) { this.price = price; } public int getelapsedseconds() { return elapsedseconds; } public void setelapsedseconds(int elapsedseconds) { this.elapsedseconds = elapsedseconds; } }

12 es.udc.fbellas.corbaws.stockquote.servicedef.incorrecttickersymbolexception package es.udc.fbellas.corbaws.stockquote.servicedef; public class IncorrectTickerSymbolException extends Exception { private String incorrecttickersymbol; public IncorrectTickerSymbolException(String incorrecttickersymbol) { this.incorrecttickersymbol = incorrecttickersymbol; } public String getincorrecttickersymbol() { return incorrecttickersymbol; } }

13 Visión global de WSDL Dejaremos momentáneamente la explicación de los detalles de la definición del interfaz remoto StockQuoteProvider y sus tipos asociados Una vez compilados los anteriores ficheros Java, se puede obtener el documento WSDL Un documento WSDL consta de varias partes Definición de tipos de datos Definición de mensajes Definición de tipos de puertos Definición de bindings Definición de servicios Vamos a echar un vistazo al fichero generado Objetivo: comprender el formato general de un documento WSDL

14 StockQuoteProvider.wsdl (1) <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions targetnamespace=" xmlns:apachesoap=" xmlns:impl=" xmlns:intf=" xmlns:soapenc=" xmlns:wsdl=" xmlns:wsdlsoap=" xmlns:xsd=" <wsdl:types> <schema targetnamespace=" xmlns=" <import namespace=" <complextype name="arrayof_xsd_string"> <complexcontent> <restriction base="soapenc:array"> <attribute ref="soapenc:arraytype" wsdl:arraytype="xsd:string[]"/> </restriction> </complexcontent> </complextype>

15 StockQuoteProvider.wsdl (2) <complextype name="tradeprice"> <sequence> <element name="elapsedseconds" type="xsd:int"/> <element name="price" type="xsd:double"/> <element name="tickersymbol" nillable="true" type="xsd:string"/> </sequence> </complextype> <complextype name="arrayoftradeprice"> <complexcontent> <restriction base="soapenc:array"> <attribute ref="soapenc:arraytype" wsdl:arraytype="impl:tradeprice[]"/> </restriction> </complexcontent> </complextype> <complextype name="incorrecttickersymbolexception"> <sequence> <element name="incorrecttickersymbol" nillable="true" type="xsd:string"/> </sequence> </complextype> </schema> </wsdl:types>

16 Definición de tipos de datos - Comentarios Es posible usar varios sistemas de tipos El uso de un esquema XML es el más habitual Cuando el protocolo que se usa es SOAP, también se pueden usar tipos SOAP En el ejemplo se definen El tipo complejo ArrayOf_xsd_string, que corresponde al tipo Java String[] Los tipos complejos que representan vectores, se definen como una especialización por restricción de soapenc:array Los tipos complejos TradePrice y ArrayOfTradePrice, que corresponden a los tipos Java TradePrice y TradePrice[] El atributo nillable con valor true especifica que el correspondiente elemento puede tomar el valor nil (null en Java)

17 StockQuoteProvider.wsdl (3) <wsdl:message name="incorrecttickersymbolexception"> <wsdl:part name="fault" type="impl:incorrecttickersymbolexception"/> </wsdl:message> <wsdl:message name="getlasttradepricesresponse"> <wsdl:part name="getlasttradepricesreturn" type="impl:arrayoftradeprice"/> </wsdl:message> <wsdl:message name="getlasttradepricesrequest"> <wsdl:part name="in0" type="impl:arrayof_xsd_string"/> </wsdl:message> <wsdl:porttype name="stockquoteprovider"> <wsdl:operation name="getlasttradeprices" parameterorder="in0"> <wsdl:input name="getlasttradepricesrequest" message="impl:getlasttradepricesrequest"/> <wsdl:output name="getlasttradepricesresponse" message="impl:getlasttradepricesresponse"/> <wsdl:fault name="incorrecttickersymbolexception" message="impl:incorrecttickersymbolexception"/> </wsdl:operation> </wsdl:porttype>

18 Definición de mensajes y puertos Comentarios (1) Definición de mensajes Especifica los mensajes que se pueden intercambiar clientes y servidores Cada mensaje consta de partes, donde cada parte especifica un parámetro del mensaje, un valor de retorno o una excepción (fault) Definición de tipos de puertos Un tipo de puerto especifica un conjunto de operaciones Cada operación especifica el orden de los parámetros, el mensaje de entrada (input), el de salida (output) y los posibles mensajes fault que puede devolver la operación Un mensaje fault sólo puede contener una parte

19 Definición de mensajes y puertos Comentarios (y 2) Definición de tipos de puertos (cont) Tipos de parámetros In: parámetro que sólo aparece en un mensaje de entrada Out: parámetro que sólo aparece en un mensaje de salida Inout: parámetro que aparece en un mensaje de entrada y salida Valor de retorno Parte que no es parámetro ni excepción

20 StockQuoteProvider.wsdl (4) <wsdl:binding name="stockquoteprovidersoapbinding type="impl:stockquoteprovider"> <wsdlsoap:binding style="rpc" transport=" <wsdl:operation name="getlasttradeprices"> <wsdlsoap:operation soapaction=""/> <wsdl:input name="getlasttradepricesrequest"> <wsdlsoap:body use="encoded" encodingstyle=" namespace=" </wsdl:input> <wsdl:output name="getlasttradepricesresponse"> <wsdlsoap:body use="encoded" encodingstyle=" namespace=" </wsdl:output> <wsdl:fault name="incorrecttickersymbolexception"> <wsdlsoap:fault use="encoded" encodingstyle=" namespace=" </wsdl:fault> </wsdl:operation> </wsdl:binding>

21 StockQuoteProvider.wsdl (y 5) <wsdl:service name="stockquoteproviderservice"> <wsdl:port name="stockquoteprovider" binding="impl:stockquoteprovidersoapbinding"> <wsdlsoap:address location=" </wsdl:port> </wsdl:service> </wsdl:definitions>

22 Definición de bindings y servicios Comentarios Definición de bindings Un binding especifica un protocolo y formato de datos para un tipo de puerto (e.g. SOAP sobre HTTP) Definición de servicios Un servicio especifica un conjunto de puertos (endpoints) Cada puerto está asociado a un binding particular y especifica su dirección de contacto En JAX-RPC Se usa el término service endpoint para referirse al puerto de un servicio web Se usa el término interfaz del service endpoint para referirse al interfaz del puerto Usaremos indistintamente los términos service endpoint y puerto

23 Mapping de Java a WSDL (1) Tipos válidos JAX-RPC: tipos que se pueden emplear en la definición de interfaces remotos Tipos primitivos y sus contrapartidas objetuales Clases estándar Tipos valor JAX-RPC Arrays ([]) de tipos válidos

24 Mapping de Java a WSDL (2) Tipos primitivos y sus contrapartidas objetuales Tipo Java boolean byte short int long float double Tipo WSDL xsd:boolean xsd:byte xsd:short xsd:int xsd:long xsd:float xsd:double En el caso de las contrapartidas objetuales, el correspondiente elemento lleva el atributo nillable a true

25 Mapping de Java a WSDL (3) Clases estándar Tipo Java java.lang.string java.math.biginteger java.math.bigdecimal java.util.calendar java.util.date Tipo WSDL xsd:string xsd:integer xsd:decimal xsd:datetime xsd:datetime Arrays ([]) de tipos válidos Se mapean a tipos complejos derivados por restricción de un array SOAP, a excepción de byte[] (xsd:base64binary)

26 Mapping de Java a WSDL (4) Tipos valor JAX-RPC En general estas clases deben tener Un constructor público sin argumentos Atributos públicos de tipos válidos o usar las convenciones de nombrado de JavaBeans para sus atributos (métodos getxxx y setxxx) Pueden heredar de otras clases valor Se mapean a tipos WSDL complejos con compositor all o sequence En caso de herencia, el tipo complejo se define por derivación Es buena práctica que implementen java.io.serializable (interfaz marker) Ej.: TradePrice

27 Mapping de Java a WSDL (5) Definición de interfaces remotos ( interfaces de service endpoints ) Extienden java.rmi.remote (interfaz marker) Todas las operaciones deben declarar java.rmi.remoteexception Cada interfaz se mapea a un puerto Dado que en WSDL no existe herencia entre puertos, si un interfaz deriva de otro, el puerto hijo incluye todas las operaciones del padre Una operación no puede recibir como parámetro o devolver como valor de retorno una referencia a un interfaz remoto Actualmente SOAP no ofrece soporte para ello Ej.: StockQuoteProvider

28 Mapping de Java a WSDL (6) Excepciones java.rmi.remoteexception se mapea a un fault de SOAP Las excepciones específicas al puerto, es decir, las que extienden directa o indirectamente java.lang.exception (pero no java.lang.runtimeexception) se mapean a un wsdl:fault Definen un método getxxx para recuperar el valor de cada propiedad Disponen de un constructor que recibe las propiedades como parámetros Ej.: IncorrectTickerSymbolException Si la excepción sólo tiene una propiedad, la parte del fault será de tipo simple; en otro caso, será de tipo complejo La herencia de excepciones se mapea a herencia de tipos complejos

29 Mapping de Java a WSDL (7) Otros tipos Si se desean usar otros tipos para los que JAX-RPC no tiene soporte directo (ej.: implementaciones de java.util.collection), JAX-RPC permite implementar clases serializadoras y deserializadoras Serializador Convierte el valor de un tipo Java a XML Deserializador Convierte el valor de un tipo XML a Java Algunas implementaciones de JAX-RPC proporcionan serializadores/deserializadores para clases estándar usuales Ej.: Axis proporciona clases serializadoras/deserializadoras para algunas de las implementaciones de java.util.collection

30 Mapping de Java a WSDL (y 8) Interoperabilidad El uso de clases serializadoras/deserializadoras puede causar problemas de interoperabilidad Actualmente no hay un formato estándar para transmitir listas, mapas, etc. Para máxima interoperabilidad es mejor restringirse a los tipos directamente soportados Con el uso de arrays ([]) y tipos valor JAX-RPC se pueden representar estructuras complejas, que se mapean de forma estándar a tipos WSDL Esta es la técnica usada en todos los ejemplos

31 Mapping de WSDL a Java (1) Las reglas del mapping de Java a WSDL a la inversa xsd:datetime se mapea a java.util.calendar (y no a java.util.date) Los structs XML (con compositor all o sequence) se mapean a una clase Java con métodos getxxx/setxxx para cada campo del struct Además, necesitamos saber Cómo se traducen las enumeraciones? Cómo se traducen los parámetros out e inout? Si partimos de los interfaces remotos Java, estas dos preguntas no son relevantes (porque Java no soporta directamente estos dos conceptos), pero sí lo son si partimos de la definición WSDL También necesitamos conocer algunas clases generadas que son específicas al cliente o al servidor Las estudiamos como parte del modelo de implementación de clientes y servidores

32 Mapping de WSDL a Java (2) Enumeraciones Muy parecido a CORBA // WSDL <simpletype name= EyeColor > <restriction base= xsd:string > <enumeration value= green /> <enumeration value= blue /> </restriction> </simpletype>

33 Mapping de WSDL a Java (3) Enumeraciones (cont) // Java public class EyeColor { public static final String _green = green ; public static final String _blue = blue ; public static final EyeColor green = new EyeColor(_green); public static final EyeColor blue = new EyeColor(_blue); protected EyeColor(String value) {... } public String getvalue() {... } public static EyeColor fromvalue(string value) {... } public boolean equals(object obj) {... } public int hashcode() {... } // Otros métodos... }

34 Mapping de WSDL a Java (y 4) Parámetros out e inout Uso de clases Holder similares a las de CORBA Existen clases Holder para los tipos WSDL predefinidos en el paquete javax.xml.rpc.holders Ej.: FloatHolder Para los tipos definidos por el programador, el compilador de WSDL genera clases Holder con el formato final public class <XXX>Holder implements javax.xml.rpc.holders.holder { public <XXX> value; public <XXX>Holder() {... } public <XXX>Holder(<XXX> value) {... } }

35 Modelos de implementación de clientes Modelo basado en J2SE Cliente stand-alone Es el que usaremos en el ejemplo Modelo basado en J2EE El cliente corre dentro de un contenedor web (una aplicación web) o un contenedor de EJBs (un EJB)

36 es.udc.fbellas.corbaws.stockquote.client.client (1) package es.udc.fbellas.corbaws.stockquote.client; import javax.xml.rpc.stub; import es.udc.fbellas.corbaws.stockquote.wsdl.tradeprice; import es.udc.fbellas.corbaws.stockquote.wsdl.stockquoteprovider; import es.udc.fbellas.corbaws.stockquote.wsdl. StockQuoteProviderService; import es.udc.fbellas.corbaws.stockquote.wsdl. StockQuoteProviderServiceLocator; import es.udc.fbellas.corbaws.stockquote.wsdl. IncorrectTickerSymbolException; class Client { public static void main (String args[]) {

37 es.udc.fbellas.corbaws.stockquote.client.client (2) try { /* Check arguments. */ if (args.length < 1) { System.err.println("Usage: " + Client.class.getName() + " stockquoteproviderurl" + " [tickersymbol1 tickersymbol2...]"); System.exit(-1); } /* Get argument values. */ String stockquoteproviderurl = args[0]; String[] tickersymbols = new String[args.length-1]; for (int i=0; i<tickersymbols.length; i++) { tickersymbols[i] = args[i+1]; } /* Construct an instance of the port proxy. */ StockQuoteProviderService stockquoteproviderservice = new StockQuoteProviderServiceLocator(); StockQuoteProvider stockquoteprovider = stockquoteproviderservice.getstockquoteprovider(); ((Stub)stockQuoteProvider)._setProperty( Stub.ENDPOINT_ADDRESS_PROPERTY, stockquoteproviderurl);

38 es.udc.fbellas.corbaws.stockquote.client.client (y 3) /* Gest last trade prices. */ TradePrice[] tradeprices = stockquoteprovider.getlasttradeprices(tickersymbols); /* Print last trade prices. */ for (int i=0; i<tradeprices.length; i++) { System.out.println("Ticker symbol = " + tradeprices[i].gettickersymbol() + " " + "Price = " + tradeprices[i].getprice() + " " + "Elapsed seconds = " + tradeprices[i].getelapsedseconds()); } } catch (IncorrectTickerSymbolException e) { System.err.println("Incorrect ticker symbol: " + e.getincorrecttickersymbol()); } catch (Exception e) { e.printstacktrace(); } } }

39 Comentarios (1) StockQuoteProviderService Interfaz del servicio Generada por el compilador de WSDL a Java Su nombre coincide con el nombre del servicio declarado en el fichero WSDL Proporciona métodos get<porttype> Devuelven una instancia del stub/proxy del puerto De momento, en JAX-RPC sólo está estandarizado un método get sin parámetros por cada puerto En el caso de Axis, el proxy del puerto utiliza por defecto la URL declarada en el fichero WSDL El proxy implementa el interfaz del puerto (StockQuoteProvider en el ejemplo, generado por el compilador de WSDL a Java) y el interfaz javax.xml.rpc.stub El ejemplo utiliza el método _setproperty del interfaz javax.xml.rpc.stub para que se utilice la URL del puerto que se pasa como primer argumento de la aplicación

40 Comentarios (2) StockQuoteProviderServiceLocator Clase concreta generada por el compilador de WSDL a Java Es específica de Axis Implementa el interfaz StockQuoteProviderService Invocación StockQuoteClient.sh IBM SUN MIC

41 Comentarios (3) Clientes J2EE Un cliente J2EE (aplicación web o EJB) puede obtener una referencia al servicio de una manera estándar y obtener una instancia de un proxy de un puerto de una manera más sencilla Se usa JNDI (Java Naming and Directory Interface) API incluida en J2SE (javax.naming) Entre otras cosas, es un API que permite acceder a información de configuración y recursos externos Ejemplo: Context initialcontext = new InitialContext(); StockQuoteProviderService stockquoteproviderservice = (StockQuoteProviderService) initialcontext.lookup( "java:comp/env/service/stockquoteproviderservice"); StockQuoteProvider stockquoteprovider = stockquoteproviderservice.getstockquoteprovider();

42 Comentarios (y 4) Clientes J2EE (cont) Tienen que declarar en sus ficheros de configuración (web.xml o ejb-jar.xml) las referencias a los servicios web que usan <service-ref> <service-ref-name>service/stockquoteproviderservice </service-ref-name> <service-interface>es.udc.fbellas.corbaws.stockquote.wsdl. StockQuoteProviderService</service-interface> </service-ref> Las referencias se pueden localizar por JNDI en el contexto java:comp/env Se recomienda declarar las referencias a servicios web debajo del subcontexto service Requiere configuración específica en el contenedor web o EJB (ej.: especificar las URLs de contacto de los puertos)

43 Modelo de implementación de servicios (1) Modelo basado en contenedor web J2EE Es el modelo que estudiaremos SOAP/HTTP Internet SOAP/HTTP war Aplicaciones web (con Servicios Web) Cliente J2SE Contenedor web J2EE Contenedor web J2EE Servidor en el que se pueden instalar un conjunto de aplicaciones web J2EE Cada aplicación web (servlets, páginas JSP, páginas HTML, librerías, clases de la aplicación, etc.) se empaqueta en un fichero war Una aplicación web puede incluir uno o varios servicios web, o puede contener sólo servicios web Usaremos Jakarta Tomcat como contenedor web

44 Modelo de implementación de servicios (y 2) Modelo basado en contenedor de EJBs El servicio web se implementa como un Stateless Sesion Bean, cuya interfaz remota es la del servicio web

45 Modelo basado en contenedor web (1) Requisitos de la clase de implementación Implementa el interfaz remoto Ofrece un constructor público sin argumentos Por defecto en Axis El nombre de la clase de implementación es XXXSoapBindingImpl, siendo XXX el nombre del interfaz remoto Ej.: StockQuoteProviderSoapBindingImpl El compilador de WSDL a Java genera la clase automáticamente (si no existía) en el paquete en el que se le especificó que generase el código es.udc.fbellas.corbaws.stockquote.wsdl en el ejemplo

46 Modelo basado en contenedor web (2) Modelo de ejecución La implementación de JAX-RPC tiene que incluir un servlet (o varios) que Recibe las peticiones SOAP sobre HTTP que envían los clientes Invoca la operación correspondiente sobre el servicio web NOTA A LA FIGURA: en Axis 1.3 el compilador de WSDL a Java no genera una clase Skeleton (el servlet utiliza clases genéricas que realizan esa misma función) Devuelve una respuesta SOAP sobre HTTP con el resultado de la operación Cliente SOAP/HTTP Servlet Skeleton Implementación del servicio Contenedor web

47 Modelo basado en contenedor web (3) Modelo de ejecución (cont) El servlet que recibe las peticiones puede crear una o varias instancias de la clase de implementación Todas las instancias se consideran equivalentes No pueden mantener estado específico para el cliente Una instancia puede recibir varias peticiones concurrentemente (en varios threads) Diferente a CORBA En CORBA, puede haber múltiples instancias que implementan un determinado interfaz, cada una con su propio estado Ej.: En los ejemplos TCS*, existen múltiples objetos Thermostat Cada objeto Thermostat representa un termostato real ubicado en una habitación

48 Modelo basado en contenedor web (4) Modelo de ejecución (cont) La clase de implementación tiene que ser thread-safe Normalmente no será necesario hacer nada especial, dado que la implementación de las operaciones generalmente sólo hace uso de variables locales (pila) o de variables globales (static) de sólo lectura (típicamente caches) Si modifica alguna estructura global (un atributo propio o alguna variable global), necesita sincronizar su acceso Sin embargo, en general, eso es mala idea, dado que una aplicación con estas características no funcionará en un entorno en cluster Para lograr escalabilidad y tolerancia a fallos, el servidor de aplicaciones web se puede replicar en varias máquinas En estos casos, es mejor usar una base de datos para las estructuras globales que sean de lectura/escritura

49 Modelo basado en contenedor web (y 5) Ciclo de vida La clase de implementación puede implementar opcionalmente el interfaz (del paquete javax.xml.rpc.server) public interface ServiceLifecycle { void init(object context) throws javax.xml.rpc.serviceexception; void destroy(); } Permite realizar tareas de inicialización y destrucción Cada vez que el servlet crea una instancia de la clase de implementación, tiene que invocar a init En el caso de un contenedor de aplicaciones web, el contexto pasado es de tipo javax.xml.rpc.server.servletendpointcontext, y proporciona métodos para acceder a aspectos tales como la sesión, el ServletContext, etc. Cada vez que el servlet decide destruir una instancia de la clase de implementación, tiene que invocar a destroy

50 es.udc.fbellas.corbaws.stockquote.wsdl.stockquoteprovidersoapbindingimpl (1) package es.udc.fbellas.corbaws.stockquote.wsdl; import javax.xml.rpc.server.servicelifecycle; import javax.xml.rpc.serviceexception; //... public class StockQuoteProviderSoapBindingImpl implements StockQuoteProvider, ServiceLifecycle { private Map tradeprices; public void init(object context) throws ServiceException { TradePrice ibmtradeprice = new TradePrice(); ibmtradeprice.settickersymbol("ibm"); ibmtradeprice.setprice(10.5); ibmtradeprice.setelapsedseconds(60*20); //... tradeprices = new HashMap(); tradeprices.put(ibmtradeprice.gettickersymbol(), ibmtradeprice); //... } public void destroy() {}

51 es.udc.fbellas.corbaws.stockquote.wsdl.stockquoteprovidersoapbindingimpl (y 2) public TradePrice[] getlasttradeprices(string[] tickersymbols) throws IncorrectTickerSymbolException { List requestedtradeprices = new ArrayList(); for (int i=0; i<tickersymbols.length; i++) { } TradePrice tradeprice = (TradePrice) tradeprices.get(tickersymbols[i]); if (tradeprice == null) { throw new IncorrectTickerSymbolException( tickersymbols[i]); } requestedtradeprices.add(tradeprice); } } return (TradePrice[]) requestedtradeprices.toarray( new TradePrice[0]);

52 Comentarios Por simplicidad, la clase de implementación mantiene los valores bursátiles en el atributo tradeprices Aunque haya invocaciones concurrentes a getlasttraceprices sobre la misma instancia de la clase de implementación, sólo usan este atributo para lectura Aunque haya varias instancias de la clase de implementación en el mismo contenedor o el contenedor esté replicado, el valor de tradeprices es el mismo en todas las instancias El interfaz remoto no expone ninguna operación de modificación En un caso real No existiría el atributo tradeprices, sino que se usaría una BD para almacenar los valores bursátiles getlasttradeprices y las posibles operaciones de escritura leerían y/o escribirían en la BD A la BD se puede acceder concurrentemente de manera segura (para lectura y/o escritura)

53 Empaquetamiento de aplicaciones web (1) En J2EE, las aplicaciones web se empaquetan en ficheros war En particular, una aplicación web puede incluir servicios web jar cvf aplicacionweb.war directorio Opciones similares al comando Unix tar Ant incluye la tarea interna war Estructura de un fichero war Directorio WEB-INF/classes Ficheros.class que conforman la aplicación web, agrupados en directorios según su estructura en paquetes Sin ficheros fuente! Directorio WEB-INF/lib Ficheros jar de librerías que usa la aplicación Sin ficheros fuente!

54 Empaquetamiento de aplicaciones web (y 2) Estructura de un fichero war (cont) WEB-INF/web.xml Configuración estándar de la aplicación web Directorio raíz y subdirectorios Vista de la aplicación (ej.: ficheros HTML, páginas JSP, imágenes, etc.) Visible a los navegadores Lo que hay debajo de WEB-INF sólo es visible a los servlets y páginas JSP de la aplicación Un fichero war se puede instalar (deployment) en cualquier servidor de aplicaciones web conforme a J2EE

55 jar tvf StockQuote.war WEB-INF/lib/<< librerías Apache Axis >> WEB-INF/classes/es/udc/fbellas/corbaws/stockquote/wsdl/ StockQuoteProvider.class WEB-INF/classes/es/udc/fbellas/corbaws/stockquote/wsdl/ IncorrectTickerSymbolException.class WEB-INF/classes/es/udc/fbellas/corbaws/stockquote/wsdl/ TradePrice.class WEB-INF/classes/es/udc/fbellas/corbaws/stockquote/wsdl/ StockQuoteProviderService.class WEB-INF/classes/es/udc/fbellas/corbaws/stockquote/wsdl/ StockQuoteProviderServiceLocator.class WEB-INF/classes/es/udc/fbellas/corbaws/stockquote/wsdl/ StockQuoteProviderSoapBindingStub.class WEB-INF/classes/es/udc/fbellas/corbaws/stockquote/wsdl /StockQuoteProviderSoapBindingImpl.class WEB-INF/web.xml

56 Comentarios WEB-INF/lib Incluye las librerías (ficheros.jar) necesarias de Apache Axis WEB-INF/classes Contiene las clases del paquete es.udc.fbellas.corbaws.stockquote.wsdl Definición del servicio web e implementación En el ejemplo, por sencillez, se han incluido algunas que no son necesarias para la implementación del servicio (ej.: el stub)

57 web.xml (1) <?xml version="1.0" encoding="iso "?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" " <web-app> <display-name>apache-axis</display-name> <servlet> <servlet-name>axisservlet</servlet-name> <display-name>apache-axis Servlet</display-name> <servlet-class> org.apache.axis.transport.http.axisservlet </servlet-class> </servlet>

58 web.xml (y 2) <servlet> <servlet-name>adminservlet</servlet-name> <display-name>axis Admin Servlet</display-name> <servlet-class> org.apache.axis.transport.http.adminservlet </servlet-class> <load-on-startup>100</load-on-startup> </servlet> <servlet-mapping> <servlet-name>axisservlet</servlet-name> <url-pattern>/servlet/axisservlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>axisservlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>adminservlet</servlet-name> <url-pattern>/servlet/adminservlet</url-pattern> </servlet-mapping> </web-app>

59 Comentarios (1) Se declaran los servlets AxisServlet y AdminServlet Forman parte de las librerías de Axis (WEB-INF/lib) AxisServlet El servidor de aplicaciones web le pasará todas las peticiones dirigidas a las URLs <servlet-mapping> <servlet-name>axisservlet</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> En este caso, asumiendo que instalemos la aplicación web con el nombre StockQuote, el cliente usará la URL vider para acceder al puerto StockQuoteProvider (es la URL que aparece en el documento WSDL)

60 Comentarios (y 2) AxisServlet (cont) El servlet invocará la operación correspondiente sobre el service endpoint al que va dirigida la petición, y finalmente enviará una respuesta SOAP con el resultado de la operación AdminServlet Permite realizar tareas de administración sobre los servicios web instalados (ej.: activarlos, desactivarlos, etc.) Axis proporciona una aplicación standalone para comunicarse con este servlet Especificación JSR-109 Define un conjunto de descriptores (ficheros XML) adicionales para realizar poder instalar y configurar de manera estándar una aplicación web que contenga servicios web en un contenedor de aplicaciones web o EJB que tenga soporte nativo para servicios web El ejemplo estudiado asume Axis y no requiere que el servidor de aplicaciones web tenga soporte nativo para servicios web (ej.: Tomcat) Actualmente son complejos (seguramente se simplificarán y serán transparentes al desarrollador en un futuro)

61 TCPMonitor (1) Axis incluye una herramienta que permite monitorizar las peticiones y respuestas SOAP que envían clientes y servidores Actúa como un túnel Recibe las peticiones del cliente, las muestra en pantalla y las redirige al service endpoint Recibe las respuestas del service endpoint, las muestra en pantalla y se las envía al cliente

62 TCPMonitor (2) StockQuoteClient.sh IBM SUN MIC 4: Respuesta SOAP 1: Petición SOAP 2: Petición SOAP TCPMonitor.sh 8000 localhost 8080 (escucha por el puerto 8000 y redirige a localhost:8080) 3: Respuesta SOAP $TOMCAT_HOME/bin/startup.sh (por defecto escucha por el puerto 8080)

63 TCPMonitor (y 3)

64 Comentarios El stub del cliente envía una petición SOAP para invocar la operación getlasttradeprices sobre el service endpoint StockQuoteProvider El parámetro de la operación (String[]) se ha serializado a XML AxisServlet recibe la petición SOAP Determina que el cliente desea invocar la operación getlasttradeprices sobre StockQuoteProvider Deserializa el parámetro de la operación Invoca la operación Serializa el valor de retorno (TradePrice[]) de la operación Envía una respuesta SOAP El stub recibe la respuesta SOAP Deserializa el valor de retorno

5.2 JAX-RPC. Caso de estudio: Apache Axis

5.2 JAX-RPC. Caso de estudio: Apache Axis 5.2 JAX-RPC. Caso de estudio: Apache Axis Introducción (1) JAX-RPC es el API estándar en Java para implementar e invocar operaciones de Servicios Web mediante el paradigma de los RPCs Proporciona compilador

Más detalles

Índice. Introducción a SOAP JAX-RPC

Índice. Introducción a SOAP JAX-RPC 3.4 JAX-RPC Índice Introducción a SOAP JAX-RPC SOAP (1) SOAP es un protocolo basado en XML para el intercambio de mensajes en un entorno distribuido Originalmente acrónimo de Simple Object Access Protocol

Más detalles

5.2 JAX-RPC. Caso de estudio: Apache Axis

5.2 JAX-RPC. Caso de estudio: Apache Axis 5.2 JAX-RPC. Caso de estudio: Apache Axis Introducción (1) WSDL Lenguaje (aplicación XML) para especificar interfaces remotos El compilador de WSDL permite generar los stubs y skeletons para poder invocar

Más detalles

Introducción WSDL SOAP::WSDL. Ejemplo. Conclusiones. wsdl2perl.pl

Introducción WSDL SOAP::WSDL. Ejemplo. Conclusiones. wsdl2perl.pl Introducción WSDL SOAP::WSDL wsdl2perl.pl Ejemplo Conclusiones WSDL describe la interfaz pública a los servicios Web. Qué puede hacer el servicio? Dónde reside? Cómo invocarlo? Elementos del documento:

Más detalles

Openbravo WebServices

Openbravo WebServices Openbravo WebServices External Point Of Sale 16 Agosto 2006 Revisión 1.1 Visit us at www.openbravo.com Tabla de Contenidos I.Introducción... 3 II.Definición del producto... 4 II.1Tipo Product... 4 II.2Tipo

Más detalles

Manual de Integración con la Plataforma SIR COD. SIR SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 24/05/2016

Manual de Integración con la Plataforma SIR COD. SIR SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 24/05/2016 MINISTERIO DE HACIENDA Y ADMINISTRACIONES PÚBLICAS SECRETARÍA DE ESTADO DE ADMINISTRACIONES PÚBLICAS Dirección de Tecnologías de la Información y las Comunicaciones Proyecto/Servicio Tipo de documento

Más detalles

Manual de Integración con la Plataforma SIR COD. SIR SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 30/08/2013

Manual de Integración con la Plataforma SIR COD. SIR SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 30/08/2013 MINISTERIO DE HACIENDA Y ADMINISTRACIONES PÚBLICAS SECRETARÍA DE ESTADO DE ADMINISTRACIONES PÚBLICAS DIRECCIÓN GENERAL DE MODERNIZACIÓN ADMINISTRATIVA, PROCEDIMIENTOS E IMPULSO DE LA ADMINISTRACIÓN ELECTRONICA

Más detalles

5.3 Diseño por capas con Servicios Web

5.3 Diseño por capas con Servicios Web 5.3 Diseño por capas con Servicios Web Diseño por capas Misma idea que en CORBA Interfaz de usuario (no WS) Capa de traducción y delegación (WS) Capa de traducción y delegación (WS) IDL Capa de lógica

Más detalles

Servicios Web: Concepto

Servicios Web: Concepto Servicios Web y RMI http://www.it.uc3m.es/pedmume/ Servicios Web: Concepto Uso más habitual de un servidor es dar una respuesta al usuario de una determinada página (PHP, ASP, J2EE ). Las páginas están

Más detalles

Índice. Introducción a SOAP JAX-WS

Índice. Introducción a SOAP JAX-WS 3.4 JAX-WS Índice Introducción a SOAP JAX-WS SOAP (1) SOAP es un protocolo basado en XML para el intercambio de mensajes en un entorno distribuido Originalmente acrónimo de Simple Object Access Protocol

Más detalles

RMI. Aplicaciones Distribuidas

RMI. Aplicaciones Distribuidas RMI Aplicaciones Distribuidas Contenido Objetos Distribuidos y RMI. Interface Remota. Clase Implementación. Referencias Remotas. Registro RMI. Paso de parámetros. Descarga dinámica de código. Desarrollo

Más detalles

Figura 161. Fragmento del método dopost en el servlet que recibe los datos del formulario mostrado en la Figura 160

Figura 161. Fragmento del método dopost en el servlet que recibe los datos del formulario mostrado en la Figura 160 ... HttpSession sesion=request.getsession(false); if (sesion!=null) { String BOTON=request.getParameter("BOTON"); Usuario usu=(usuario) sesion.getattribute("usuario"); Broker bd=(broker) sesion.getattribute("bd");

Más detalles

Manual Programador. Versión: 1.4.1

Manual Programador. Versión: 1.4.1 Manual Programador Documento elaborado por: GuadalTEL S.A. Versión: 1.4.1 Lugar y fecha: Sevilla, 28 de Noviembre de 2007 Contenido: 1 Objetivos... 3 2 Novedades... 4 2.1 Cambios en la API... 4 2.1.1 Modificación

Más detalles

Sistema de

Sistema de Sistema de Información @rchiva:. Sevilla, 23 de mayo de 2014 Unidad de Coordinación de @rchiva Presentación Título Nombre fichero Realizado @rchiva: Remisión de información desde sistemas externos para

Más detalles

Manual de Desarrollador Externo

Manual de Desarrollador Externo Manual de Desarrollador Externo Consulta de Estado de Upload Dte OI2004_ CEUPDTE _MDE_1.10 Oficina Internet Subdirección Informática Servicio Impuestos Internos Fecha: 08/11/2004 INDICE CONTROL DE VERSIONES...3

Más detalles

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; } PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)

Más detalles

Departamento de Informática Tributaria Subdirección General de Aplicaciones de Aduanas e II.EE. C/ Santa María Magdalena 16, Madrid

Departamento de Informática Tributaria Subdirección General de Aplicaciones de Aduanas e II.EE. C/ Santa María Magdalena 16, Madrid C/ Santa María Magdalena 16, 28016 Madrid Bandeja de Entrada Autor: S.G.A.A. Fecha: 24/03/2011 Versión: 0.4 Revisiones Edi. Rev. Fecha Descripción A(*) Páginas 0 1 02/02/2007 Versión inicial A Todas (*)

Más detalles

Consulta a Padrón Nivel 10

Consulta a Padrón Nivel 10 AFIP Consulta a Padrón Nivel 10 WSPN10 Manual para el desarrollador Versión 1.4 Historial de modificaciones Ver Fecha Edición Descripción 1.0 30-04-2006 DINTR Versión inicial del documento 1.1 28-04-2009

Más detalles

Web Service de Calidad de datos identificativos (consulta múltiple)

Web Service de Calidad de datos identificativos (consulta múltiple) Web Service de Calidad de datos identificativos (consulta múltiple) Autor: AEAT Fecha: 10/10/2017 Versión: 1.5 Revisiones Edi. Rev. Fecha Descripción A(*) Páginas 1 0 28/04/2017 Versión inicial A Todas

Más detalles

Manual Programador. Versión: 1.3.0

Manual Programador. Versión: 1.3.0 Manual Programador Documento elaborado por: Revisado por: Francisco José Cantero Villar Miguel J. Vázquez Rebollo Versión: 1.3.0 Lugar y fecha: Sevilla, 20 de Diciembre de 2006 Contenido: 1 Objetivos...

Más detalles

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +. APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje

Más detalles

Web Service de Calidad de datos identificativos (consulta múltiple)

Web Service de Calidad de datos identificativos (consulta múltiple) Web Service de Calidad de datos identificativos (consulta múltiple) Autor: AEAT Fecha: 23/06/2017 Versión: 1.3 Revisiones Edi. Rev. Fecha Descripción A(*) Páginas 1 0 28/04/2017 Versión inicial A Todas

Más detalles

Enterprise JavaBeans Sesión 1: Características básicas de EJB

Enterprise JavaBeans Sesión 1: Características básicas de EJB Especialista en Aplicaciones y Servicios Web con Java Enterprise Enterprise JavaBeans Sesión 1: Características básicas de EJB Enterprise JavaBeans 2003-2004 Depto. Ciencia Computación e IA Características

Más detalles

JAVA RMI: ESTRUCTURA INTERNA RMI

JAVA RMI: ESTRUCTURA INTERNA RMI Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas Desarrollo de Aplicaciones Distribuidas AUTORES: Alejandro Calderón Mateos Javier García Blas David Expósito Singh Laura Prada Camacho Departamento

Más detalles

1. Introducción. 1.1 Construcción de una aplicación CORBA

1. Introducción. 1.1 Construcción de una aplicación CORBA 1. Introducción 1.1 Construcción de una aplicación CORBA Toda aplicación CORBA empieza con la definición de las interfaces de los objetos que pueden distribuirse. Para ello se utiliza el lenguaje IDL.

Más detalles

Invocación de métodos remotos en Java: JAVA - RMI

Invocación de métodos remotos en Java: JAVA - RMI Diseño Y Aplicaciones de Sistemas Distribuidos Invocación de métodos remotos en Java: JAVA - RMI Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València

Más detalles

Sistema Integral Multicanal de Atención al Ciudadano

Sistema Integral Multicanal de Atención al Ciudadano Sistema Integral Multicanal de Atención al Ciudadano e-sirca-diseño- CONTRATO_INTEGRACION_WS_EELL_PASARELA _DE_PAGOS_v1_v001 Contrato de Integración para Servicio Web de la Pasarela de Pagos de EELL Versión

Más detalles

3.8 Patrón Default servant. Políticas del POA asociadas

3.8 Patrón Default servant. Políticas del POA asociadas 3.8 Patrón Default servant. Políticas del POA asociadas Introducción Cómo minimizar la cantidad de memoria que necesita un servidor para soportar un gran número de objetos? Servant por defecto => permite

Más detalles

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO

INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO INSTITUTO POLITECNICO NACIONAL ESCUELA SUPERIOR DE COMPUTO INTEGRANTES SANLUIS CASTILLO JOSE DAVID MATERIA WEB APPLICATIONS DEVELOPMENT PROFESOR CIFUENTES ALVAREZ ALEJANDRO SIGFRIDO. PRACTICA USO DE GET,

Más detalles

Se pueden observar varios tipos de contenedores de Servlets:

Se pueden observar varios tipos de contenedores de Servlets: 2.7.1. Introducción. Tomcat es un contenedor de Servlets con un entorno JSP. Un contenedor de Servlets es un shell de ejecución que maneja e invoca servlets por cuenta del usuario. Tomcat es el servidor

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Especificación Técnica del Web Service de Autorización y Autenticación WSAA Para el desarrollo de Clientes de Entidades Externas

Especificación Técnica del Web Service de Autorización y Autenticación WSAA Para el desarrollo de Clientes de Entidades Externas Servicio Nacional de Aduanas Subdirección de Informática Departamento de Sistemas Especificación Técnica del Web Service de Autorización y Autenticación WSAA Para el desarrollo de Clientes de Entidades

Más detalles

Web Service de Calidad de datos identificativos

Web Service de Calidad de datos identificativos Web Service de Calidad de datos identificativos Autor: AEAT Fecha: 27/11/2015 Versión: 1.0 Revisiones Edi. Rev. Fecha Descripción A(*) Páginas 1 0 27/11/2015 Versión inicial A Todas (*) Acción: A= Añadir;

Más detalles

Desarrollo de Sistemas Software Basados en Servicios y Componentes

Desarrollo de Sistemas Software Basados en Servicios y Componentes Desarrollo de Sistemas Software Basados en Servicios y Componentes Bloque Docente SERVICIOS WEB Parte 2 Portada Escuela Superior de Ingeniería (ESI) Universidad de Almería Índice Visualización WSDL (servicios

Más detalles

1 Descripción Contrato Mensajes de Respuesta Mensajes de Rechazo Mensajes de Aceptación... 10

1 Descripción Contrato Mensajes de Respuesta Mensajes de Rechazo Mensajes de Aceptación... 10 1 Tabla de Contenido 1 Descripción... 3 2 Contrato... 4 3 Mensajes de Respuesta... 9 Mensajes de Rechazo.... 9 Mensajes de Aceptación.... 10 4 Ejemplo de Implementación... 10 5 Capacidad de respuesta...

Más detalles

Tema VI. Servicios Web I. Introducción

Tema VI. Servicios Web I. Introducción Tema VI. Servicios Web I. Introducción Desarrollo de Aplicaciones para Internet Curso 12 13 Índice 1.Introducción 2.Llamada a Procedimientos Remotos (RPC) 3.Servicios Web i. Introducción ii. WSDL iii.soap

Más detalles

Object Oriented Middleware: Java RMI

Object Oriented Middleware: Java RMI Object Oriented Middleware: Java RMI LSUB GSYC 20 de abril de 2016 (cc) 2015 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento

Más detalles

Tema 3.1: Introducción a Servicios Web

Tema 3.1: Introducción a Servicios Web Tema 3.1: Introducción a Servicios Web Servicios Web (1) La Web proporciona un mecanismo de transporte universal, eficiente, robusto, escalable y probado tanto en aplicaciones inter-organización como intraorganización.

Más detalles

Consulta a Padrón Nivel 10

Consulta a Padrón Nivel 10 AFIP Consulta a Padrón Nivel 10 WSPN10 Manual para el desarrollador Versión 1.5 Historial de modificaciones Ver Fecha Edición Descripción 1.0 30-04-2006 DINTR Versión inicial del documento 1.1 28-04-2009

Más detalles

Las facturas en la Diputación Foral de Gipuzkoa

Las facturas en la Diputación Foral de Gipuzkoa Envío de facturas a la Diputación Foral de Gipuzkoa Las facturas en la Diputación Foral de Gipuzkoa La información contenida en este apartado es de aplicación exclusivamente a las facturas que envían sus

Más detalles

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Java RMI. Sistemas Distribuidos Rodrigo Santamaría + Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en

Más detalles

Sistemas de Operación 3

Sistemas de Operación 3 Sistemas de Operación 3 Los EJBs proporcionan un modelo de componentes distribuido estándar del lado del servidor. El objetivo de los EJBs es dotar al programador de un modelo que le permita abstraerse

Más detalles

Reutilización de software

Reutilización de software Reutilización de software A nivel de clase: Clases y algoritmos JGL A nivel de diseño Patrones de diseño A nivel de arquitectura Arquitectura J2EE 1 Aplicaciones Web Servidor Introducción a la arquitectura

Más detalles

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010)

Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Servlets Laboratorio de Aplicaciones Telemáticas (Curso 2009/2010) Jesús Arias Fisteus & Andrés Marín López {jaf, amarin}@it.uc3m.es Servlets p. 1 Introducción Servlet: Programa Java que se ejecuta en

Más detalles

Java RMI. Sistemas distribuidos

Java RMI. Sistemas distribuidos Java RMI Sistemas distribuidos Entornos orientados a objetos Tendencia actual hacia sistemas compuestos por un conjunto de objetos que interactúan entre sí. Un programa solicita servicios invocando los

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar

Más detalles

RMI. Ingeniería del Software II Curso 2009/2010.

RMI. Ingeniería del Software II Curso 2009/2010. RMI Ingeniería del Software II Curso 2009/2010 Sergio Ilarri Artigas Sergio Ilarri Artigas silarri@unizar.es Índice Introducción Stubs y Skeletons (rmic) Objetos Remotos y Objetos Serializables: Interfaz

Más detalles

3.2 Mapping de IDL a Java

3.2 Mapping de IDL a Java 3.2 Mapping de IDL a Java Tipos predefinidos (1) Tipo IDL short long long long unsigned short unsigned long unsigned long long float double long double Tipo Java short int long short int long float double

Más detalles

Master en Java Certificación para Programadores

Master en Java Certificación para Programadores Javmasdeb Master en Java Certificación para Programadores Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java Formación: Master Horas: 112 Introducción Java es un lenguaje de programación con el que

Más detalles

3.3 Casos de estudio

3.3 Casos de estudio 3.3 Casos de estudio Introducción Objetivo Estudiar casos de estudio que ilustren escenarios típicos de aplicación de XML Indicar las APIs apropiadas en cada caso Casos de estudio Configuración de aplicaciones

Más detalles

RMI de Java. Servicio RMI. O b j e t o OBJETO. Variables (estado) Interfaz + Implementación interfaz. Método_1. comportamiento. Método_2.

RMI de Java. Servicio RMI. O b j e t o OBJETO. Variables (estado) Interfaz + Implementación interfaz. Método_1. comportamiento. Método_2. La Comunicación Servicio RMI Interfaz + Implementación interfaz O b j e t o Variables (estado) Local Interfaz Local Visible solo en el proceso o thread que lo creó. (= MV) Método_1 Método_2 Método_3 OBJETO

Más detalles

Una aplicación sencilla con CORBA y Java

Una aplicación sencilla con CORBA y Java Una aplicación sencilla con CORBA y Java Sistemas Distribuidos: Programación con CORBA Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense Madrid Facultad de Informática,

Más detalles

Introducción a Web Services

Introducción a Web Services Introducción a Web Services Introducción internet Otros Java Organización A Organización B.Net Introducción Sistemas distribuidos procesamiento de la información está distribuido en dos o más computadoras

Más detalles

Tema 2: Programación en Red, RMI

Tema 2: Programación en Red, RMI Llamada a procedimientos remotos Tema 2: Programación en Red, RMI 1 2 Previo: Objetos e interfaces en JAVA Object 1 public class Client { private Client() { public static void main(string[] args) { Hello

Más detalles

Llamada a procedimientos remotos. Programación en Red, Tema 3: RMI

Llamada a procedimientos remotos. Programación en Red, Tema 3: RMI Tema 3: Programación en Red, RMI 1 Llamada a procedimientos remotos 2 Previo: Objetos e interfaces en JAVA Object 1 Object 2 Interface 1 Data m1 m2 m3 implementation { of methods public class Client {

Más detalles

JAVA RMI (REMOTE METHOD INVOCATION)

JAVA RMI (REMOTE METHOD INVOCATION) JAVA RMI (REMOTE METHOD INVOCATION) RMI RMI (Remote Method Invocation) Mecanismo RPC de Mecanismo mediante el cual los procesos cliente y servidor en una aplicación distribuida se comunican Una aplicación

Más detalles

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005 24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos

Más detalles

1. Introducción a los Servicios web

1. Introducción a los Servicios web 1. Introducción a los Servicios web Los servicios web son un tipo de middleware mediante el que pueden comunicarse aplicaciones remotas. En esencia, funciona como cualquier otro tipo de middleware (rmi,

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica

Más detalles

Servicios web con SOAP y Eclipse

Servicios web con SOAP y Eclipse PRÁCTICA 8 Servicios web con SOAP y Eclipse E l objetivo de esta práctica es invocar e implementar servicios web en Java desde el entorno Eclipse. La práctica está estructurada en tres partes según se

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

JAVA 1. Introducción

JAVA 1. Introducción Diseño de Interfaces de Usuario JAVA. Introducción. Características Portabilidad Interpretado (bytecodes) Uso de Máquina Virtual Java (JVM) Orientado a Objetos Jerarquía de clases Extensible (packages)

Más detalles

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá

Más detalles

El servicio de echo en Java-RMI

El servicio de echo en Java-RMI PRÁCTICA 3 El servicio de echo en Java-RMI E l objetivo de esta práctica es crear y ejecutar una aplicación cliente servidor echo basada en java-rmi. La práctica tiene dos partes: La primera parte implementa

Más detalles

Servicios web en SOAP

Servicios web en SOAP Servicios web en SOAP Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Servicios web Indice Conceptos básicos SOAP Estructura de SOAP SOAP y

Más detalles

Programación en Red, Tema 4: RMI. Llamada a procedimientos remotos. Automatización Ventas ebay. Llamada a procedimientos remotos. Server.

Programación en Red, Tema 4: RMI. Llamada a procedimientos remotos. Automatización Ventas ebay. Llamada a procedimientos remotos. Server. Tema 4: Programación en Red, RMI 22 Llamada a procedimientos remotos 24 Automatización Ventas ebay Envio(..), NuevaCompra(..),. Tienda Abierta 24*7 SOAP / RMI Actualiza(..), Comprador GET.. POST.. HTTP

Más detalles

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniBank con EJB

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniBank con EJB 5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniBank con EJB Introducción La arquitectura de la capa modelo de MiniBank es igual que la de MiniPortal Paquetes nuevos en la capa modelo

Más detalles

SERVLETS. Aplicaciones Distribuidas

SERVLETS. Aplicaciones Distribuidas SERVLETS Aplicaciones Distribuidas Contenido Definición. Framework Servlet. Ciclo de vida. Ejemplo. Procesamiento Petición. Generación de la Respuesta. Sesiones. Cookies. Colaboración entre servlets. Otros

Más detalles

Introducción n a Java EE: Servlets

Introducción n a Java EE: Servlets Introducción n a Java EE: Servlets Departamento de Lenguajes escuela técnica superior de ingeniería informática Versión original: Amador Durán y Ramón Medel marzo 2007 Tiempo: 1h Grupo de Ingeniería a

Más detalles

Manual de Integración con el Servicio Web de Registro COD. SIR Tipo de documento. Fecha de entrega 26/05/2014.

Manual de Integración con el Servicio Web de Registro COD. SIR Tipo de documento. Fecha de entrega 26/05/2014. MINISTERIO DE HACIENDA Y ADMINISTRACIONES PÚBLICAS SECRETARÍA DE ESTADO DE ADMINISTRACIONES PÚBLICAS Dirección Tecnologías la Información y las Comunicaciones Proyecto/Servicio Tipo documento Manual Integración

Más detalles

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI 5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI Contenidos Tutorial de Java RMI Caso de estudio: diseño e implementación de la capa modelo de MiniBank con Java RMI Arquitectura

Más detalles

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2 Tema 9 Llamada a métodos remotos (RMI). Departament d Informàtica. Índice 1. Introducción 2 1.1. Cómo funciona RMI?.......................................... 2 2. Usando RMI 4 2.1. Fase de desarrollo:

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

WEB SERVICE DEL REGIMEN DE PERCEPCION DE I.V.A (wsrgiva) Manual para el Desarrollador

WEB SERVICE DEL REGIMEN DE PERCEPCION DE I.V.A (wsrgiva) Manual para el Desarrollador WEB SERVICE DEL REGIMEN DE PERCEPCION DE I.V.A (wsrgiva) Manual para el Desarrollador Historial de Modificaciones Versión Fecha Descripción 0.1 28-04-2010 Versión Inicial del Documento. 0.2 22-09-2010

Más detalles

Manual de Integración con Directorio Común COD. SIR Tipo de documento. Fecha de entrega 29/05/2018. Versión actual

Manual de Integración con Directorio Común COD. SIR Tipo de documento. Fecha de entrega 29/05/2018. Versión actual SECRETARÍA DE ESTADO DE ADMINISTRACIONES PÚBLICAS MINISTERIO DE HACIENDA Y ADMINISTRACIONES PÚBLICAS Dirección de Tecnologías de la Información y las Comunicaciones Proyecto/Servicio Tipo de documento

Más detalles

APLICACIONES WEB J2EE - JSP

APLICACIONES WEB J2EE - JSP APLICACIONES WEB J2EE - JSP Objetivos Que el alumno pueda: Comprender la tecnología de los JSP Dar a conocer los principales tag de la biblioteca de JSP Brindar ejemplos concretos del uso de JSP 2 1 JAVA

Más detalles

Invocación remota de métodos. Jorge Iván Meza Martínez

Invocación remota de métodos. Jorge Iván Meza Martínez Invocación remota de métodos Jorge Iván Meza Martínez jimezam@gmail.com Especialización en Gestión de Redes de Datos Universidad Nacional de Colombia Sede Manizales 1/58 Contenidos Capas de middleware

Más detalles

JAVASERVER PAGES (JSP)

JAVASERVER PAGES (JSP) JAVASERVER PAGES (JSP) Introducción JSP es una extensión de la tecnología Java Servlets. Mientras que estos últimos tienen que mantener plantillas de código HTML dentro del programa, JSP contiene estas

Más detalles

Especificación Técnica del WebService de Autenticación y Autorización

Especificación Técnica del WebService de Autenticación y Autorización Especificación Técnica del WebService de Autenticación y Autorización Índice de contenido Introducción...3 Propósito...3 Descripción General del Servicio...3 Referencias...4 Invocación del WSAA...4 Sincronización

Más detalles

SERVICIO DE CONSULTA DE ESTADOS POR CÓDIGO DE CERTIFICADO

SERVICIO DE CONSULTA DE ESTADOS POR CÓDIGO DE CERTIFICADO SERVICIO DE CONSULTA DE ESTADOS POR CÓDIGO DE CERTIFICADO HISTÓRICO DE VERSIONES Fecha Versión Doc. Ref. Descripción Autor Revisado Aprobado 30/12/2011 1.0 DI_CONSULTA_ESTADOS_v1.0 Versión Inicial 08/10/2012

Más detalles

Curso JAVA EE 7 2016

Curso JAVA EE 7 2016 Curso JAVA EE 7 2016 Curso de Java EE 7 PC CARRIER 29 de marzo de 2016 Autor: Marc Revenga Esquinas Curso JAVA EE 7 2016 Curso de Java EE 7 Clase 1. Aplicaciones web Java EE. Configuración del servidor

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Software de Comunicaciones I.T.T. Especialidad Telemática Escuela Politécnica Superior Universidad Carlos III de Madrid

Software de Comunicaciones I.T.T. Especialidad Telemática Escuela Politécnica Superior Universidad Carlos III de Madrid Duración de los problemas: 1 hora 30 minutos. Duración total del examen: 2 horas 30 minutos. Software de Comunicaciones I.T.T. Especialidad Telemática Escuela Politécnica Superior Universidad Carlos III

Más detalles

MANUAL DE INTEGRACIÓN CON LA LIBRERÍA DE INTERCAMBIO SIR

MANUAL DE INTEGRACIÓN CON LA LIBRERÍA DE INTERCAMBIO SIR SECRETARÍA DE ESTADO DE FUNCIÓN PÚBLICA SECRETARÍA GENERAL DE ADMINISTRACIÓN DIGITAL MANUAL DE INTEGRACIÓN CON LA LIBRERÍA DE INTERCAMBIO SIR Enero 2018 Versión 1.0.2 Subdirección General de Impulso de

Más detalles

MANUAL DE INTEGRACIÓN CON LA LIBRERÍA DE INTERCAMBIO SIR

MANUAL DE INTEGRACIÓN CON LA LIBRERÍA DE INTERCAMBIO SIR SECRETARÍA DE ESTADO DE FUNCIÓN PÚBLICA SECRETARÍA GENERAL DE ADMINISTRACIÓN DIGITAL MANUAL DE INTEGRACIÓN CON LA LIBRERÍA DE INTERCAMBIO SIR Septiembre 2018 Versión 1.0.4 Subdirección General de Impulso

Más detalles

Examen Teórico Convocatoria de Junio de 2012

Examen Teórico Convocatoria de Junio de 2012 Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica

Más detalles

SOAP (Simple Object Access Protocol)

SOAP (Simple Object Access Protocol) SOAP SOAP (Simple Object Access Protocol) SOAP h"p://www.w3c.org/tr/soap Tres versiones:1.0,1.1y1.2. Estándar basado en XML para el intercambio de información entre aplicaciones en entornos descentralizados

Más detalles

APLICACIONES DE INTERNET: SOAP

APLICACIONES DE INTERNET: SOAP Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas Desarrollo de Aplicaciones Distribuidas AUTORES: Alejandro Calderón Mateos Javier García Blas David Expósito Singh Laura Prada Camacho Departamento

Más detalles

Implementación de clientes con CORBA y Java

Implementación de clientes con CORBA y Java Implementación de clientes con CORBA y Java Sistemas Distribuidos: Programación con CORBA Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense Madrid Facultad de Informática,

Más detalles

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Diseño de tipos Igualdad, representación, código, copia y relación de orden Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones

Más detalles

Consulta a Padrón Nivel 10

Consulta a Padrón Nivel 10 AFIP Consulta a Padrón Nivel 10 WSPN10 Manual para el desarrollador Versión 1.3 Historial de modificaciones Ver Fecha Edición Descripción 1.0 30-04-2006 DINTR Versión inicial del documento 1.1 28-04-2009

Más detalles

Servlets (I) Mario Muñoz Organero & Norberto Fernández Departamento de Ingeniería Telemática

Servlets (I) Mario Muñoz Organero & Norberto Fernández Departamento de Ingeniería Telemática Servlets (I) Mario Muñoz Organero & Norberto Fernández Departamento de Ingeniería Telemática http://www.it.uc3m.es/mario http://www.it.uc3m.es/berto Índice Introducción a los servlets de Java Qué es un

Más detalles

Interacción entre Aplicaciones: objetos distribuidos e invocación remota

Interacción entre Aplicaciones: objetos distribuidos e invocación remota Interacción entre Aplicaciones: objetos distribuidos e invocación remota En la anterior práctica se ha visto cómo extender la funcionalidad de un servidor web incorporando servlets que atienden peticiones

Más detalles

INFORMACION WEBSERVICE DEL SISTEMA DE TRÁNSITO, TRANSBORDO Y REDESTINACIÓN PARA EL SERVICIO NACIONAL DE ADUANAS

INFORMACION WEBSERVICE DEL SISTEMA DE TRÁNSITO, TRANSBORDO Y REDESTINACIÓN PARA EL SERVICIO NACIONAL DE ADUANAS INFORMACION WEBSERVICE DEL SISTEMA DE TRÁNSITO, TRANSBORDO Y REDESTINACIÓN PARA EL SERVICIO NACIONAL DE ADUANAS mayo de 2011 1 INDICE INDICE... 2 1 Introducción... 3 2 Estándares... 4 3 Definición del

Más detalles

Remote Method Invocation (RMI)

Remote Method Invocation (RMI) Remote Method Invocation (RMI) Metas La meta principal de los diseñadores de RMI fue la de permitir a los programadores el desarrollo de programas distribuidos en JAVA, usando la misma sintáxis y semántica

Más detalles