unidad de aprendizaje iii

31
INTRODUCCIÓN a) Presentación y contextualización El ADO.NET es un conjunto de componentes del software que pueden ser usados por los programadores para acceder a datos y a servicios de datos. Es una parte de la biblioteca de clases base que están incluidas en el Microsoft .NET Framework. Es comúnmente usado por los programadores para acceder y para modificar los datos almacenados en un Sistema Gestor de Bases de Datos Relacionales, aunque también puede ser usado para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolución de la tecnología ActiveX Data Objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido como un producto enteramente nuevo. La infraestructura de servicios Web XML se fundamenta en la comunicación por medio de mensajes basados en XML que cumplen con una descripción de servicio publicada. b) Competencia Conoce la importancia y describe la utilidad de Ado.net y los servicios Web XML. c) Capacidades 1. Define y explica el empleo adecuada aplicaciones multitarea. 2. Aplica los archivos de configuración. 3. Reconoce el entorno de publicación y transformación de documentos XML. 4. Conoce los beneficios y ventajas que brindan los servicios Web y XML d) Actitudes Muestra agrado por el uso y manejo de la tecnología. Posee voluntad e interés por satisfacer a sus clientes. Expresa habilidad y originalidad en su trabajo. Promueven el uso y manejo responsable de los programas. e) Presentación de Ideas básicas y contenido esenciales de la unidad: La Unidad de Aprendizaje 03: Ado.Net y Servicios Web XML, comprende el desarrollo de los siguientes temas: TEMA 01: Aplicaciones Multitarea.

Upload: francisco-jaimes-espinoza

Post on 02-Oct-2015

215 views

Category:

Documents


0 download

DESCRIPTION

DESARROLLO DE APLICACIONES

TRANSCRIPT

INTRODUCCINa)Presentacin y contextualizacin El ADO.NET es un conjunto de componentes del software que pueden ser usados por los programadores para acceder a datos y a servicios de datos. Es una parte de la biblioteca de clases base que estn incluidas en el Microsoft .NET Framework. Es comnmente usado por los programadores para acceder y para modificar los datos almacenados en un Sistema Gestor de Bases de Datos Relacionales, aunque tambin puede ser usado para acceder a datos en fuentes no relacionales. ADO.NET es a veces considerado como una evolucin de la tecnologa ActiveX Data Objects (ADO), pero fue cambiado tan extensivamente que puede ser concebido como un producto enteramente nuevo. La infraestructura de servicios Web XML se fundamenta en la comunicacin por medio de mensajes basados en XML que cumplen con una descripcin de servicio publicada. b)Competencia Conoce la importancia y describe la utilidad de Ado.net y los servicios Web XML. c)Capacidades 1.Define y explica el empleo adecuada aplicaciones multitarea. 2.Aplica los archivos de configuracin. 3.Reconoce el entorno de publicacin y transformacin de documentos XML. 4.Conoce los beneficios y ventajas que brindan los servicios Web y XML d) Actitudes Muestra agrado por el uso y manejo de la tecnologa. Posee voluntad e inters por satisfacer a sus clientes. Expresa habilidad y originalidad en su trabajo. Promueven el uso y manejo responsable de los programas. e)Presentacin de Ideas bsicas y contenido esenciales de la unidad: La Unidad de Aprendizaje 03: Ado.Net y Servicios Web XML, comprende el desarrollo de los siguientes temas: TEMA 01: Aplicaciones Multitarea. TEMA 02: Utilizacin de XML y archivos de configuracin. TEMA 03: Paginas activas de servidor. TEMA 04: Servicios Web XML. Tema 01: Aplicaciones MultitareaAPLICACIONES MULTI-HILO (C SHARP) Threads -- Programacin multihilo La programacin con hilos, tambin conocida como multiproceso, tiene la ventaja de poder trabajar de manera asncrona. Esto permite que aquellos procesos que pueden requerir un tiempo ms o menos largo en llevarse a cabo se pongan a trabajar 'paralelamente' al proceso principal, de manera que la aplicacin pueda retomar el control y as el usuario seguir trabajando con ella.

Nota1: la programacin multihilo no es siempre la solucin correcta para todas las aplicaciones e incluso en algunos casos puede relentizar la aplicacin aunque parezca que no es as o cosas an peores como prdida de datos, etc. Nota2: la implementacin que hace Mono de las clases del espacio de nombres System.Threading est basada en los pthreads (los hilos POSIX que tan bien implementados estn en Linux) y es fcil comprobar que el paso de trabajar con unos a trabajar con otros es casi inmediato. Una buena referencia es el libro "Programacin Linux al descubierto" de Kurt Wall, as como la propia pthreads.h.

Igualmente el recolector de basura que se usa hasta ahora en Mono (el GC de Bohem puede ser y debe ser compilado pasndole la opcin --enable-threads=pthreads Veamos los conceptos generales: Hilo: Un hilo de ejecucin es una unidad de procesamiento.

Multitarea: La ejecucin simultnea de varios hilos. La multitarea puede ser de dos tipos, uno de los cuales est bastante obsoleto y adems queda fuera de .NET de manera que no podremos usar los hilos de la mquina virtual en sistemas operativos que usen este clase primitiva de multitarea conocida como 'preferente'. El que vamos a usar nosotros es el tipo 'cooperativo'. La diferencia fundamental radica en que en el caso de la multitarea preferente el programador tiene que encargarse de liberar los hilos, etc, mientras que en la multitarea preferente el procesador asigna fracciones de tiempo de procesado a cada hilo y salta de hilo en hilo cada tiempo.

Nota: los hilos y la forma de trabajar con ellos tal y como lo vamos a hacer aqu no es algo propio de C# sino que es extensible a todo el Framework de .NET (i.e. a cualquier lenguaje en .NET). Si en algn momento se est tratando alguna caracterstica exclusiva de C#, se comentar explictamente. As, quin ya posea conocimientos de Threads en .NET puede saltarse el resto de este tema.

Nuestra receta para crear un hilo simple es como sigue: Metemos el espacio de nombres System.Theading en nuestra clase. Asignamos qu mtodo ejecutar el hilo, para ello usamos un delegado de tipo ThreadStart que encapsule el mtodo. Creamos el hilo pasndole al constructor el delegado anteriormente creado. Ponemos el hilo en ejecucin. Ya tenemos el procedimiento a seguir para crear una aplicacin multitarea elemental. Veamos el cdigo: // Incluid esto en un mtodo cualquiera que queris que lance el nuevo // hilo. Por ejemplo en un Main. De hecho podemos hacer que Main solo // haga eso!. // metodo es un mtodo que queremos poner en un hilo aparte. ThreadStart delegadoQueGuardaElMetodo = new ThreadStart (metodo); // creamos el hilo pasndole el delegado al constructor.

Thread nuevoHilo = new Thread (delegadoQueGuardaElMetodo); // Empezamos a ejecutar el hilo. nuevoHilo.Start (); Otra forma de instanciar un hilo es consiguiendo una referencia al hilo actual de ejecucin, esto se hace sin ms que llamar a la propiedad esttica Thread.CurrentThread. Thread t = Thread.CurrentThread;

Dejadme un segundo que muestre el equivalente en pthreads de este ejemplo sencillo para que comprobis por vosotros mismos los que he comentado antes de la similitud Threads/pthreads: #include #include ; #include ; void funcion(); int main (int argc, char *argv[]) { pthread_t pthrd1; /* declaramos el hilo */ intret; /* el valor de retorno para gestionar el /* estado de lacreacin del hilo */

ret = pthread_create (&pthrd1, NULL, (void *) funcion, NULL); if (ret) { perror ("No se pudo crear el primer hilo"); exit (EXIT_FAILURE); } pthread_join (pthrd1, NULL); exit (EXIT_SUCCESS); } void funcion () { /* Ponle lo que quieras hacer aqui */ }

Controlando el tiempo de vida del hilo Los mtodos fundamentales que se deben conocer si se quiere tener un control absoluto de los hilos en .NET son cinco: Thread.Sleep, Thread.Suspend, Thread.Resume, Thread.Interrupt y Thread.Abort. Es ms, para casi todas las aplicaciones que vayis a desarrollar, os bastar con conocer Thread.Sleep!.

Antes de ver cmo funcionan, presentmoslos: Thread.Sleep (int time) -- Para el hilo durante 'time' milisegudos. Thread.Interrupt -- Interrumpe el hilo parada para que vuelva a la ejecucin antes de que se acabe 'time'. Thread.Suspend -- El hilo se queda suspendido hasta que otro hilo lo llame con Thread.Resume. Thread.Resume -- Recupera un hilo suspendido. Thread.Abort -- Destruye un hilo. La utilizacin de esos mtodos es muy sencilla. Thread.Sleep acepta como parmetro el tiempo que se quiere que la hebra (o hilo, es lo mismo) permanezca dormida. Si le decimos Thread.Sleep (5000) se detendr durante cinco segundos o lo que es lo mismo, 5000ms. // ms codigo por aqu... // Llamada a Thread.Sleep para parar la hebra durante 3 segundos Thread.Sleep (3000); // seguimos poniendo cdigo... // mas codigo.....

Si el valor pasado es 0 la hebra devolver devolver el resto del timeslice que le quedaba. Si por el contrario se le pasa Timeout.Infinite, el hilo se nos para indefinidamente hasta que alguna otra hebra llame al metodo Interrupt de la hebra suspendida.

La diferencia fundamental entre Thread.Sleep y la otra manera de detener una hebra, llamando a Thread.Suspend, es que este ltimo puede ser invocado desde la hebra actual o desde otra. Adems, en caso de detener una hebra con Suspend, no podremos volver a ponerla en ejecucin hasta que no se haga desde otra con el mtodo Thread.Resume.

Nota: cuando se escriba este prrafo los mtodos Thread.Suspend y Thread.Resume estaban parcialmente implementados en Mono y cabe la posibilidad de que lo sigan estando cuando leis esto. Si ves que cdigo que los usa no funciona como debiera, los hilos no se suspenden cuando debieran, comprobad que no se lanz una excepcin del tipo NotImplementedException o ningn WARNING. Hace poco esos mtodos no hacan nada pero despus de intentar probar estos ejemplos aadimos esos avisos a la clase Thread). Por ltimo nos queda ver Thread.Abort.

Thread.Abort es un mtodo un tanto particular. En caso de ser llamado, el CLI (o CLR), aborta el hilo lanzando una excepcin ThreadAbortException que no puede ser recogida. El CLI no permite recoger esa excepcin y lo ms que podremos hacer, si queremos hacer un cleanup, ser llevar a cabo las medidas oportunas dentro de un bloque finally. Hay que tener en cuenta que mono no detendr la ejecucin del hilo inmediatamente. Se esperar alcanzar un punto seguro para hacer esto y ese punto lo escoger mono. Si queris que el hilo deje de ejecutarse inmediatamente, podis hacer una llamada a Thread.Join que siendo una llamada sncrona detendr el hilo hasta que se finalice la ejecucin.

Tema 02: Utilizacin de XML y Archivos de Configuracin QU ES UN SERVIVIO WEB XML? Lgica programable accesible por protocolos web estndares Permite a las aplicaciones enviar y recibir informacin a travs de internet Independiente de lenguaje, protocolo y plataforma Arquitectura sin estado Puede se asncrono basado en un estndar W3C en desarrollo

POR QU UTILIZAR LOS SERVIOS WEB XML?

ARCHIVO DE CONFIGURACIN EN XML Este da dar un breve ejemplo de cmo hacer un archivo de configuracin para alguna aplicacin que creemos en el entorno Visual Studio, y si dgito entorno debido que para hacer usar este excelente recurso se necesitan unas tres lneas de cdigo y todo lo dems en el entorno de Visual Studio. Muchos han escuchado hablar de la serializacion XML, es entretenida hacerla por cdigo pero hay muchos que por cuestin de tiempo no la han utilizado, pues para todos los que la quieren aprender de una forma fcil y que es 100% funcional en cualquier aplicacin en este post pondr la forma sencilla de realizarla.

PARA QU SIRVE UN ARCHIVO DE CONFIGURACIN? Un archivo de configuracin se puede realizar para muchas cosas que realmente le dan una funcionalidad muy poderosa a un programa, por ejemplo guardar el tipo de fuente establecido, el tipo de color establecido, un campo de texto en especfico. Los archivos de configuracin comunes en el entorno de Microsoft Office, es opciones, que es donde se elige el tipo de letra predeterminada, tipo de pgina, tipo de bordes entre otros.

Para realizar este ejemplo utilizar: Un formulario Windows Cinco Botones 2 Cajas De Texto 5 Label 1 Color Dialog 1 Font Dialog *El ejemplo esta realizado en Visual Basic 2005 Pasos: 1-Ir al men: Project->Propiedades Del Proyecto Luego busquen Settings: Explicando Los campos: Name: Aqu ira el nombre de la opcin. type: Aqu ira el tipo de variable a guardar. Scope: El alcance de la serializacion Value: El valor de la variable 2- Creamos 4 nuevos settings: 1- Name = ColorDeFondo Type = System.Drawing.Color Scope = User Value = El que deseen

2- Name = ColorDeTexto Type = System.Drawing.Color Scope = User Value = El que deseen

3- *Name = Firma Type = String Scope = User Value = Lo que deseen 4- Name = TipoDeLetra Type = System.Drawing.Font Scope = User Value = La que deseen

3- Dibujamos el formulario 4- Pegamos el Siguiente Cdigo Public Class frmMiniNotepad Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click, Label1.Click End Sub Private Sub btnColorFondo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColorFondo.Click 'Se selecciona el color que el usuario escogio Me.ColorDialog1.ShowDialog()

End Sub Private Sub btnColorTexto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnColorTexto.Click 'Se selecciona el color que el usuario escogio Me.ColorDialog1.ShowDialog() Me.btnColorTexto.BackColor = ColorDialog1.Color

End Sub Private Sub btnTipoDeLetra_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTipoDeLetra.Click 'Se selecciona el tipo de letra que el usuario escogio Me.FontDialog1.ShowDialog() Me.txtTipoDeLetra.Font = FontDialog1.Font

End Sub Private Sub btnNuevoDocumento_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNuevoDocumento.Click 'Se limpia el textbox Me.txtNotePad.Text = String.Empty 'Se crea el textbox con los datos del archivo de configuracio Me.txtNotePad.BackColor = My.MySettings.Default.ColorDeFondo Me.txtNotePad.Font = My.MySettings.Default.TipoDeLetra Me.txtNotePad.ForeColor = My.MySettings.Default.ColorDeLetra Me.txtNotePad.Text = " " & My.MySettings.Default.Firma

End Sub Private Sub frmMiniNotepad_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Se cargan los datos del archivo de configuracion XML Me.btnColorTexto.BackColor = My.MySettings.Default.ColorDeLetra Me.btnColorFondo.BackColor = My.MySettings.Default.ColorDeFondo Me.txtTipoDeLetra.Font = My.MySettings.Default.TipoDeLetra Me.txtFirma.Text = My.MySettings.Default.Firma

End Sub Private Sub btnGuardarDatos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGuardarDatos.Click 'Se pasan los datos al archivo de configuracion My.MySettings.Default.ColorDeLetra = Me.btnColorTexto.BackColor My.MySettings.Default.ColorDeFondo = Me.btnColorFondo.BackColor My.MySettings.Default.TipoDeLetra = Me.txtTipoDeLetra.Font My.MySettings.Default.Firma = Me.txtFirma.Text 'En este punto del codigo se guarda la configuracion My.MySettings.Default.Save() End Sub End Class

Al final El funcionamiento ser el siguiente: Tema 03: Pginas Activas de ServidorENTORNOS DE TRANSCODIFICACIN: COCOON De qu estamos hablando: Cocoon es un entorno de publicacin y transformacin de documentos XML basado en Java. Cocoon funciona como un servlet, o sea, que en principio, se podr ejecutar desde cualquier servidor que pueda contener servlets, tales como el Apache, que es el mejor con diferencia, el Internet Informacin Server, o, incluso, si me apuris, el Roxen, aunque no he odo a nadie que haya conseguido hacer funcionar Cocoon con Roxen. Los servlets son hebras en Java, que se ejecutan en el mismo contexto que el servidor; por lo tanto, es ms rpido de ejecutar que otros mtodos tales como los CGIs; y adems, son persistentes, o sea que no hace falta cargarlos. Para ms informacin, se puede mirar la FAQ de los servlets.

El nombre de Cocoon viene de la pelcula, y se le ocurri al autor inicial de Cocoon, Stefano Mazocchi, porque precisamente despus de ver dicha pelcula decidi hacer un entorno de publicacin basado en XML, cuando casi nadie tena todava claro qu era eso del XML. Por eso ha tenido tanto xito, y hoy en da es uno de los ms completos. La versin actual, en febrero de 2001, es la 1.8.2, con ligeras modificaciones con respecto a la 1.8 y algunos bugfixes respecto a la 1.8.1. Ya hay alfas de la siguiente versin, la 2.0, que permitir transformaciones ms completas a partir de los URL, e incorporar los ltimos estndares.

Cocoon incluye lo siguiente: XML: Se pueden servir pginas XML, tal cual, para navegadores que entiedan XML, tales como las ltimas versiones del Netscape o el IE. Cocoon comprobar de que se trate de cdigo XML bien formado, usando el parser Xerces.

XSLT: las transformaciones a documentos XML las puede aplicar directamente el servidor, resultando un documento XML que se enva al cliente. Tambin se pueden aplicar transformaciones XSLT en cascada. Para ello usa el procesador Xalan. FO: mediante el mdulo FOP, se pueden aplicar transformaciones a DTD finales, tales como PDF, pudindose servir documentos que no sean XML. XSP, XML Server Pages, o pginas de servidor en XML, tecnologa equivalente a las ASP o JSP (Java Server Pages); son pginas "activas" que incluyen cdigo Java (o de cualquier otro lenguaje que se pueda interpretar dentro del Bean Scripting Framework). Otras tecnologas: desde la versin 1.8, incluye un "pool de conexiones" a base de datos, que permite reutilizar un conjunto de conexiones a la base de datos, en vez de tener que abrir y cerrar conexiones cada vez que se hace una peticin al servidor. Tambin detecta el cliente, y puede servir diferentes contenidos dependiendo de l.

El procesamiento que lleva a cabo Cocoon se hace en tres fases: La creacin de contenidos XML la hace el usuario. El procesamiento del fichero XML lo lleva a cabo cocoon, incluyendo la lgica incluida (si se trata de un XSP). La lgica est totalmente separada del contenido. Finalmente, se crea el documento aplicando las hojas de estilo, y se formatea al tipo requerido: HTML, WML, PDF, lo que encarte.

Internamente, Cocoon procesa las peticiones de la forma siguiente: Segn llega la peticin, se rodea del contexto en el que se ha hecho; la peticin debe indicar el cliente que ha hecho la peticin, qu URI necesita y qu productor debera manejar la peticin. El productor maneja el URI solicitado, y produce un documento XML; los productores funcionan como subservlets, y en principio, se puede enchufar cualquier productor. Los productores producen un documento que se enva al reactor. El reactor evala qu procesador debera aplicarse al documento a partir de las etiquetas XML. Tambin lo enviar al formateador adecuado.

El formateador toma la representacin en memoria del documento XML, y lo pasa a un stream que pasa directamente al cliente. La salida depende del tipo MIME generado. Finalmente, se encapsula el documento junto con sus propiedades: longigud, tipo MIME, etctera. La mayora de los sitios Cocoon son sitios de produccin; hay una lista bastante completa en el sitio de Cocoon ; tambin hay una lista de proveedores comerciales con Cocoon. Nosotros lo usamos en el sitio de enseanzahttp://genmagic.ugr.es:8080 yde"produccin"en http://mercurio.ugr.es:8080.

Instalando el Tomcat El Tomcat es el contenedor de servlets que hemos elegido para insertar el cocoon; habr que instalarlo antes. Para empezar, hay que bajrselo. Te lo puedes bajar de dos sitios, principalmente: Contenido de esta seccin Instalando Tomcat. Instalando Tomcat con Apache.

La pgina principal de Tomcat, donde estn los fuentes, y los "binarios" (es decir, los .jar de Java) ya dispuestos. Estos servirn para cualquier distribucin de Linux, e incluso para Windows. En RPMized, estn los paquetes RPM para RedHat. Hay varias versiones en danza de Tomcat (en febrero de 2001): la 3.1.1, la 3.2.1, la 3.3, que es la que est en desarrollo actual (y en el milestone 1), y la 4.0, que actualmente est en alfa. Nosotros usaremos en este tutorial la 3.2.1.

En realidad, instalar el Tomcat no puede ser ms fcil. Simplemente se descomprime (o se instala el RPM), se cambia uno al directorio de Tomcat, por ejemplo, /usr/local/jakarta-tomcat, y simplemente hay que indicarle dnde hemos metido la mquina virtual java. Se edita el ficherotomcat.sh y se insertan dos lneas tales como las siguientes: A partir de ahora, todas las instrucciones de instalacin sern para una mquina con el sistema operativo Linux, en concreto, la distro RedHat 7.0. Debera funcionar en todos los Linux, e incluso en todos los Unices. Si tienes la desgracia de tener alguna versin de Windows, mira en la pgina de instalacin original , que definen dos variables de entorno que indican dnde se puede encontrar el directorio raz del Tomcat y el de la JVM.

En Windows, se tendr que hacer algo similar. A partir de ese momento, ya se puede ejecutar bin/startup.sh para arrancar el servidor en el puerto 8080

y bin/shutdown.sh para pararlo. Al ejecutarlo, saldr algo as.

Adems, si usamos el url http://localhost:8080 debera salir la pgina de Tomcat. La configuracin de Tomcat est en los ficheros que cuelgan del directorio$TOMCAT_HOME/conf; el principal es el server.xml, que, casualmente, est escrito en XML.

Este fichero contiene toda la configuracin del servidor, y define los conectores, contextos, y, en general, toco lo que necesita un servidor. En principio, no hay que tocarla para nada, pero s ms adelante cuando decidamos instalar el Cocoon. Tal cual lo hemos instalado, ya podemos servir directamente pginas JSP, servlets, y, por supuesto, pginas HTML; el problema es que si queremos hacer algo fuera de eso, por ejemplo CGIs, o incluso si queremos tener un servidor "serio", gestionando varios dominios virtuales, con PHP, CGI y lo que se nos ocurra, necesitamos usar eso precisamente, un servidor serio, tal como el Apache, dentro del cual Tomcat se usar como contenedor de servlets. En ese caso, tenemos que instalar el mdulo mod_jk de Apache, para manejar la interaccin entre Apache y Tomcat.

Algo que s puede convenir tocar enserver.xml, sobre todo si no hay mucha memoria disponible, es el nmero de hebras disponibles para conexin. Por defecto, se lanzan hasta 50, lo cual puede chupar del orden de 600 megas de memoria (aunque usa memoria virtual). Para cambiarlo, hay que cambiar la configuracin de todos los Connector, cambiando el nmero de hebras que pueden usar Hay tres conectores; se puede cambiar el nmero de hebras de cualquiera de ellos, aunque yo no he conseguido bajar de 180 megas el consumo de memoria. Se pueden cambiar tambin los puertos que se van a usar, sobre todo si hay problemas de colisin con otros usuarios, o simplemente se quiere usar el puerto por defecto, que es el 80. Habr que modificar las lneas siguientes del ficheroserver.xml:

Y cambiar el valor por defecto, que es 8080, por el valor que se desee, tal como 18335 (mximo 65535). Igualmente se pueden cambiar los valores de los puertos de los otros tres conectores: el 8043, que es el que se usa en las conexiones SSL, y el del conector AJP12, que adems se usa para cerrar Tomcat. Tericamente, la instalacin de mod_jk es simple. Consiste en bajarse el mod_jk.so desde el sitio web, copiarlo a /directorio/de/apache/libexec/mod_jk.so, y hacer lo siguiente: Arrancar Tomcat, con lo cual se crea un fichero mod_jk.conf-auto. Modificar el fichero de configuracin del Apache, que nos tendremos ya instalado por otro lado, aadiendo lo siguiente: Include DIRECTORIO_TOMCAT/conf/mod_jk.conf-auto

En realidad, lo de instalar el mod_jk.so no es tan simple. El binario en el sitio de Tomcat slo sirve si tienes un Apache con SSL, que use el API llamado EAPI para conectarse con los mdulos. Si usas STDAPI, que es el normal, y que es el que viene en la distribucin por defecto, tendrs que compilar el mdulo t mismo. Bjate los fuentes de tomcat, te cambias al directorio:src/native/apache1.3 y haz un make -f Makefile.linux. Como es posible que eso no funcione, porque no te compila al final el .so, tendrs que aadir un gcc -shared -o mod_jk.so *.o. Si todava ests ms perdido que el barco del arroz, consulta en alguno de los grupos de noticias al efecto. Si tenemos ya un Apache funcionando, y queremos que sirva los servlets por otro puerto, tendremos que hacer una bsqueda y sustitucin de la cadena "80", que es el puerto por defecto, por "9000" o el puerto en el que queramos que escuche. Si queremos tener varios servidores Apache a la vez, tambin habr que modificar la ubicacin de los ficheros .log, .pid, .scoreboard y los ficheros de accesos y los de errores.

Arrancar Apache: /usr/local/apache/bin/httpd -f /usr/local/apache/conf/httpd-mio.conf donde habr que sustituir /usr/local/apache por el directorio adecuado. Si todo va bien, el URL http://localhost:9000/examplesdebera dar el directorio de ejemplos de Tomcat; y metindose en l, tendran que salir los ejemplos de servlets y JSPs de Tomcat. Como se suele decir, hay otros contenedores de servlets, pero no son Tomcat. Se puede encontrar un listado completo en servlets.com. Entre ellos, destacaEnhydra, otro servidor Open Source, y Jetty. Los dems suelen ser de pago, y adems, bastante caros. Por su popularidad, destacan Bea Weblogic y el IBM Trancoding Publisher. Con todos ellos se puede instalar Cocoon, siguiendo las instrucciones de la pgina web, o bien instalndolo como cualquier otro servlet.

EJERCICIOS 1 1.InstalarTomcat, usando el paquete especial para el curso en ~jmerelo/cursoxml-tomcat-cocoon.tgz. Descomprimirlo en el directorio propio, y lanzar el servidor de servlets, usando los puertos indicados por el profesor. El nmero mximo de hebras permitidas por conector sern 2.

2.Instalacin de Cocoon El siguiente paso es instalar Cocoon junto con Tomcat; en realidad, no hace falta Apache, porque Cocoon es simplemente un servlet con su propio contexto dentro de Tomcat. Despus de bajarnos el cocoon , en su distribucin binaria, lo descomprimimos en un directorio, por ejemplo, el /usr/local. Para que funcione con Tomcat, hay que aadir los .jar a los que coge Tomcat cuando arranca. Se hace lo siguiente ($TOMCAT_HOME es el directorio donde est Tomcat, y $COCOON_HOME donde est Cocoon):

Contenido de esta seccin Instalando Cocoon con Tomcat Instalando Cocoon con Tomcat y Apache. mkdir $TOMCAT_HOME/webapps/cocoonmkdir $TOMCAT_HOME/webapps/cocoon/WEB-INFcp $COCOON_HOME/bin/cocoon.jar $TOMCAT_HOME/libcp $COCOON_HOME/lib/*.jar $TOMCAT_HOME/libcp $COCOON_HOME/src/WEB-INF/web.xml $TOMCAT_HOME/webapps/cocoon/WEB-INFcp $COCOON_HOME/conf/cocoon.properties $TOMCAT_HOME/webapps/cocoon/WEB-INFcp -R $COCOON_HOME/samples $TOMCAT_HOME/webapps/cocoon/samples

A continuacin, hay que cambiar unos cuantos ficheros: En $TOMCAT_HOME/conf/server.xml, aadir la siguiente lnea. La estructura es bastante similar a la anterior, salvo que se declara el namespace util en vez del request; en cuanto a las peticiones, dan, por este orden, la hora con un formato determinado (y no se puede omitir la cadena de formato), incluyen un fichero externo, que debe ser XML, y adems te cuenta las veces que ha pedido la pgina. Esto ltimo es posible porque en realidad cada pgina XML se convierte en un servlet (lo cual puede dar lugar a mltiples problemas cuando se trata de recargar una pgina que uno ha modificado), y en realidad se contar mientras est ejecutndose el servidor. La salida que dar est en el servidor, pero en todo caso ser algo similar a esto.

Tema 04: Servicios Web XML VISTA GENERAL DE XML El cdigo HTML permite insertar mens, tablas, imgenes o bases de datos en los documentos, pero no permite al usuario que maneje esos elementos como mejor le convenga con la poderosa ayuda del ordenador. Esa es la principal novedad que XML aporta. Con HTML se pueden hacer accesos a informacin comparativa en diferentes tiendas por ejemplo, pero nada ms. Con XML el usuario podr ordenar los datos o actualizarlos en tiempo real o realizar un pedido.

La informacin que manejan las empresas es uno de sus principales activos. Pero lo normal es que esa informacin est fragmentada, en diferentes departamentos, ordenadores conectados o no, etc. El reto ahora est en interrelacionar toda esa informacin para rendir todo su potencial y ponerlo a trabajar para aumentar los beneficios o reducir los costes. Para realizar esto se necesita un estndar de almacenamiento estructurado que es lo que nos ofrece XML.

Una gran cantidad de gente ha odo hablar ltimamente de XML y mucha gente que es una especie de HTML pero ms avanzado. Pero todo el mundo lo que debera preguntarse es qu es exactamente XML y qu aplicaciones tiene actualmente. De estas dos cuestiones el mayor error que se suele cometer es considerar a XML un HTML extendido.

Lo que s tenemos ms o menos claro es que XML es un lenguaje de Marcas, pero qu es exactamente un lenguaje de marcas. Lenguajes de Marcas En los aos 60, IBM intent resolver sus problemas asociados al tratamiento de documentos en diferentes plataformas a travs de GML (Generalized markup Language.

El principal problema era que cada aplicacin utilizaba sus propias marcas para describir los diferentes elementos. Las marcas son cdigos que indican a un programa cmo debe tratar su contenido y as, si se desea que un texto aparezca con un formato determinado, dicho texto debe ir delimitado por la correspondiente marca que indique como debe ser mostrado en pantalla o impreso. Y lo mismo ocurre con todas las dems caractersticas de cualquier texto. Ejemplos pueden tenerlos en mente los usuarios de WordPerfect.

Conociendo este sistema y conociendo a la perfeccin el sistema de marcas de cada aplicacin sera posible pasar informacin de un sistema a otro sin necesidad de perder el formato indicado. La forma que IBM cre para solventar esto se basaba en tratar las marcas como texto accesible desde cualquier sistema, texto plano, cdigo ASCII. Y la norma se denomin GML (General Modeling Language.

Ms tarde GML pas a manos de ISO y se convirti en SGML ( ISO 8879), Standart Generalized Markup Language. Esta norma es la que se aplica desde entonces a todos los lenguajes de marcas, cuyos ejemplos ms conocidos son el HTML y el RTF. Los lenguajes de marcas no son equivalentes a los lenguajes de programacin aunque se definan igualmente como "lenguajes". Son sistemas complejos de descripcin de informacin, normalmente documentos, que si se ajustan a SGML, se pueden controlar desde cualquier editor ASCII. Las marcas ms utilizadas suelen describirse por textos descriptivos encerrados entre signos de "menor" (), siendo lo ms usual que existan una marca de principio y otra de final. Se puede decir que existen tres utilizaciones bsicas de los lenguajes de marcas: los que sirven principalmente para describir su contenido, los que sirven ms que nada para definir su formato y los que realizan las dos funciones indistintamente. Las aplicaciones de bases de datos son buenas referencias del primer sistema, los programas de tratamiento de textos son ejemplos tpicos del segundo tipo, y aunque no lo parezca, el HTML es la muestra ms conocida del tercer modelo.

Qu es XML? XML, es el estndar de Extensible Markup Language. XML no es ms que un conjunto de reglas para definir etiquetas semnticas que nos organizan un documento en diferentes partes. XML es un metalenguaje que define la sintaxis utilizada para definir otros lenguajes de etiquetas estructurados. En primer lugar para entenderlo bien hay que olvidarse un poco, slo un poco de HTML. En teora HTML es un subconjunto de XML especializado en presentacin de documentos para la Web, mientras que XML es un subconjunto de SGML especializado en la gestin de informacin para la Web. En la prctica XML contiene a HTML aunque no en su totalidad. La definicin de HTML contenido totalmente dentro de XML y por lo tanto que cumple a rajatabla la especificacin SGML es XHTML (Extensible, Hypertext Markup Language.

Desde su creacin, XML ha despertado encontradas pasiones, y como para cualquier tema en Internet, hay gente que desde el principio se deja iluminar por sus expectativas, mientras otras muchas lo han ignorado.

HISTORIA DE XML XML fue creado al amparo del Word Wide Web Consortium (W3C) organismo que vela por el desarrollo de WWW partiendo de las amplias especificaciones de SGML. Su desarrollo se comenz en 1996 y la primera versin sali a la luz el 10 de febrero de 1998. La primera definicin que apareci fue: Sistema para definir validar y compartir formatos de documentos en la web. Durante el ao 1998 XML tuvo un crecimiento exponencial, y con ello me refiero a sus apariciones en medios de comunicacin, menciones en pginas web, soporte software, etc.

Respecto a sus objetivos son: XML debe ser directamente utilizable sobre Internet. XML debe soportar una amplia variedad de aplicaciones. XML debe ser compatible con SGML. Debe ser fcil la escritura de programas que procesen documentos XML.

El nmero de caractersticas opcionales en XML debe ser absolutamente mnimo, idealmente cero. Los documentos XML deben ser legibles por humanos y razonablemente claros. El diseo de XML debe ser preparado rpidamente. El diseo de XML debe ser formal y conciso. Los documentos XML deben ser fcilmente creables. La concisin en las marcas XML es de mnima importancia. Esta especificacin, junto con los estndares asociados (Unicode e ISO/IEC 10646 para caracteres, Internet RFC 1766 para identificacin de lenguajes, ISO 639 para cdigos de nombres de lenguajes, e ISO 3166 para cdigos de nombres de pases), proporciona toda la informacin necesaria para entender la Versin 1.0 de XML y construir programas de computador que los procesen.

Principales caractersticas Es una arquitectura ms abierta y extensible. No se necesita versiones para que puedan funcionar en futuros navegadores. Los identificadores pueden crearse de manera simple y ser adaptados en el acto en internet/intranet por medio de un validador de documentos (parser. Mayor consistencia, homogeneidad y amplitud de los identificadores descriptivos del documento con XML (los RDF Resource Description FrameWork), en comparacin a los atributos de la etiqueta del HTML. Integracin de los datos de las fuentes ms dispares. Se podr hacer el intercambio de documentos entre las aplicaciones tanto en el propio PC como en una red local o extensa.

Datos compuestos de mltiples aplicaciones. La extensibilidad y flexibilidad de este lenguaje nos permitir agrupar una variedad amplia de aplicaciones, desde pginas web hasta bases de datos. Gestin y manipulacin de los datos desde el propio cliente web. Los motores de bsqueda devolvern respuestas ms adecuadas y precisas, ya que la codificacin del contenido web en XML consigue que la estructura de la informacin resulte ms accesible. Se desarrollarn de manera extensible las bsquedas personalizables y subjetivas para robots y agentes inteligentes. Tambin conllevar que los clientes web puedan ser ms autnomos para desarrollar tareas que actualmente se ejecutan en el servidor.

Se permitir un comportamiento ms estable y actualizable de las aplicaciones web, incluyendo enlaces bidireccionales y almacenados de forma externa (El famoso epgrafe "404 file not found" desaparecer). El concepto de "hipertexto" se desarrollar ampliamente (permitir denominacin independiente de la ubicacin, enlaces bidireccionales, enlaces que pueden especificarse y gestionarse desde fuera del documento, hiperenlaces mltiples, enlaces agrupados, atributos para los enlaces, etc. Creado a travs del Lenguaje de enlaces extensible (XLL). Exportabilidad a otros formatos de publicacin (papel, web, cd-rom, etc.). El documento maestro de la edicin electrnica podra ser un documento XML que se integrara en el formato deseado de manera directa.

Estructura del XML El metalenguaje XML consta de cuatro especificaciones (el propio XML sienta las bases sintcticas y el alcance de su implementacin): DTD (Document Type Definition) Definicin del tipo de documento. Es, en general, un archivo/s que encierra una definicin formal de un tipo de documento y , a la vez, especifica la estructura lgica de cada documento. Define tanto los elementos de una pgina como sus atributos. El DTD del XML es opcional. En tareas sencillas no es necesario construir una DTD, entonces se tratara de un documento "bien formado"(well-formed) y si lleva DTD ser un documento "validado" (valid).

XSL (eXtensible Stylesheet Language) Define o implementa el lenguaje de estilo de los documentos escritos para XML. Desde el verano de 1997 varias empresas informticas como Arbortext, Microsoft e Inso vienen trabajando en una propuesta de XSL (antes llamado "xml-style") que presentaron a W3C. Permite modificar el aspecto de un documento. Se puede lograr mltiple columnas, texto girado, orden de visualizacin de los datos de una tabla, mltiples tipos de letra con amplia variedad en los tamaos.

Este estndar est basado en el lenguaje de semntica y especificacin de estilo de documento (DSSSL, Document Style Semantics and Specification Language, ISO/IEC 10179) y, por otro lado, se considera ms potente que las hojas de estilo en cascada (CSS, Cascading Style Sheets), usado en un principio con el lenguaje DHTML. "Se espera que el CSS sea usado para visualizar simples estructuras de documentos XML (actualmente se ha conseguido mayor integracin en XML con el protocolo CSS2 (Cascading Style Sheets, level 2) ofreciendo nuevas formas de composicin y una ms rpida visualizacin) y, por otra parte, XSL pueda ser utilizado donde se requiera ms potencia de diseo como documentos XML que encierran datos estructurados (tablas, organigramas, etc.)

XLL (eXtensible Linking Language) Define el modo de enlace entre diferentes enlaces. Se considera que es un subconjunto de HyTime (Hipermedia/Timed-based structuring Language o Lenguaje de estructuracin hipermedia/basado en el tiempo, ISO 10744) y sigue algunas especificaciones del TEI (Text Encoding Initiative o Iniciativa de codificacin de texto). Desde marzo de 1998 el W3C trabajo en los enlaces y direccionamientos del XML. Provisionalmente se le renombr como Xlink y a partir de junio se le denomina XLL. Este lenguaje de enlaces extensible tiene dos importantes componentes: Xlink y el Xpointer. Va ms all de los enlaces simples que slo soporta el HTML. Se podr implementar con enlaces extendidos. Jon Bosak establece los siguientes mecanismos hipertextuales que soportar esta especificacin: Denominacin independiente de la ubicacin. Enlaces que pueden ser tambin bidirecccionales. Enlaces que pueden especificarse y gestionarse desde fuera del documento a los que se apliquen (Esto permitir crear en un entorno intranet/extranet un banco de datos de enlaces en los que se puede gestionar y actualizar automticamente. No habr ms errores del tipo "404 Not Found"). Hiperenlaces mltiples (anillos, mltiples ventanas, etc.). Enlaces agrupados (mltiples orgenes). Transclusin (el documento destino al que apunta el enlace aparece como parte integrante del documento orgen del enlace). Se pueden aplicar atributos a los enlaces (tipos de enlaces). XUA (XML User Agent): Estandarizacin de navegadores XML. Todava est en proceso de creacin de borradores de trabajo. Se aplicar a los navegadores para que compartan todas las especificaciones XML.

XML y Los Servicios Web Finalmente ahora que ya conocemos algo ms sobre XML no queda responde porque XML es utilizado en los servicios Web? Si recapitulamos todo los captulos anteriores seguro ya tendremos alguna pista para esta pregunta, pero para hacerlo ms prctico diremos que se utiliza XML porque:

Es un estndar abierto es decir que es reconocido mundialmente ya que muchas compaas tecnolgicas integran en sus software compatibilidad con dicho lenguaje. Esto quiere decir que la gran mayora de software de escritorio de sistema operativo, aplicaciones mviles permiten la compatibilidad con XML esto lo hace muy potente a la hora de permite la comunicacin entre distintas plataformas de software y hardware (y si bien recordamos este es el sentido final de los Servicios Web). Simplicidad de sintaxis esto quiere decir que es muy fcil de escribir cdigo en XML y la representacin de los datos es casi entendible por cualquier ser humano. Esto lo hace muy flexible a la hora de querer reprensar datos de cualquier especie, bastara con contar con cualquier editor de texto y aprende unas cuantas intrusiones bsicas y ya esta en condiciones de escribir cdigo XML el cual ser soportado o entendido por cualquier aplicacin que pueda leer documentos XML. El hecho de que XML sea tan fcil de codificar y de entender lo hace el lenguaje ideal para utilizarlo en los servicios Web. Independencia del protocolo de Transporte, el hecho de que XML es un lenguaje de Marcado de Texto, no necesita de ningn protocolo de trasporte especial, solo necesita de un protocolo que pueda trasferir texto o documentos simples. Esto nos trae a la memoria que en mercado existen muchos protocolos con estas caracterstica como lo son los ms conocidos en HTTP y SMTP por nombrar algunos. Volviendo la tema de los servicios Web una de las caracterstica de estos es la independencia del protocolo de trasporte.