Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Bases de Datos en Grid
Bases de Datos en Grid
Grid Computing
Prefacio
En los ltimos tiempos han habido importantes avances tecnolgicos tanto
en las reas de cmputo como en las de almacenamiento de datos; asimismo
los requerimientos de la administracin y de los negocios en la sociedad de la
informacin y el conocimiento, hacen necesario y conveniente estudiar tecnologas que nos permitan obtener informacin til del contenido de las bases de
datos, ms all de lo evidente, y mediante el uso de tecnologas y procedimientos innovadores, tales como la utilizacin de recursos distribuidos en diferentes
entornos y localizaciones geogrficas, lo que permite la optimizacin en el uso
de los mismos y la disminucin de los costos.
Todo lo sealado precedentemente sera ficticio sino se dispusiera de las
tecnologas y metodologas que facilitaran el desarrollo de trabajos complejos.
Este trabajo se basa en el estudio del software de base que permite la
construccin de un mini-grid distribuido, incluyendo una aplicacin Web y
Grid Services.
Contempla la obtecin de informacin referente a los alumnos de la Facultad de Ciencias Exactas, Naturales y Agrimensura, a efectos de brindar
utilidad a los usuarios pertenecientes en este caso a un sector de la facultad.
Objetivo
El ojetivo inicialmente fue la creacin una aplicacin utilitaria empleando
un software de Grid Computing para asistir a los usuarios en el anlisis automtico e inteligente de informacin, brindando de esta manera acceso a la
base de datos desde la Internet, en un entorno distribuido de computacin en
grilla.
El cumplimiento del objetivo propuesto signific el pormenorizado estudio
del software de Grid Computing sobre el sistema operativo Linux, el desarrollo
de servicios web donde alojar a la aplicacion desarrollada, y la puesta en
marcha del servicio grid que diera soporte al servicio web antes mencionado.
Clasificacin del Trabajo
Utilizacin de software de base que permite el desarrollo de aplicaciones
Web multiplataforma con acceso a bases de datos distribuidas, en un entorno
de servicios web y servicios grid.
Desarrollo de una aplicacin Web para el apoyo y seguimiernto de datos de
vi
vii
viii
ndice General
1 Introduccin
1.1 Concepto de Grid Computing . . . . . . . . . . .
1.1.1 Beneficios que Ofrece el Grid Computing
1.2 Introduccin a Grid Computing . . . . . . . . . .
1.3 Qu es y Para Qu Sirve el Grid Computing? .
1.4 Qu es GLOBUS? . . . . . . . . . . . . . . . . .
1.5 Arquitectura del Grid . . . . . . . . . . . . . . .
1.6 Aplicaciones y Servicios en Grid . . . . . . . . .
1.6.1 Supercomputacin . . . . . . . . . . . . .
1.6.2 Proceso Intensivo de Datos . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
y
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
. . .
Po. . .
1
1
1
2
4
7
8
11
11
12
15
15
15
17
18
19
20
21
22
23
24
25
25
26
28
28
29
NDICE GENERAL
2.11
2.12
2.13
2.14
2.15
2.16
2.17
2.18
2.19
2.20
2.21
2.22
2.23
2.24
2.25
2.26
2.27
2.28
2.29
2.30
3 Estndares Abiertos
3.1 Web Service: Servicios Web . . . . . .
3.2 Grid Service: Servicios Grid . . . . . .
3.3 Open Grid Service Architecture . . . .
3.4 Open Grid Services Infrastructure . .
3.5 Cules Son Los Objetivos de OGSA?
3.5.1 Arquitectura: . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
30
31
32
35
35
35
36
36
37
37
39
39
40
41
41
42
42
43
44
46
47
48
49
49
49
50
51
53
54
54
55
56
.
.
.
.
.
.
57
57
58
59
59
60
61
NDICE GENERAL
3.6
3.7
xi
Qu Plataformas? . . . . . . . . . . . . . . . . . . . . . . . . .
Conclusin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
73
4 La Enterprise Computing
75
4.1 Servicios y Computacin B2B . . . . . . . . . . . . . . . . . . . 77
4.2 Tecnologas en las Cuales se Define la OGSA . . . . . . . . . . 78
4.2.1 El Globus Toolkit . . . . . . . . . . . . . . . . . . . . . 78
4.2.2 Los Web Services . . . . . . . . . . . . . . . . . . . . . . 80
4.3 Una Arquitectura de Grid Services Abierta . . . . . . . . . . . 82
4.3.1 Virtualizacin y Orientacin de Servicio . . . . . . . . . 82
4.3.2 Semnticas de Servicio: el Grid Service . . . . . . . . . 85
4.3.3 El Rol de Ambientes Hosting . . . . . . . . . . . . . . . 89
4.3.4 Usar Mecanismos de OGSA Para Construir Estructuras
de VO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.4 Aplicacin Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . 93
5 Web Services y Grid Services
5.1 Web Services: Servicios Web . . . . . . . . . . . . .
5.1.1 Definicin y Caracterizacin de Web Services
5.2 Grid Services: Servicios Grid . . . . . . . . . . . . .
5.2.1 Servicio de Nombres (GSH y GSR) . . . . .
5.2.2 Servicio de Datos (Service Data) . . . . . . .
5.2.3 Notificaciones . . . . . . . . . . . . . . . . .
5.2.4 Ciclo de Vida . . . . . . . . . . . . . . . . .
5.2.5 Qu Ofrecen los Nuevos Grid Services . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6 Software Utilizado
6.1 Sistema Operativo Linux - Administracin Bsica . . . . . . . .
6.1.1 Introduccin . . . . . . . . . . . . . . . . . . . . . . . .
6.1.2 Qu es Linux? . . . . . . . . . . . . . . . . . . . . . . .
6.1.3 Por qu Linux? . . . . . . . . . . . . . . . . . . . . . .
6.1.4 Cmo es Licenciado Linux? . . . . . . . . . . . . . . .
6.1.5 De Dnde Vienen los Recursos para el Desarrollo de
Linux? . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.6 Caractersticas Principales . . . . . . . . . . . . . . . . .
6.1.7 Ventajas de Linux frente a otros S.O. . . . . . . . . . .
6.1.8 X Window . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.9 KDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Ejecucin de Programas . . . . . . . . . . . . . . . . . . . . . .
6.2.1 Ejecucin en el Fondo & , kill, nice y nohup . . . . . . .
97
97
97
99
100
101
102
103
104
107
107
107
108
109
109
110
111
113
114
114
128
128
xii
NDICE GENERAL
6.3
6.4
6.5
6.6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
128
129
129
131
133
144
144
144
150
156
160
162
162
174
174
179
180
183
186
7 Software de Base
201
7.1 Globus Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
7.1.1 Instalacin . . . . . . . . . . . . . . . . . . . . . . . . . 202
7.2 Simple CA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
8 Descripcin de la Aplicacin
8.1 Descripcin General . . . . . . . .
8.1.1 Creacin del Cliente Web .
8.1.2 Creacin del Servicio Grid .
8.1.3 Ejemplos del Cdigo Fuente
. .
. .
. .
del
. . . . .
. . . . .
. . . . .
Servicio
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
219
219
219
222
222
9 Conclusiones
231
9.1 Conclusiones Acerca del Software Utilizado . . . . . . . . . . . 231
NDICE GENERAL
xiii
Bibliografa
233
ndice de Materias
235
ndice de Figuras
1.1
1.2
1.3
1.4
1.5
1.6
3
5
7
10
13
13
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
Balanceo de Recursos. . . . . . . . . . .
Balanceo de Recursos. . . . . . . . . . .
Cofiabidad en los Sistemas de Grid. . . .
Administracin en los Sistemas de Grid.
Almacenamiento en el Grid. . . . . . . .
Trabajos y Aplicaciones del Grid. . . . .
Un Grid ms Simple. . . . . . . . . . . .
Un Intergrid ms Complejo. . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
22
23
24
27
30
34
34
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
La Arquitectura de OGSA. . . . . . . . . . . . . . . . . . .
La Estructura de OGSA. . . . . . . . . . . . . . . . . . . . .
Componentes de OGSI. . . . . . . . . . . . . . . . . . . . .
El OGSI y Web service. . . . . . . . . . . . . . . . . . . . .
El OGSI y el Hosting de Web service. . . . . . . . . . . . .
La Estructura de la Arquitectura de Servicio de OGSA. . .
Servicio de ncleo de Grid. . . . . . . . . . . . . . . . . . .
Ejecucin de Programas de Grid y Data Service. . . . . . .
La Ejecucin de Programas de Grid y Data Service Hosting.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
61
63
64
65
66
68
69
70
72
4.1
4.2
. .
y
. .
. .
79
4.3
xv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . .
Hosting
. . . . .
. . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . .
Simple
. . . .
. . . .
92
95
xvi
NDICE DE FIGURAS
5.1
Web Service. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1
6.2
6.3
6.4
6.5
6.6
7.1
7.2
7.3
Configuracin. . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
Compilacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Instalacin. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
8.1
8.2
9.1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
98
117
124
145
165
166
167
ndice de Tablas
6.1
6.2
6.3
6.4
6.5
6.6
Tipos de Variables. . . . . . . .
Categoras de Variables. . . . .
Tipos Primitivos de Variables. .
Operadores de Asignacin. . . .
Operadores Relacionales. . . . .
Precedencia de Operadores. . .
xvii
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
184
184
185
187
188
190
Captulo 1
Introduccin
1.1
1.1.1
CAPTULO 1. INTRODUCCIN
1.2
La idea del Grid est enfocada fundamentalmente en el acceso remoto a recursos computacionales y pretende ser un paradigma de desarrollo no centrado
en una tecnologa concreta [9].
La evolucin de grid computing se refleja en el avance de la estandarizacin
de esta tecnologa (el estndar de Globus Project es el estndar de facto)
donde se encuentra definida la arquitectura del grid, los niveles de acceso, los
requisitos, los servicios, etc.
El grid computing se enmarca dentro de la tecnologa de computacin distribuida englobando conceptos como sistemas operativos distribuidos, programacin multiprocesador, redes de ordenadores, computacin paralela, redes de
computadoras, seguridad, bases de datos, etc. De alguna manera el concepto
de grid computing da una unidad conceptual a estos problemas de manera que
todos ellos puedan verse desde una perspectiva grid.
El Grid Computing es ms que una idea ambiciosa, ya que no slo se trata
de compartir ciclos de CPU para realizar clculos complejos sino que se busca
la creacin de una infraestructura distribuida. Esta ardua tarea involucra
labores de definicin de la arquitectura general, de interconexin de diferentes
redes, de definicin de estndares, de desarrollo de procedimientos para la
construccin de aplicaciones, etc. [11].
El Grid es una idea que promete revolucionar el mundo de la computacin
y el cmo se desarrollan las aplicaciones actualmente [13].
Parece claro que Grid Computing no es una moda, y queda, todava, hay
un largo camino por recorrer desde los conceptos hasta las aplicaciones reales.
Aunque existen muchos mini-grids para el desarrollo de investigaciones no parece cercano el da en que todos los ordenadores del mundo formen un Grid
Mundial a modo de gigantesco sistema de distribucin elctrico (paradigma
del grid computing en casi todas las publicaciones sobre el tema), donde los
usuarios se conecten y tengan acceso a la capacidad de cmputo y de almacenamiento que precisen sin preocuparse de donde se genera (ver fig. 1.1 de la
pg. 3) [13].
CAPTULO 1. INTRODUCCIN
1.3
CAPTULO 1. INTRODUCCIN
1.4. QU ES GLOBUS?
1.4
Qu es GLOBUS?
CAPTULO 1. INTRODUCCIN
1.5
la compaa sin tener que invertir ms en adquirir capacidad extra de procesamiento. Es como colocar los procesadores existentes en la empresa en
el centro y enviarles a ellos los datos para procesar, esto permite que los
recursos se utilicen a medida que se necesiten.
Esta arquitectura se ha utilizado para resolver grandes problemas de computo, como procesar datos de investigaciones, simulaciones cientficas, procesamientos de datos estadsticos y simulaciones tcnicas, a diferencia del Grid
empresarial donde se ejecutan aplicaciones reales en tiempo real y se optimizan recursos informticos (es hacia donde est apuntando Oracle con Grid
Computing).
Las aplicaciones, los toolkits, las APIs, los SDK, etc. que se definen para la
computacin en Grid deben de cumplir una arquitectura general. Esta arquitectura general se articula en cinco niveles: la infraestructura, la conectividad,
la gestin del recurso, la gestin de varios recursos y el nivel de aplicacin, segn se muestra en la fig. 1.4 de la pg. 10.
Principalmente, la arquitectura propuesta es una arquitectura de protocolos que definen los mecanismos bsicos que permiten a los usuarios y a los
recursos negociar, establecer, gestionar y explotar la comparticin de recursos.
Una arquitectura abierta basada en un estndar facilita la extensibilidad, la
interoperatibilidad, la portabilidad y la comparticin de cdigo.
De esta manera la estandarizacin de los protocolos permitira estandarizar
los servicios y mejorar las capacidades del grid.
En el nivel de infraestructura se encuentran los recursos computacionales,
como son los ordenadores, los clusters, los supercomputadores, los sistemas de
almacenamiento en red, las bases de datos, etc. Tambin se incluyen en este
nivel la infraestructura de la red y sus mecanismos de gestin y control. En la
terminologa Grid la infraestructura se denomina la Fbrica y suministra los
componentes que sern compartidos.
El nivel de conectividad incluye los protocolos de comunicacin y seguridad que permiten a los recursos computacionales comunicarse. Entre estos
protocolos se encuentran: la pila de protocolos TCP/IP, el protocolo SSL, Certificados X.509. Tambin se incluyen los nuevos protocolos que se encuentran
en fase de estudio y que permitirn mejorar el rendimiento en las redes de alta
velocidad. La seguridad es un punto muy importante de la computacin en
grid por su propia naturaleza distribuida ya que se comparten recursos entre
distintas organizaciones que pueden tener distintas polticas de seguridad.
10
CAPTULO 1. INTRODUCCIN
11
maximizar el uso de los recursos, y, el planificador de la aplicacin que divide la aplicacin en tareas, asigna los recursos para su ejecucin y vigila el
desarrollo de los mismos.
Los dos primeros priman la eficiencia del sistema grid, mientras que el
tercero prima la eficiencia de la aplicacin.
El ltimo nivel, el de aplicacin, se centra en la definicin de protocolos que
permitan a las aplicaciones el acceso a la infraestructura del grid a travs de las
distintas capas. Segn el tipo de aplicacin puede ser necesario conectarse a
las distintas capas o acceder directamente a una de ellas, incluso directamente
a la infraestructura.
1.6
1.6.1
Supercomputacin
12
CAPTULO 1. INTRODUCCIN
1.6.2
13
14
CAPTULO 1. INTRODUCCIN
Reduccin de costes.
Facilidades de administracin.
La utilizacin de esta versin permitira a una empresa mejorar sus prestaciones sin renunciar al comportamiento tradicional de los Sistemas de Informacin .
Captulo 2
Cuando se despliega un Grid, se podr encontrar con un conjunto de requerimientos del cliente.
Para que las habilidades del Grid Computing se adapten mejor a esos
requerimientos, es til tener presente las razones para las que se usa el Grid
Computing.
A continuacin se describen las capacidades ms importantes del Grid
Computing.
2.2
16
17
datos ya estn all y no necesitan ser movidos a ese punto remoto. Esto ofrece
claros beneficios de calidad.
Tambin, tales copias de datos pueden usarse como backups cuando las
primeras copias se daan o no estn disponibles.
Otra funcin del Grid es equilibrar mejor la utilizacin del recurso.
Una organizacin puede tener picos inesperados ocasionales de actividad
que exigen ms recursos.
Si las aplicaciones en el Grid estn habilitadas, ellos pueden moverse a las
mquinas poco utilizadas durante tales picos.
De hecho, algunas aplicaciones del Grid pueden migrar los trabajos parcialmente terminados.
En general, un Grid puede proporcionar una manera consistente de equilibrar las cargas en una coalicin de recursos ms amplia.
Esto incluye la CPU, almacenamiento, y muchos otros tipos de recursos
que pueden estar disponibles un Grid.
La administracin puede usar un Grid para ver bien los modelos de uso en
una organizacin ms grande, permitiendo una mejor planificacin al actualizar los sistemas, incrementar la capacidad , o retirar recursos de computing
que ya no se necesitan.
2.3
18
2.4
Las Aplicaciones
19
dada.
Nuevas aplicaciones intensivas de computacin se estn diseando para la
ejecucin paralela y stas sern fcilmente habilitadas para su ejecucin en
Grid.
2.5
20
sos, como equipos, software, servicios, licencias, y otros. Estos recursos son
los virtualizados para darles una interoperabilidad ms uniforme entre los
participantes heterogneos del Grid.
Los participantes y usuarios de Grid pueden ser miembros de varias organizaciones reales y virtuales.
El Grid puede ayudar a potenciar las reglas de seguridad entre ellas e implementar polticas que puedan resolver prioridades para recursos y usuarios.
Como se observa en la fig. 2.1 de la pg. 20, donde se virtualizan recursos
heterogneos y geogrficamente dispersos para cada organizacin virtual que
presenta una vista ms simple.
2.6
2.7.
BALANCEO DE RECURSOS
21
2.7
Balanceo de Recursos
22
2.8
Confiabilidad
2.9. ADMINISTRACIN
23
As, si hay algn tipo de falla, no es probable que las otras partes del Grid
sean afectadas (ver fig. 2.3 en la pg. 23).
El software de gestin del Grid puede automticamente reenviar trabajos
a otras mquinas del Grid, cuando en una se descubre una falla.
En situaciones crticas de tiempo real, copias mltiples de trabajos importantes pueden ejecutarse en diferentes mquinas a travs del Grid.
2.9
Administracin
24
2.10
2.10.
2.10.1
25
2.10.2
Computacin
26
2.10.3
Almacenamiento
2.10.
27
28
2.10.4
Las Comunicaciones
2.10.5
El grid puede tener el software instalado que puede ser demasiado caro para
instalar en cada mquina de ste.
2.10.
29
Usando un Grid, los trabajos que requieren este software son enviados a
mquinas particulares en las cuales este software est instalado.
Cuando las tarifas de licencia son significantes, esta aproximacin puede
ahorrar gastos importantes para una organizacin.
Algn arreglo de licencia de software permite instalarlo en todas las mquinas de un grid pero puede limitar el nmero de instalaciones que pueden usarse
simultneamente en cualquier momento.
El sofware de administracin de licencias registra cuntas copias coexistentes de ste estn usndose y previene que se ejecute un nmero mayor en
un tiempo dado .
Los schedulers de trabajo de Grid pueden configurarse para tener en cuenta
las licencias de software, opcionalmente balancendolas contra otras prioridades o polticas.
2.10.6
Las plataformas en el Grid tendrn a menudo diferentes arquitecturas, sistemas operativos, dispositivos, capacidades, y equipos.
Cada uno de estos tems representa un tipo diferente de recurso que el Grid
puede usar con criterio para asignar trabajos a las mquinas.
Mientras algn software puede estar disponible en varias arquitecturas, por
ejemplo PowerPC y x86, tal software es a menudo diseado para ejecutar slo
un tipo particular de hardware y sistema operativo.Tales atributos deben ser
considerados al asignar recursos en el Grid.
En algunos casos, el administrador de un Grid puede crear un nuevo tipo
de recurso artificial que ser usado por el schedulers para asignar el trabajo
segn el tipo de poltica u otras restricciones. Por ejemplo, algunas mquinas
pueden disearse para slo ser usadas para investigacin mdica y otras para
slo participar en el Grid si no se usan para propsitos militares.
30
2.10.7
2.11.
2.11
31
32
2.12
Intragrid a Intergrid
33
Las mquinas que participan en el grid pueden incluir uno de los departamentos de la misma organizacin. Tal modelo de grid tambin ser llamado
Intragrid.
Cuando el Grid se extiende a muchos departamentos, las polticas pueden
requerirse para indicar cmo el Grid debe usarse. Por ejemplo puede haber
polticas, para qu tipos de trabajo permite el Grid y cuntas veces.
Puede haber tambin una priorizacin por departamento o por tipos de
aplicaciones que deben tener acceso a los recursos del Grid.
Los datos sensibles en un slo departamento pueden necesitar ser protegido
contra el acceso de trabajos que se ejecutan para otros departamentos.
Las mquinas del Grid especializadas pueden ser agregadas para aumentar
la calidad de servicio, en lugar de depender completamente de los recursos de
barrido.
El Grid puede crecer geogrficamente en una organizacin que tiene los
medios en diferentes ciudades.
Las conexiones de comunicaciones dedicadas pueden usarse entre estas facilidades y el Grid.
En algunos casos, VPN tunneling u otras tecnologas pueden usar Internet
para conectar las diferentes componentes de la organizacin. La seguridad
aumenta una vez que los lmites de cualquier facilidad se superan.
El Grid puede crecer para ser jerrquicamente organizado para reducir la
contencin implicada por el control central, aumentando la escalabilidad.
Un Grid puede crecer, cruzar los lmites de la organizacin y puede usarse
para colaborar en los proyectos de inters comn. Esto se conoce como un
Intergrid (como se ve en la fig. 2.8 de la pg. 2.8).
Habitualmente se requieren los niveles ms altos de seguridad en esta configuracin para prevenir posibles ataques y espionajes.
El Intragrid ofrece la posibilidad de comerciar recursos a un pblico ms
amplio.
34
2.13
35
2.14
2.14.1
Seguridad
36
2.14.2
Organizacin
2.15
2.15.1
37
Componentes de administracin:
2.15.2
Software Servidor
38
39
2.15.3
Software de Sumisin
Normalmente cualquier mquina miembro del Grid puede usarse para realizar
los trabajos e iniciar sus requerimientos.
Sin embargo, en algunos sistemas de Grid, esta funcin se lleva a cabo como un componente separado, instalado en nodos de sumisin o clientes de
sumisin. Cuando un Grid se construye usando recursos especializados en lugar de recursos scavenged el software de sumisin separado es normalmente
instalado en la estacin de trabajo.
2.15.4
40
2.15.5
Schedulers
La mayora de los sistemas de Grid incluyen alguna clase de software de programacin de trabajo.
Este software localiza una mquina en la cual ejecutar un trabajo de grid
que ha sido presentado por un usuario.
En los ms simples de los casos, puede asignar ciegamente los trabajos en
forma round-robin a la prxima mquina cumpliendo con los requerimientos
del recurso. Sin embargo hay ventajas al usar un scheduler ms avanzado.
Algunos schedulers llevan a cabo un sistema de prioridad de trabajo. Esto
a veces se hace usando varias colas de trabajo, cada uno con una prioridad
diferente. Cuando las mquinas del Grid estn disponibles para ejecutar los
trabajos, stos son tomados en orden de prioridad.
Varias clases de polticas son llevadas a cabo usando los programadores.
Las polticas pueden incluir los varios tipos de restricciones en los trabajos,
los usuarios, y recursos. Puede haber una poltica de que restrinja la ejecucin
de trabajos de Grid en ciertos momentos del da.
Los schedulers normalmente reaccionan a la carga inmediata del Grid.
Ellos usan la informacin de medida, sobre la utilizacin actual de mquinas
para determinar cules no estn ocupadas, antes realizar un trabajo.
Los schedulers pueden organizarse en una jerarqua.
Por ejemplo, un meta-scheduler puede enviar un trabajo a un scheduler
del cluster o a otros scheduler de menor nivel en lugar de a una mquina
individual.
Los schedulers ms avanzados supervisarn el progreso de trabajos programados conduciendo el flujo de trabajo global. Si los trabajos se pierden debido
al sistema o paros de la red, un buen scheduler reenviara automticamente el
trabajo a otra parte.
Sin embargo, si un trabajo parece estar en un loop infinito y alcanza una
interrupcin mxima, entonces no deberan reprogramarse tales trabajos.
Tpicamente, los trabajos tienen diferentes tipos de cdigos de realizacin,
algunos de los cules son convenientes para el reenvo y otros no.
41
2.15.6
Las Comunicaciones
2.16
Se mencion que los schedulers reaccionan ante las cargas actuales en el Grid.
Habitualmente, el software servidor incluir algunas herramientas que midan la carga actual y la actividad en una mquina dada usando, las facilidades
de un sistema operativo o por medicin directa.
Este software es a veces llamado sensor de carga.
Algunos sistemas de Grid proporcionan los medios para implementar sen-
42
2.17
2.17.1
43
2.18
Registrarse en el Grid
Para usar el Grid la mayora de los sistemas exigen al usuario que se registre
en un sistema usando el ID de usuario que se matricula en el Grid.
Otros sistemas de Grid pueden tener su propio login de Grid ID separado
del sistema operativo.
Un registro del Grid es usualmente ms conveniente para los usuarios de
Grid. Este elimina los problemas de conexin de ID entre las diferentes mquinas.
Tambin hace que el Grid se parezca ms a una gran computadora virtual
en lugar de una conjunto de mquinas individuales.
Por ejemplo, Globus lleva a cabo un modelo de login que mantiene al
usuario registrado por una cantidad especifica de tiempo, aun cuando l se
desconecta y vuelve al sistema operativo o cuando la mquina es reanudada.
Una vez registrado el usuario puede solicitar al Grid y realizar los trabajos.
44
2.19
45
46
2.20
Configuracin de Datos
Los datos obtenidos por los trabajos del Grid simplemente pueden organizarse
adentro y a fuera del sistema de Grid.
Sin embargo, dependiendo de su tamao y el nmero de trabajos, este puede potencialmente agregarse a una gran cantidad de trfico de los datos. Por
esta razn, algunas ideas se dan acerca de cmo obtener el mnimo movimiento
de los datos en el Grid.
Por ejemplo, si va a haber un nmero muy grande de sub-trabajos ejecutandose en la mayora los sistemas del Grid para una aplicacin que se
ejecutara repetidamente, los datos que ellos usan pueden copiarse para cada
mquina y residir hasta la prxima vez que se ejecute una aplicacin. Esto es
mejor que usar un sistema del archivo conectado a una red de computadoras
para compartir estos datos, porque en tal sistema de archivo, los datos seran
efectivamente movidos desde una ubicacin central cada vez que la aplicacin
se ejecute.
47
Esto es cierto a menos que el sistema de archivo lleve a cabo una exclusiva
copia o duplique los datos automticamente.
Hay muchas consideraciones en la planificacin eficiente de la distribucin
y compartimiento de datos en un Grid.
Este tipo de anlisis es necesario para grandes trabajos para as poder
utilizar bien el grid y no crear cuellos de botella innecesarios.
2.21
48
2.22
Reservar recursos
2.23
2.23.1
Planeacin
2.23.2
Instalacin
Primero, el sistema de Grid seleccionado debe instalarse un conjuntode mquinas apropiadamente configuradas. Estas mquinas usando redes con amplitud
suficiente para otras mquinas en el Grid.
Es importate entender los escenarios de fracaso para el sistema de Grid
dado, de manera que este continu operando aun cuando cualquiera de las
mquinas de direccin falle de alguna manera.
Las mquinas deben configurarse y conectarse para facilitar los escenarios
de recuperacin.
Cualquier base de datos crtica u otros datos esenciales para guardar la
muestra de los trabajos, los miembros del Grid, y las mquinas, stos deben
tener posibilidad de backups.
Adems, los certificados claves pblicos deben tener una copia de seguridad
y las claves privadas deben guardarse en un lugar seguro inaccesible por otros.
Despus de la instalacin, el software del Grid puede necesitar ser configurado para la direccin de la red local e IDs.
El administrador normalmente requerir el acceso base a las mquinas
conductoras en el grid.
En algunos sistemas de Grid, l necesitar tambin el acceso base a las
50
2.24
Una tarea contnua para el administrador del grid es dirigir a los miembros
del Grid, a las mquinas servidoras de recursos y los usuarios.
Los usuarios pueden organizarse como grupos de proyecto.
El administrador es responsable para controlar los derechos de los usuarios
en el Grid.
Las mquinas donantes pueden tener derechos de acceso que requieren
tambin la direccin.
La ejecucin de trabajos de Grid en las mquinas donantes puede hacerse
bajo un especial ID usuario de Grid a beneficio de los usuarios que realizan
los trabajos.
Los derechos de stos IDs de usuario de grid deben ser apropiadamente
puestos para que los trabajos no permitan el acceso a las partes de la mquina
donante en las cuales el usuario no esta registrado.
Cuando los usuarios se conectan al Grid, su identidad debe establecerse
positivamente y debe entrar en el certificado de autoridad.
51
2.25
Certificado de Autoridad
52
2.26.
ADMINISTRACIN DE RECURSOS
53
2.26
Administracin de Recursos
54
2.27
Compartir Datos
Para Grid pequeos, el compartir datos puede ser bastante fcil, usando los
sistemas de archivo existentes, conectados a una red de computadoras, a bases
de datos, o protocolos estndar de transferencia de datos. Cuando un Grid
crece y los usuarios se vuelven dependientes de cualquiera de los almacenes de
almacenamiento de datos, el administrador debe considerar los procedimientos
para mantener copias de seguridad y rplicas, para mejorar as la realizacion.
Todos lo que se refiere a la direccin de recursos se aplican a los datos en
el Grid.
2.28
2.29.
55
2.29
56
2.30
El Grid no es una bala color de plata que puede tomar cualquier aplicacin y
ejectarla mil veces ms rpido sin la necesidad de comprar ms mquinas o
software.
No toda aplicacin es conveniente o capas de ejecutarse un un Grid.
Algunos tipos de aplicaciones simplemente no pueden ser puestas en forma
paralela.
En otros casos, puede tomar una gran cantidad de trabajo para modificarlos y as lograr un movimiento ms rpido.
La configuracin de un Grid puede que afecte la calidad, fiabilidad, y
seguridad de una infraestructura de organizacin de computing.
Por todas estas razones, es importante entender cmo ha evolucionado el
Grid hoy y qu caractersticas tendr en un futuro distante.
Captulo 3
Estndares Abiertos
Para entender el rol desempeado por el Grid Toolbox de IBM, primeramente
se tienen que entender ciertos factores y discutir sobre algunos de los componentes fundamentales de los que el producto depende.
3.1
Un Web service puede ser usado para construir una aplicacin identificada
por una direccin Uniform Resource Locator : Localizador Uniforme de Recursos (URL). Las interfaces y enlaces de los Web services pueden ser definidas, descriptas y descubiertas por componentes Extensible Markup Language:
Lenguaje Extensible de Marcas (XML) y pueden soportar interacciones directas con otras aplicaciones de software usando mensajes basados en XML va
protocolos basados en Internet. En trminos simples, un Web service es una
aplicacin que se llama usando una direccin de Web, pasando los parmetros
en formato XML.
Al usar XML, el Web Services Description Language: Lenguaje de Descripcin de Servicios Web (WSDL) describe una red de servicios como una
coleccin de puntos finales que operan por medio de mensajes que contienen
informacin ya sea orientada al proceso u orientada al documento. Para definir un punto final, se describen abstractamente operaciones y mensajes y
posteriormente se limitan a un protocolo de red establecido.
Anlogamente los puntos finales descriptos son agrupados en puntos fina57
58
3.2
La tecnologa de los Grid service est basada en la Service Oriented Architecture: Arquitectura Orientada a Servicios (SOA) que define una arquitectura
donde una aplicacin se constituye de componentes independientes y cooperadores llamados servicios. Esos servicios construyen los bloques que utiliza
un modelo de objeto para crear sistemas distribuidos abiertos y habilitar a
las compaas e individuos para que creen rpidamente y en forma global sus
aplicaciones disponibles para la red. [1, Aguilar]
Los mecanismos adicionales para crear y administrar Servicios Grid son
habilitados al desarrollar un servicio nuevo que ser desplegado dentro de un
sistema OGSA. Esos mecanismos son:
Factory: Fbrica: Es una clase especial para crear dinmicamente instancias de Servicios Grid, cdigo de Servicios Grid ejecutables y esperar por
requerimientos.
Registry: Registro: Es la interfaz que habilita un conjunto de instancias de
Servicios Grid para registrar el Grid Service Handle: Manejador de Servicio
Grid (GSH ) dentro de un servicio de registro, que permita la identificacin de
servicios en ese conjunto.
Discovery: Descubrimiento: Es la interfaz que permite a los clientes del
Servicio Grid obtener informacin acerca de los servicios proporcionados.
Life cycle: Ciclo de vida: Se refiere a los estados de las instancias de
Servicios Grid entre su creacin y destruccin.
Service data: Datos del servicio: Es la coleccin estructurada de informacin que se asocia con una instancia de Servicios Grid.
Notification: Notificacin: Mecanismo por el cual una parte enva (origen
de notificacin) informacin de un cambio de estado a la parte (destino de
notificacin) que ha pedido ser notificada.
59
Reliable invocation: Invocacin fiable: Tcnicas que aseguran la fiabilidad de invocacin de mtodos en caso de que hayan sido creadas mltiples
instancias con Servicios Grid redundantes en el espacio.
Lo importante a tener en cuenta es que el nico contacto entre los Servicios
Grid y sus usuarios es la interfaz de servicios. Esas interfaces de servicios son
definidas por el Lenguaje de Descripcin de Servicios Web (WSDL) existente.
Varias mejoras a WSDL han sido identificadas para requerimientos de OGSI
y actualmente estn siendo agregadas al estndar WSDL.
3.3
3.4
El Foro Global de Grid promueve el desarrollo de estndares para la infraestructura de un Grid Computing.
OGSI se refiere a la infraestructura base sobre la cual se construye la
OGSA. En su ncleo se encuentran las especificaciones de Servicios Grid, que
definen la interfaz estndar y conductas de un Servicio Grid, armando una
base de Web service.
60
Proporciona especificaciones tcnicas para la implementacin de cada componente de OGSA, usando Servicios Grid para definir cada interfaz. La especificacin se basa en un grupo de Servicios Web estndar, con ciertas extensiones
para WSDL y XML necesarias para los Servicios Grid.
OGSI define detalles tales como estabilidad de Servicios Web, la herencia
de interfaces de Servicios Web, notificacin asncrona, referencias a instancias
de servicios, coleccin de instancias de servicios y datos de estados de servicios.
El mundo de los Web services ha reconocido las mejoras significativas logradas para OGSA OGSI y el trabajo se encamina para incluir algunas de
esas mejoras en los Web services mismos.
3.5
Objetivos:
61
3.5.1
Arquitectura:
Recursos: los recursos fsicos y los recursos lgicos Web services ms las
extensiones de OGSI que definen servicios Grid.
Servicios de arquitectura de OGSA.
Aplicaciones Grid.
Se debe observar estas capas, una a la vez.
Capa de los recursos fsicos y lgicos
El concepto de recursos es central para OGSA y Grid Computing en general. Los recursos comprenden las capacidades del Grid, y no son limitados
a los procesadores.
Los recursos fsicos incluyen servidores, almacenamiento, y red.
62
Sobre los recursos fsicos estn los recursos lgicos. Ellos proporcionan
funcin adicional virtualizando y agregando los recursos en la capa fsica. El
propsito general del software intermedio tal como sistemas de archivos, gestores de bases de datos directorios, y gestores de flujos de trabajo (workflow)
es proporcionar estos servicios abstractos sobre el Grid fsico.
Capa de Web services
La segunda capa en la arquitectura de OGSA es la de Web services.
Aqu hay un importante principio de OGSA: Todos los recursos del Grid
(lgico y fsico) son modelados como servicios. La especificacin Abierta de
Infraestructura de Servicios de Grid (OGSI) define servicios de grid y construye sobre las tecnologas de Web services standad. OGSI aprovecha los
mecanismos de Web services como XML y WSDL para especificar interfaces
standards, conductas e interaccin para todos los recursos del Grid.
OGSI extiende la definicin de Web services para proporcionar capacidades
para una Web services dinmica, estable y manejable que se exige para modelar
los recursos del Grid.
Capa Servicios de Grid de la Arquitectura de OGSA
La capa de Web services, con sus extensiones de OGSI, provee una infraestructura base a la prxima capa de arquitectura de Grid services. El Global
Grid Forum est actualmente trabajando para definir muchos de estos servicios de Grid de arquitectura en reas como la ejecucin de programas, servicios
de datos, y servicios centrales.
Algunos ya se han definido, y algunas aplicaciones ya han aparecido. En
tanto las aplicaciones de stos servicios nuevos de arquitectura empiecen a
aparecer, OGSA se volver una arquitectura orientada al servicio ms til
(SOA).
Capa de Aplicaciones de Grid
Con el tiempo, en tanto una cantidad importante de servicios de arquitectura de Grid contine desarrollndose, aparecern las nuevas aplicaciones del
Grid que utilicen uno o ms servicios de arquitectura de ste. Estas aplicaciones comprenden la cuarta capa principal de la arquitectura de OGSA.
Se puede observar ms de cerca a los dos componentes lgicos principales
de OGSA (los Web services) ms capa de OGSI y la capa se servicios de
63
64
65
66
3.6. QU PLATAFORMAS?
67
3.6
Qu Plataformas?
68
3.6. QU PLATAFORMAS?
69
70
3.6. QU PLATAFORMAS?
71
72
3.7. CONCLUSIN.
73
de fuente abierta existentes provistas por organizaciones como Globus, o integrarn las implementaciones con sus productos de plataforma hosting como
WebSphere, WebLogig, Apache o Net.
Sin embargo, los servicios de arquitectura de Grid proveen algunas reas
naturales preparadas oportunamente para vendedores y organizaciones, para
competir y diferenciarse entre ellos. Esta competencia crear una economa
de proveedores de software de Grid cuya innovacin ayudar a orientar la
aceptacin de standards como OGSI/OGSA, y esto permitir a los clientes
construir sistemas fuera de los componentes interoperables.
Adems, las reas de funcionalidad en la ejecucin de programas de Grid y
servicios de datos requerirn innovacin y nuevos planteamientos, y esto acelerar la aceptacin del mercado de soluciones de Grid y proveer oportunidades
de mercado a los vendedores.
En la fig. 3.9 de la pg. 72 se observa que los servicios centrales del Grid
pueden ver una mezcla de implementaciones de referencia de fuente abierta e
implementaciones de valor agregado provistas por el vendedor (proveedor).
Muchas tecnologas en esta rea pueden ser comoditizadas, pero reas como
poltica y seguridad proveern a los vendedores una oportunidad para diferenciarse entre ellos.
Implementaciones en ambos, ejecucin de programas de Grid y data services, se espera que formen parte de implementaciones de valor agregado de
diferentes compaas. Estas reas representan oportunidades importantes para
integrar ofertas de middleware lderes dentro del marco de OGSA y permitirn
un buen ecosistema para desarrollar soluciones de Grid.
3.7
Conclusin.
74
Captulo 4
La Evolucin de Enterprise
Computing
En el pasado, la computacin era tpicamente realiza dentro de centros de
computacin de empresas altamente concentradas e integradas mientras los
sistemas distribuidos sofisticados (por ejemplo sistemas de control de comandos, sistemas de reserva, el Internet Domain Name System [16]) existieron,
estos han permanecido como entidades especializadas [16].
El crecimiento de la Internet y la emergencia de los negocios electrnicos
(e-business) sin embargo condujo a una creciente conciencia de una infraestructura IT de la empresa tambin equiparada a redes externas, recursos y
servicios. Inicialmente esta nueva fuente de complejidad era tratada como un
fenmeno central de red y se hicieron intentos para construir redes inteligentes que interceptan con centros de datos IT tradicionales de la empresa
solo en servidores de borde (edge): por ejemplo, una Web clave de empresa,
o el servidor de red privado que conecta una red de empresas a recursos de
proveedor de servicios.
La idea era que el impacto de los negocios y el Internet en una infraestructura IT centro de empresa podra as ser administrada y circunscripta.
Este intento, en general ha fallado porque la descomposicin de los servicios IT tambin ocurre dentro de las facilidades de la empresa IT. Nuevas
aplicaciones estn siendo desarrolladas para modelos de programacin (tales
como el modelo de componentes Enterprise Java Beans que asla la aplicacin
75
76
77
4.1
Para lograr economas de escala proveedores de e-Utilidad requiere infraestructura de servidor que puede ser fcilmente adaptado a las demandas para cubrir
78
las necesidades especificas del cliente. As hay una demanda para infraestructura IT que apoya la ubicacin de recurso dinmico de acuerdo a polticas de
acuerdos de nivel de servicio, colaboracin eficiente y reutilizacin de infraestructura IT en altos niveles de utilizacin, y seguridad distribuida desde el
borde de la red hasta aplicacin y servidores de datos, tiempos de respuesta
consistentes y altos niveles de disponibilidad, los cuales a su ves producen una
necesidad de monitoreo de calidad fin a fin y reconfiguracin de tiempo real.
Otra tendencia de industria de IT clave es cross-enterprise, colaboracin
(B2B) negocio a negocio, as como una multiorganizacin suministra administracin en cadena, va de Web virtual, y subasta de mercado electrnico.
Las relaciones de B2B son en efecto, organizaciones virtuales, aunque con requerimientos particularmente restringidos para seguridad, auditabilidad, disponibilidad, acuerdos de nivel de servicio, y flujos de proceso de transaccin
complejos.
Adems, B2B representa otra fuente de demanda para integracin de sistemas distribuidos, caracterizados a menudo por grandes diferencias entre las
tecnologas de informacin presentadas dentro de diferentes organizaciones.
4.2
4.2.1
Los componentes del Toolkit que son ms relevantes al OGSA son Grid Resource Allocation y protocolos de Management (GRAM) y su servicio gatekeeper, que provee direccin y creacin de servicios confiables y seguros [8],
el Meta Directory Service (MDS-2) , que provee descubrimiento de informacin a travs de registro de estado de soft, diseo de datos, y un registro local
(GRAM reporter), y la Infraestructura de Seguridad de Grid (GSI ), que
soporta sing on (autorizacin), delegacin y mapeo de credencial.
Como se ilustra en la fig. 4.1 de la pg. 79, estos componentes proveen los
elementos esenciales de una arquitectura orientada de servicio pero con menos
generalidades que las que se logran en OGSA.
En la fig. 4.1 de la pg. 79 se observan los mecanismos del G.T. (Globus
Toolkit) seleccionado, muestra la creacin inicial de una credencial proxy y
consultas autenticadas subsecuentes a un servicio de gatekeeper remoto, resul-
79
80
4.2.2
Los Web services standars se definen dentro de W3C y otros cuerpos standars
y forman las bases para mayores y nuevas iniciativas de la industria tales
como Microsoft (.NET ), IBM (Dynamic e-Business), y Sun (Sun ONE ). Estn
particularmente relacionados con tres de estos standars, SOAP, WSDL, and
81
WS-Inspection.
El Simple Object Acces Protocol (SOAP) provee un medio de mensajes
entre un proveedor de servicios y un consultor de servicios. SOAP es un
mecanismo de desarrollo simple para carga til de XML que define una
convenin para llamda a procedimiento remoto (RPC ) y una convencin
de mensajes.
SOAP es independiente del protocolo de transporte fundamental; las
cargas tiles de SOAP pueden ser realizadas en HTTP, FTP, Java Messaging Service (JMS), y otros similares. Se enfatiza que los Web services
pueden describir mecanismos de acceso mltiple al componente software
fundamental. El SOAP es slo un medio de formatear una invocacin
de Web services.
EL Web Services Description Language (WSDL) es un documento XML
para describir a las Web service como un conjunto de endpoints (puntos
finales) que operan en mensajes que contienen mensajes de documentos
orientados a carga til de RPC. Las interfaces service se definen abstractamente en trminos de estructura de mensajes y secuencia de intercambio de mensaje simple (u operaciones, en terminologa WSDL) y luego
unido a un protocolo de red concreto y formato de codificador de datos
para definir un endpoint. Los endpoints relacionados se unen para definir endpoints abstractos(servicios). WSDL es extensible para permitir
la descripcin de endpoints y la concreta representacin de sus mensajes
para una variedad de diferentes formatos de mensajes y protocolos de
red. Varias convenciones unidas estandarizadas se definen describiendo
cmo usar WSDL en conjunto con SOAP 1.1, HTTP GET/POST, and
MIME.
La WS-Inspection comprime un simple lenguaje XML y convenciones
relacionadas para localizar descripciones de servicios publicadas por un
proveedor de servicio. Un documento WS-Inspection Languje (WSIL)
puede contener una coleccin de descripciones de servicio y uniones a
otras fuentes de descripciones de servicio. Esta es usualmente una URL a
un documento WSDL; ocasionalmente una descripcin de servicio puede
ser una referencia para una entrada a un registro Universal Description,
Discovery, Itegration (UDDI ). Una conexin es usualmente una URL
a otro documento WS-Inspection, ocasionalmente una conexin es una
referencia a una entrada UDDI. Con WS-Inspection un proveedor de
82
4.3
4.3.1
83
Independientemente de su perspectiva, un requerimiento crtico en un ambiente de Grid milti-organizacional distribuido es para mecanismos que permiten interoperabilidad.
Con una visin orientada a servicio, se puede dividir el problema de interoperabilidad en dos subproblemas, la definicin de interfases de servicio y la
identificacin de los protocolos que pueden ser usados para pedir una interfase
particular (y un acuerdo en un conjunto standard de tales protocolos).
Una visin orientada a servicio permite satisfacer la necesidad de mecanismos de definicin de interfase standard, transparencia remota / local, adaptacin a servicios OS locales y semntica de servicio uniforme. Esta tambin
simplifica la virtualizacin -es decir, la encapsulacin detrs de una interfase
comn de implementaciones diversas-.
La virtualizacin permite acceso a recursos consistentes a travs de plataformas heterogneas mltiples con transparencia de ubicacin remota o local,
y permite el mapeo de instancias de recursos lgicos mltiples dentro del mismo recurso fsico y administracin de recursos dentro de un VO basado en la
composicin de recursos de menor nivel.
Una virtualizacin permite la composicin de servicios par formar servicios
ms sofisticados -sin tener en cuenta cmo estn compuestos e implementados
los servicios-.
La virtualizacin de Grid services tambin sostiene la habilidad para mapear comportamiento semntico de servicio comn sin costura dentro de facilidades de plataforma nativa.
Una virtualizacin es ms fcil si las funciones de servicio pueden ser expresadas en una forma standard, as cualquier implementacin de un servicio
puede ser pedida de la misma manera.
WSDL, el cual se adopta para este propsito, soporta un servicio de definicin de interfase diferente a los enlaces de protocolos usados para la peticin
de servicios.
WSDL permite mltiples enlaces para una interfase simple, incluyendo protocolos de comunicacin distribuidos (por ejemplo HTTP) tanto como enlaces
locales ptimos (por ejemplo IPC) para interacciones entre peticin y procesos
de servicio en el mismo host.
Otras propiedades de enlaces pueden incluir confiabilidad (y otras formas
84
de QoS ) tanto como la autenticacin y delegacin de credenciales. La eleccin de un enlace siempre deber ser transparente al cliente con respecto a
las semnticas de peticin de servicios -pero con respecto a otras cosas, por
ej. un cliente deber ser capas de elegir un enlace particular por razones de
performance-.
Las definiciones de servicio y enlace de acceso son tambin diferentes a la
implementacin de la funcionalidad del servicio.
Un servicio puede soportar implementaciones mltiples en diferentes plataformas, facilitando capas sin conexin (sin costura) no slo para facilidades
de plataforma nativa pero tambin, va la animacin de implementaciones de
servicios a ensambles de recursos virtuales.
Dependiendo de la plataforma y el contexto, se deberan usar los siguientes
enfoques de implementacin:
Se puede usar una implementacin de referencia portable, que se puede
usar a travs de mltiples plataformas para soportar el ambiente de
ejecucin (contenedor) para un servicio hosting.
En una plataforma que posee facilidades nativas especializadas para el
envi de funcionalidad de servicio, se puede mapear desde la definicin
de interfase de servicio hasta las facilidades de plataforma nativa.
Tambin se pueden usar estos mecanismos recursivamente de manera tal
que un servicio de alto nivel se construya por composicin de mltiples
servicios de bajo nivel, los cuales tambin pueden mapear facilidades
nativas o descomponer otras.
La implementacin de servicio luego enva operaciones a servicios de ms
bajo nivel.
En una plataforma que no soporta una facilidad de rastreo robusta, se
puede crear una implementacin de referencia y hospedada (hosted) en un
ambiente de ejecucin de servicio para almacenar y retener grabaciones de
registros solicitadas (on demand).
En una plataforma que ya posee una facilidad de rastreo robusta, sin embargo se puede integrar la capacidad de servicio de rastreo distribuida con
mecanismos de rastreo de plataforma nativa, y as nivelar herramientas de administracin de rastreo operacional existente, descarga auxiliar, restauracin
85
4.3.2
Se requieren semnticas standard para interacciones de servicios, as por ejemplo diferentes servicios siguen las mismas convenciones para notificacin de
error.
86
Para este fin, el OGSA define lo que se llama un Grid service: un Web
service que provee un conjunto de interfases bien definidas y que sigue convenciones especficas, el descubrimiento de administracin de interfase, creacin
de servicio dinmico, administracin, notificacin y administracin de tiempo
de vida, la designacin de administracin de convenciones y posibilidad de
ampliacin.
Otras cuestiones importantes son: autentificacin y peticin confiable, son
vistas como conexiones de protocolo de servicio y son externas a la definicin
del Grid service central, pero deben ser dirigidas dentro de una implementacin
de OGSA completa. Esta divisin de ideas incrementa la generalidad de la
arquitectura sin comprometer la funcionalidad.
Las interfases y convenciones que definan a un Grid service se relacionan en
particular con comportamientos vinculados a la administracin de instancias
de servicios transitorios.
Participantes de VO tpicamente mantienen no meramente un conjunto esttico de servicios persistentes que manejan complejas consultas de actividades
de clientes, los que a menudo necesitan iniciar nuevas instancias de servicios
transitorios dinmicamente, los cuales luego manejan la administracin e interacciones asociadas con el estado de actividades de consultas particulares.
Cuando el estado de la actividad ya no es necesario, el servicio puede ser
destruido. Por ejemplo un sistema de videoconferencia, el establecimiento
de una sesin de videoconferencia podra incluir la creacin de instancias de
servicios en puntos intermedios para administrar flujos de datos extremo a
extremo de acuerdo a las restricciones de QoS. O, en un ambiente de servidor
de Web, instancias de servicio podran ser instanciadas dinmicamente para
proveer un tiempo de respuesta de usuario consistente administrando la carga
de trabajo de aplicacin a travs de una capacidad dinmicamente adicional.
Otros ejemplos de instancias de servicios transitorios podran ser una peticin a sobre una base de datos, una operacin de minera de datos, una
asignacin de red de banda ancha, una ejecucin de transferencia de datos y
una reserva avanzada de capacidad de proceso.
Estos ejemplos enfatizan que las instancias de servicio pueden ser entidades
extremadamente livianas creadas para administrar incluso actividades de corta
duracin. La transitoriedad tiene significativas implicaciones en cuanto a cmo
los servicios son administrados, descubiertos, designados y usados.
87
88
89
4.3.3
La OGSA define las semnticas de una instancia de Grid service: cmo es creada, cmo se llama, cmo se determina su tiempo de vida, cmo comunicarse
con ella, etc.
Sin embargo, mientras la OGSA es prescriptiva en asuntos de comportamiento bsico, no establece requerimientos en cuanto a lo que un servicio
hace o cmo realiza ese servicio, en otras palabras, la OGSA no dirige asuntos
de implementacin de modelo de programacin, lenguaje de programacin,
implementacin de herramientas o ambiente de ejecucin.
En la prctica los Grid service se inician dentro de un ambiente de ejecucin
especifico o ambiente hosting. Un ambiente hosting particular no slo define
la implementacin de modelo de programacin, lenguaje de programacin,
herramientas de desarrollo, herramientas de depuracin, pero tambin como
una implantacin de un Grid service cumple con sus obligaciones con respecto
a la semntica del mismo.
Las aplicaciones del Grid e-cience de hoy tpicamente utilizan procesos de
sistemas de operacin nativos como su ambiente hosting, como por ejemplo,
la creacin de una nueva instancia de servicio incluyendo la creacin de un
90
4.3.4
91
92
Figura 4.2: Tres Diferentes Estructuras VO, Ambiente Hosting Simple y Virtual y Servicios Colectivos.
para un cliente va exactamente las mismas interfases que fueron usadas para
el ambiente hosting descripto.
Se crean una o ms infraestructuras de ms alto nivel que delegan consultas de creacin a infraestructuras de bajo nivel. Similarmente se crea un
registro de ms alto nivel que conoce acerca de las infraestructuras de ms alto
nivel y las instancias de servicio que ellas han creado, tanto como cualquier
poltica especfica de VO que gobierna el uso de servicios VO.
Luego los clientes pueden usar el registro VO para encontrar infraestructuras y otras instancias de servicio asociadas con el VO y posteriormente usar
los handles devueltos por el Registro para comunicarse directamente a esas
instancias de servicio.
Las infraestructuras y Registros de ms alto nivel implementan interfases standard y as, desde las perspectivas del usuario, son indistinguibles de
cualquier otra infraestructura o Registro.
Se observa que aqu como en el ejemplo previo el handle del Registro puede
ser usado globalmente como un nombre nico para un conjunto de servicios
mantenidos por el VO. Las polticas de administracin de recursos pueden ser
definidas y reforzadas en las plataformas de servicios VO hosting, dirigindose
al VO con este nombre nico.
Operaciones Colectivas. Se puede tambin construir un ambiente hosting
93
4.4
Aplicacin Ejemplo
94
95
Captulo 5
98
99
Una URI es equivalente a una URL dentro de una pgina Web. Los Web
services suelen usar URIs porque suelen estar dentro de un contenedor Web.En
URI la estructura sera: http: //sitio.com/aplicacion/servicio-web -xxxx.
El cliente sabe donde est el Web service mediante el URI, pero no sabe
como invocarlo, para lo cual pregunta al servidor Web como hacerlo.
El servidor Web le contesta con un fichero WSDL (Web Services Definition Language) que da los detalles para hacer la invocacin. Es decir,
describe el interfaz del Web service.
Una vez conocido el dnde y el cmo, se hace la invocacin.
Se puede hacer de varias formas, pero la ms comn es usar SOAP (Simple Object Access Protocol ), un protocolo que permite llamadas remotas de
servicios (programas) mediante mensajes codificados y encapsulados en XML.
El Web service contesta con la respuesta SOAP en un mensaje escrito en
gramtica XML.WSDL, API, UDDI, WSDL, SOAP sobre HTTP.
El desarrollo de Web services habitualmente no necesita considerar los
detalles SOAP y WSDL ya que las herramientas generan automticamente
unos stub o proxys que interpretan las peticiones y las enrutan al destino
adecuado.
5.2
100
Los Web services no incluyen servicios de soporte que han sido incluidos
en los Grid services como son las notificaciones, el servicio de persistencia, la gestin del ciclo de vida, etc.
Los Grid services utilizan un enfoque de Factoras de Objetos de manera
que en lugar de tener un nico servicio compartido por todos los usuarios (como
el Web Service) se tiene un servicio-factora que crea instancias individuales
del servicio.
Cuando se invoca a una operacin del servicio se accede a la instancia y
no a la factora. Adems se puede crear una instancia por cliente, o varias por
cliente o una para varios clientes. Por ltimo la destruccin de la instancia
puede correr a cargo del cliente o de la factora.
Los servicios Grid estn construidos utilizando Web services pero se les
incorporan una serie de mecanismos de la plataforma OGSI.
Estos mecanismos adicionales se pueden agrupar en cuatro reas:
Servicio de Nombres (Naming) , que asegura la existencia de un nombre
nico para cada instancia de
Servicio Grid, permite la localizacin de los mismos (discovering) mediante nombres.
Servicio de Datos, que gestionan los conjuntos de datos asociados a la
ejecucin de un servicio Grid
Notificacin, es decir el conjunto de interfaces para registrar y suministrar notificaciones y subscripciones. Estos son los mecanismos usados
para la comunicacin entre los componentes de una aplicacin Grid.
Ciclo de Vida, mecanismos para la creacin y destruccin de instancias
de Servicios Grid
5.2.1
Los Grid services, al igual que los Web services sobre los que se basan, utilizan
URIs para localizarse.
101
5.2.2
102
para manipular los SDE por nombre. Esta declaracin permite expresar los
elementos de la informacin de estado pblicamente disponibles.
La parte interna privada del estado no es parte de la interfaz y por tanto
no esta representada por una declaracin de datos del servicio.
El concepto de service Data es muy semejante al concepto de variable
pblica de instancia o de campo en lenguajes orientados a objeto tales como
Java, SmallTalk o c#.
As, por ejemplo, en Java un javabean define convenciones para las firmas
de mtodo para acceder a las propiedades y clases helper para documentar las
propiedades. El modelo OGSI usa service Data elements (SDE ) y tipos de
esquema XML (WSDL) para hacer eso mismo respectivamente, pero con la
ventaja de ser un procedimiento extensible y que permite querys complejas y
semnticas de suscripcin.
Una caracterstica muy importante de los service Data es su extensibilidad.
Los service Data definen un nuevo elemento de portType denominado service Data que permite definir service Data Elements (SDE ), asociados con
este portType. Los valores de estos SDE pueden declararse estticamente en
el portType o dinmicamente a lo largo de la vida del Web Service o Grid
Service.
Adems de los SDE estndar definidos por OGSI, existe una API para
permitir la creacin dinmica de service Data que corresponde a los datos del
WSDL de la instancia concreta del servicio Grid.
Las instancias del Servicio Grid mantienen el valor del service Data, que
pueden ser solicitadas en cualquier momento o ser asociadas a una notificacin
de aviso cuando su valor cambie.
OGSI define para esto una interfaz para hacer querys a los SDEs o subscribirse a notificaciones de aviso (que avisen de cambios en los SDE, lo cual
puede ser bastante til).
5.2.3
Notificaciones
103
Source y Notation Sink ). Se trata de un mecanismo de mensajera asncrona. La mensajera asncrona tiene dos variantes: los gestores de colas, y el
mecanismo de publicacin-suscripcin a un topic (que bsicamente es una cola). La implementacin de GT gestiona el ciclo de notificaciones mediante un
mecanismo de suscripcin.
El ciclo de notificaciones tiene los siguientes:
Peticin de Suscripcin: la fuente recibe un mensaje con la localizacin
del Sumidero a donde se deben mandar los mensajes, as como un tiempo
de vida para el origen de la suscripcin. Una peticin de suscripcin
genera una instancia de servicio Grid denominada Suscripcin. Se utiliza
la definicin Notification Source portType .
Expresin de la Suscripcin: es un documento XML que describe las
reglas y el formato del mensaje de la Notificacin (destino de la notificacin, cuando debe enviarse, etc.)
Instancia del Servicio Grid de suscripcin: es una instancia de servicio
Grid que se crea durante la operacin de suscripcin y que se encarga
de gestionar las propiedades de la suscripcin.
Fuente de la Notificacin: es una instancia de servicio Grid que enva
notificaciones
Mensaje de la Notificacin: puede ser un mensaje esttico (no necesita
suscripcin) o bien sujeto a modificaciones futuras dinmicas de un SDE
(service Data Element) concreto para lo cual necesita un procedimiento
de suscripcin.
Sumidero de Notificacin: es la instancia de servicio Grid que recibe
los mensajes. La implementacin de este mecanismo de publicacinsuscripcin entre los distintos componentes se hace en el Globus Toolkit
mediante el servicio JMS (Java Messaging Services) definido dentro
del estndar J2EE. La interaccin con el cliente sigue hacindose va
SOAP/http.
5.2.4
Ciclo de Vida
El ciclo de vida de un servicio Grid est marcado por la creacin y la destruccin de la instancia de este servicio. Es una propiedad bsica de servicio Grid
104
y esta controlada por el llamado hosting environment (el sistema que aloja
a la plataforma Grid, el Globus Toolkit en este caso), pero que, sumariamente, puede ser el propio sistema operativo, un contenedor (servidor) Web, un
contenedor J2EE, etc.
Un servicio Grid soporta tambin notificaciones relativas a eventos del ciclo
de vida, lo que permite a los servicios Grid ser conscientes de la situacin de
otros servicios y tenerlo en cuenta para la dinmica de la propia aplicacin
Grid.
Para crear una instancia de un servicio Grid se hace una peticin a un
objeto Factory para que cre una instancia para el cliente, mientras que su
destruccin se hace por dos vas: la invocacin de un mtodo especfico dentro
de la instancia, o mediante un procedimiento llamado de soft-state en el que
una instancia que durante un periodo de tiempo no ha sido usada o refrescada,
termina.
El mecanismo de creacin de instancias de servicios Grid es, la invocacin
de un objeto Factory. Est definida en la especificacin OGSI y se implementa
mediante un interfaz Factory. La operacin de crear un servicio Grid devuelve
el GSH (un URI) del servicio solicitado. El GSH es resuelto en un GSR (es
decir, la descripcin completa en formato WSDL) que tiene un tiempo de
validez determinado (mientras que el GSH es permanente).
Los pasos a partir de aqu son:
El cliente localiza una Factory en el registro o servicio de nombres relativo al servicio Grid a ejecutar.
El cliente llama a una operacin dentro del Factory para crear una instancia del servicio Grid.
El factory crea la instancia.
El factory devuelve el GSH (el URI) del nuevo servicio Grid al cliente.
El cliente y el servidor interactan a travs del servicio como resultado
de la llamada inicial.
5.2.5
105
Captulo 6
Software Utilizado
6.1
6.1.1
Introduccin
Linux es probablemente el acontecimiento ms importante del software gratuito desde el original Space War, o, ms recientemente, Emacs. Se ha convertido
en el sistema operativo para los negocios, educacin, y provecho personal. Linux ya no es slo para gurs de UNIX que se sientan durante horas frente
a la resplandeciente consola (aunque le aseguramos que un gran nmero de
usuarios pertenece a esta categora).
Linux es un clnico del sistema operativo UNIX que corre en ordenadores
107
108
6.1.2
Qu es Linux?
6.1.3
Por qu Linux?
6.1.4
Todos estos rasgos parecen notables ms aun cuando usted considera que es
libremente distribuido bajo los trminos de la Licencia GPL. Simplemente
con poner esta licencia permite a cualquiera trabajar en Linux haciendo que
sus cambios estn disponibles bajo los mismos trminos. Esto significa que
mientras Linux puede ser (y es) vendido en una variedad de formas, puede
tambin ser bajado o ser copiado sin costo o restriccin.
La GPL no es el nico tipo de licencia de software free, y Linux se beneficia de software licenciado bajo varios otros tipos de licencias de software
libremente-distribuible.
Los cuatro tipos principales son: Software del Dominio Pblico (Public Domain Software), Shareware, derechos de propiedad de tipo-BSD, y la Licencia
Pblica General (GPL).
110
6.1.5
6.1.6
Caractersticas Principales
112
6.1.7
114
6.1.8
X Window
6.1.9
KDE
Partes de la pantalla
KDE es uno de los entornos grficos ms populares de Linux puesto que une
una gran facilidad de uso a un entorno bonito y agradable. Al arrancar KDE
aparece el escritorio en el que se pueden encontrar elementos similares a los
de otros entornos.
Por defecto la pantalla de KDE se divide en tres partes fundamentales:
Panel de KDE .
Escritorio.
Panel de ventanas.
El panel de KDE contiene accesos directos a las aplicaciones ms empleadas
as como dos mens.
El equivalente al men Start de Windows, esto es el men a travs del cual
se pueden ejecutar las aplicaciones. Al seleccionar este elemento se despliega
un men subdivido en distintas categoras. KDE incluye una gran cantidad
de utilidades que se integran con el entorno.
Junto a ste aparece un segundo men del KDE, en el men de ventanas
se puede acceder a todas las ventanas que estn abiertas en los distintos escritorios. Al contrario que otros entornos grficos X Windows permite organizar
las ventanas en distintos escritorios virtuales. Justo encima del panel de KDE,
aparece el escritorio, al igual que en Windows este elemento contiene conos
que permiten acceder a los elementos ms comunes como las unidades de disco
o la papelera. Por ltimo en la parte superior del escritorio aparece otra barra,
en la que aparecern botones por cada ventana que se cree.
Las ventanas en el KDE tienen un aspecto similar al de las ventanas de
Windows (al menos con el aspecto bsico), pudiendo distinguir en ellas diversas
partes: en la parte superior izquierda, aparece el cono de la aplicacin, seleccionando el cual aparece un men con las opciones bsicas de manipulacin
de ventanas: minimizar, maximizar, cerrar, as como otras no tan habituales
como enviar la ventana a otros escritorio. Junto a l y en la parte superior
central de la ventana se encuentra la barra de ttulos de la ventana. Finalmente en la parte superior derecha aparecen tres botones con las opciones de
minimizar, maximizar y cerrar. Esta es la disposicin por defecto pero como se
ver ms adelante esta disposicin puede ser adaptada a los gustos del usuario
de una forma muy sencilla. Por debajo de este elemento se extiende la barra
de mens y de herramientas y el rea de trabajo de la aplicacin.
Al igual que en Windows, KDE permite cambiar el tamao de una ventana
sin ms que acercar el ratn a un borde de la misma. En esta posicin cambia el
cursor, indicando en qu direccin podemos modificar el tamao de la ventana
en esa posicin. Si se hace clic sobre el borde y se arrastra cambiar el tamao
de la ventana.
116
Hacer clic con el botn derecho del ratn sobre el elemento a borrar y
en el men contextual seleccionar Move to Trash, para mover el fichero
a la papelera (de donde se puede recuperar) o Delete, lo cual elimina
permanentemente el fichero sin que se pueda recuperar.
Seleccionar el elemento y el men Edit/Move to Trash o presionar las
teclas <ctrl>+x o bien para eliminar el fichero permanentemente Edit/
Delete o las teclas <ctrl>+supr.
Nota: Linux no dispone de ningn mtodo que permita recuperar un fichero una vez eliminado.
KDE permite mover los ficheros a una papelera, esto es a un directorio
del que pueden ser eliminados de forma definitiva o recuperados, aunque la
funcionalidad de la misma es mucho menor que la de la papelera de Windows
o MacOs.
118
Enlaces de KDE
Adems de los enlaces que admite el sistema de archivos de Linux, KDE incluye un tipo de enlace similar al que existe en Windows. Este tipo de enlace
se representa por un fichero con extensin .kdelnk que contiene informacin
diversa para el uso del sistema. Existen varios tipos de estos enlaces:
File System Device, es un enlace a un dispositivo del sistema. Este tipo
de enlaces permite acceder de forma directa por ejemplo a un disquete.
Cuando se selecciona New/File System Device en el men contextual
(botn derecho) o en el men File, se abre un primer cuadro de dilogo
en el que se pide el nombre del fichero. Para este ejemplo emplearemos disquete.kdelnk. En el segundo cuadro de dilogo, seleccionando la
pestaa Device se pueden indicar las propiedades del enlace como el dispositivo /dev/fd0 (el disquete) o los conos del dispositivo cuando est
montado y cuando no lo est. Tras esto, cuando se haga clic sobre el
enlace el sistema monta el sistema de archivos del disquete y muestra
su contenido. Para sacar el disquete de forma segura hay que seleccionar con el botn derecho el enlace y en el men contextual seleccionar
Umount con lo que se garantiza que ninguna aplicacin pueda acceder
al disquete y que no haya ninguna que est accediendo en ese momento.
Tras esto se puede retirar el disquete.
120
konsole
Linux es un sistema Unix y como tal pone a disposicin de los usuarios la
posibilidad de comunicarse con el sistema a travs de una lnea de comandos,
el shell. Desde KDE se puede acceder al shell o consola a travs del programa
konsole.
Este programa permite configurar el aspecto de la presentacin adaptndola a los gustos del usuario, cambiando el esquema de color, las fuentes, el
tamao por defecto de la aplicacin, a travs de las distintas opciones del men
Options.
Konsole se integra con el resto de las aplicaciones de KDE mejorando su
facilidad de uso. En concreto, se pueden arrastrar ficheros y carpetas desde una
ventana del administrador de archivos hasta la consola con lo que se permite
copiar el path del fichero o cambiar al directorio que contiene un determinado
fichero.
kedit
kedit es un programa muy sencillo e intuitivo para realizar la edicin de textos
sencillos. El manejo de kedit es similar al de programas como Notepad, al que
se accede a travs del men Application/Text Editor.
kedit admite las opciones tpicas de manejo de textos como son copiar un
texto (Edit/Copy), pegar un texto (Edit/Paste) y cortar un texto (Edit/Cut),
adems de otras ms sofisticadas como insertar un fichero (Edit/Insert File),
una fecha (Edit/Insert Date), buscar un texto en el documento (Edit/Find),
reemplazar texto (Edit/Replace) o comprobar la ortografa del documento
(Edit/Spelcheck) [?, IBM].
El programa es adems muy configurable, puesto que permite definir el
idioma del texto (Options/Spellchecker ) o la fuente con la que se va a mostrar
(Options/Font).
Adems de estas opciones Kedit es un programa que permite enviar el
texto va mail, editar un fichero a travs de un servidor ftp, etc.
122
kwrite
kdehelp
Esta aplicacin es una de las ms interesantes del KDE puesto que representa
el sistema de ayuda del mismo. Este sistema de ayuda se basa en HTML por
lo que su uso es muy sencillo y similar al de un navegador de Internet. Todas
las aplicaciones del KDE acceden a este programa para mostrar la ayuda de
los mismos. La ventana de kdehelp se divide en cuatro partes fundamentales:
la barra de mens, la barra de herramientas, la barra de direcciones, y el
contenido propiamente dicho.
Como se ha comentado anteriormente, la ayuda de KDE se basa en HTML,
por lo que est llena de vnculos que llevan de un contenido a otro. Para navegar por los documentos existen las opciones tpicas de todos los navegadores
y que encontramos tambin en kfm, esto es los botones y mens para ir a la
pgina que ha sido visitada anteriormente o con posterioridad, se pueden crear
marcadores, etc.
Una de las opciones ms interesantes de kdehelp es que permite el acceso a
las pginas del manual man de Linux, simplemente escribiendo man:<coman
do> donde comando es alguno de los comandos de Linux, podemos acceder
a la ayuda de ese comando, como ejemplo se puede probar man: ls. Dentro
de los comandos tambin se incluyen las funciones de la librera estndar de
C por lo que man: sin o man: printf mostrarn la informacin que contiene
el sistema respecto de esas funciones.
Kfind
Esta herramienta es auxiliar a kfm puesto que permite buscar un determinado
archivo en un directorio concreto. La bsqueda, al igual que en Windows, se
puede realizar siguiendo tres criterios diferentes:
Por nombre u localizacin, se conoce el nombre o parte de l y la localizacin aproximada del fichero.
Se puede centrar an ms la bsqueda si se conoce el momento en el
que se realiz la ltima modificacin. La pestaa Date Modified permite
que el usuario identifique un perodo de tiempo en el que concretar la
bsqueda.
Por ltimo se puede especificar en Advanced que la bsqueda se limite a
un determinado tipo de fichero, que el fichero contenga un determinado
texto, o que su tamao sea uno determinado.
Una vez determinados los criterios de seleccin de los ficheros se puede
indicar al programa que busque seleccionando el primer botn de la barra
de herramientas por la izquierda, o el men File/Start Search., con lo que el
programa comenzar a buscar.
La barra de herramientas de esta aplicacin contiene las siguientes funciones empezando por la izquierda, la misma se puede observar en la figura 6.2
de la pgina 124:
1. Botn para iniciar una bsqueda.
2. Botn para crear una nueva bsqueda.
3. Botn para detener bsqueda (desactivado en la imgen).
4. Botn para abrir fichero.
5. Botn para aadir a un archivo en el que se pueden agrupar varios ficheros.
6. Botn para eliminar fichero.
7. Botn de propiedades.
124
Configuracin de KDE
Como cualquier aplicacin de Linux, KDE es altamente configurable, lo que
supone que cada usuario puede adaptar el aspecto y comportamiento de KDE
a su gusto personal. No obstante, al contrario que otras muchas aplicaciones para Linux, para configurar KDE no es necesario editar los ficheros de
configuracin a mano sino que existen una serie de herramientas grficas que
permiten estos cambios de una forma sencilla y segura.
Editor de Mens
Uno de los aspectos ms sencillos de cambiar es el men de aplicaciones del
sistema, al que se pueden aadir las aplicaciones de uso ms comn. Existe
con este fin una utilidad llamada editor de mens accesible desde el men
Utilities/Men Editor.
En realidad, el men de KDE est compuesto por dos partes principales.
Una de ellas constituye el men personal del usuario en el que puede aadir
o quitar aplicaciones. La segunda de las partes es comn a todos los usuarios
de KDE y por lo tanto slo puede ser modificada por el administrador del
sistema.
126
128
6.2
6.2.1
Ejecucin de Programas
Ejecucin en el Fondo & , kill, nice y nohup
6.2.2
Comando time
El comando time, precediendo a cualquier otro comando, suministra informacin acerca del tiempo total empleado en la ejecucin, del tiempo de CPU
utilizado por el programa del usuario, y del tiempo de CPU consumido en
utilizar recursos del sistema.
6.2.3
129
Comando top
Linux incluye una aplicacin llamada top cuya finalidad es manipular la ejecucin de programas de una forma interactiva. Esta aplicacin muestra una
lista de los procesos que se estn ejecutando.
6.2.4
Programas de Comandos
Introduccin
Para introducir lneas de comentarios en un programa de comandos basta
comenzar dichas lneas con el caracter #. Hay que tomar la precaucin de
que este caracter no sea el primer caracter del fichero de comandos, porque
entonces el ordenador interpreta que el programa est escrito en Cshell (una
variante especial de UNIX desarrollada en la Universidad de Berkeley) y el
resultado es imprevisible. Puede ser buena prctica comenzar todos los ficheros
de comandos con una lnea en blanco.
130
El shell del Linux tiene definidas para cada usuario unas variables estndar.
Para averiguar cules son basta teclear el comando siguiente, set. Para definir
otras variables propias de cada usuario puede utilizarse el fichero .profile, que es
un fichero de comandos propio de cada usuario que se ejecuta automticamente
al hacer el login.
El comando echo imprime un determinado texto en la terminal. Un ejemplo de utilizacin de dicho comando puede ser el siguiente: echo Me gusta el
sistema operativo UNIX .
El comando echo es de gran utilidad en los ficheros de comandos. Cuando
el texto que se desea escribir en la terminal contiene alguno de los caracteres
especiales de UNIX ( * ? [ ] > >> < & ; \ ) hay que tomar precauciones
especiales desconectando su significado. Una forma de hacerlo es precediendo
dicho carcter con la barra invertida (\).
Si no se utilizara la barra invertida, el asterisco se interpretara como un
carcter de sustitucin y se imprimira el nombre de todos los ficheros del
directorio.
Otra forma de anular el significado de los caracteres especiales es encerrando el texto a escribir mediante comillas () o entre apstrofos normales ().
Los apstrofos () anulan el significado de todos los caracteres comprendidos
entre ellos. As pues, el triple asterisco lo podramos escribir con el comando,
echo ***.
Las comillas () son menos restrictivas, y anulan el significado de todos los
caracteres excepto los tres siguientes: ( \). Esto es muy importante porque si
VAR es el nombre de una variable, y VAR aparece en un comando echo entre
apstrofos se escribe VAR, mientras que si aparece entre comillas se escribe el
valor de la variable, al cumplir el carcter su cometido.
El carcter (\) tiene otros significados, adems del ya visto de anular el
significado especial de otros caracteres. As, sirve como indicador de que un
comando contina en la lnea siguiente. Cuando se utiliza en la definicin
interactiva de un comando, en la lnea siguiente aparece el prompt secundario
(>), que indica que se debe seguir tecleando el comando. Cuando en un
comando echo aparecen los caracteres (\c) y (\n) quiere decir, respectivamente,
que no se cambie de lnea y que se salte de lnea, al escribir por la pantalla.
Cuando en un comando echo aparece el nombre de otro comando encerrado entre apstrofos inversos (por ejemplo, date, who, ls, ...), el nombre de
131
6.2.5
132
Comando telnet
Permite abrir una terminal virtual en un sistema distante. Este comando no
requiere que los sistemas sean UNIX. Si el sistema tiene varias puertas, hay
que especificar por cul se desea hacer la conexin. Para salir de telnet se
emplea el comando quit (o simplemente q).
Comando ftp
Permite la transferencia de ficheros entre sistemas distantes. Supone una
conexin entre el sistema local y el sistema distante.
Los comandos de ftp que afectan a la transmisin son los siguientes:
ascii: (binary) transmisin en formato ASCII (por defecto) o binario.
quit: fin de la conexin y de ftp.
close: fin de la conexin, sin salir de ftp.
glob: activacin del mecanismo de expansin de ficheros.
open [dir_host]: abrir conexin con el sistema dir_host.
prompt: cambia de interactivo a no interactivo, y viceversa.
user username: identificacin en mquina distante.
status: informacin sobre el proceso ftp.
verbose: activacin de la opcin verbose.
6.2.6
133
Instalacin de Linux
Arranque de Linux
El primer paso es iniciar el computador con el dispositivo de arranque de
Linux, que suele ser un disco boot que contiene un pequeo sistema Linux.
Tras arrancar con el floppy, se presentar un men de instalacin de algn tipo
que guiar en el proceso de instalacin. En otras distribuciones, se mostrar
un prompt de login cuando se arranque. Aqu se suele entrar como root o
install para comenzar el proceso de instalacin. La documentacin que viene
con cada distribucin particular explica qu se necesita para arrancar Linux.
La mayora de las distribuciones de Linux utilizan un disquete o CD de
arranque que permite introducir parmetros de el hardware en tiempo de
arranque, para forzar la deteccin de los dispositivos.
El prompt de arranque se muestra siempre que se arranca con el disquete.
Para arrancar sin ms parmetros especiales, se pulsa enter en el prompt del
arranque.
134
135
136
137
Procedimientos Post-Instalacin
Despus de haber completado la instalacin de Linux, se debera hacer poco
antes de que se pueda comenzar a usar el sistema. En la mayora de los casos,
se debera poder arrancar el sistema, entrar como root, y comenzar a explorar
el sistema.
Llegado este punto es una buena idea explicar cmo rearrancar y apagar el
sistema cuando se lo est usando. No se debera nunca rearrancar o apagar el
sistema Linux presionando el interruptor de reset o con el viejo Vulcan Never
Pinch (o sea, pulsando a la vez ctrl-alt-del). Por supuesto, tampoco
se debera desconectar la corriente. Como en la mayora de sistemas UNIX,
Linux lleva una cache de disco en memoria, lo que aplaza la escritura de los
datos. Es por ello que si se rearranca el sistema sin apagarlo limpiamente,
se puede corromper datos en las unidades, causando un dao impredecible.
La forma ms fcil de apagar el sistema es usar el comando shutdown.
Como ejemplo, para apagar y rearrancar el sistema de forma inmediata, se
usa el siguiente comando como root: # shutdown -r now. Esto apagar
limpiamente el sistema.
Se debe observar, sin embargo, que muchas distribuciones no proporcionan el comando shutdown en el software de instalacin. Esto significa que la
primera vez que se rearranque el sistema despus de la instalacin, se tendr
que hacer uso de la combinacin de teclas ctrl-alt-del. Despus de esto, se
deber usar siempre el comando shutdown.
Despus de que se haya tenido la oportunidad de explorar y usar el sistema,
hay varias opciones de configuracin que se debera revisar. La primera es
crear una cuenta de usuario para el usuario mismo (y, opcionalmente, para el
resto de usuarios que podran tener acceso al sistema). Todo lo que se tiene
que hacer es entrar como root, y ejecutar el programa adduser (algunas veces
useradd); ste ayudar por medio de varias preguntas a crear una nueva cuenta
de usuario.
138
Resolviendo Problemas
Casi todo el mundo se encuentra con algn tipo de problema o cuelgue cuando
intenta instalar Linux por primera vez. La mayora de las veces el problema
se debe a una simple confusin. Otras veces, sin embargo, puede ser algo ms
serio, como una equivocacin de uno de los desarrolladores, o un error del
programa.
139
floppy. Esto puede llevar varios segundos; y puede verse que est sucediendo
pues la luz del floppy permanecer encendida.
Mientras el ncleo arranca, se probarn los dispositivos SCSI. Si el sistema
tiene SCSI, el sistema se bloquear durante unos 15 segundos mientras se
prueban esos dispositivos.
Una vez que el ncleo ha terminado de arrancar, se transfiere el control a
los ficheros de arranque que hay en el disquete.
Finalmente, se ver un prompt de entrada en el sistema, o bien se entrar
en un programa de instalacin.
Cualquier cosa de las comentadas ms arriba puede ser la causa del problema. Sin embargo, es posible que si el sistema se cuelgue realmente durante el
arranque, y eso puede deberse a varias cosas. En primer lugar, puede suceder
que no tenga suficiente RAM para arrancar.
La causa de la mayora de los cuelgues son las incompatibilidades del
hardware. Puede suceder que en lugar de un mensaje de error por falta de
memoria, el sistema se bloquee durante el arranque. Si esto sucede, y no sirve
ninguna recomendacin de las vistas en la seccin anterior, se debe probar
desactivando el disco RAM. Se debe tener en cuenta que Linux requiere por s
mismo un mnimo de 2 megabytes de RAM; y algunas distribuciones necesitan
4 o ms.
El sistema muestra un error como permission denied o file not found
durante el arranque. Esto es seal de que el disquete de instalacin est mal.
Si se intenta arrancar con el disquete, y ste es correcto, no deberan salir
errores de este tipo. Si se cre independientemente el disco de arranque, se
debe probar de rehacerlo para ver si esto soluciona el problema.
El sistema informa del error VFS: Unable to mount root cuando se est
arrancando. Este error indica que el sistema de ficheros raz (que se debe
encontrar en el disquete de arranque), no est. Puede ser que el disquete est
mal o que no est arrancando el sistema de forma correcta.
Si se est seguro que se ha seguido correctamente el procedimiento de
arranque, puede ser que el disquete est corrupto. Es poco corriente, por lo
que deben buscarse otras soluciones antes que intentar usar otro disquete o
cinta.
140
141
por las redes con modo de transferencia ASCII en lugar de binario, lo que
hace inservibles los ficheros obtenidos.
El sistema da errores como device full durante la instalacin. Esto es
un signo claro de que se est intentando instalar Linux sin espacio de disco
suficiente.
La solucin habitual es rehacer los sistemas de ficheros (mediante el comando mke2fs) lo que borrar el software parcialmente instalado. Ahora se puede
reintentar la instalacin, seleccionando menos componentes para instalar. En
otros casos, se puede necesitarse comenzar desde cero, rehaciendo particiones
y sistemas de ficheros.
El sistema informa de errores como read_intr: 0x10 durante los accesos
al disco duro. Esto suele deberse a la presencia de bloques con errores en el
disco. Sin embargo, si se reciben estos errores al utilizar mkswap o mke2fs, el
sistema puede estar teniendo problemas para acceder a su controlador. Puede
ser tanto un problema del hardware como una incorrecta especificacin de la
geometra del disco. Si utiliz la opcin hd=<cylinders>,<heads>,<sectors>
en el momento de arrancar para especificar la geometra de su disco, y lo
hizo incorrectamente, puede encontrarse con estos problemas. Tambin puede
suceder si la informacin de la CMOS acerca de la geometra del disco no es
correcta.
El sistema da errores como file not found o permission denied. Este
problema puede suceder si no estn disponibles todos los ficheros necesarios
en los disquetes de instalacin (vea el prrafo siguiente) o si hay problemas
con los permisos sobre dichos ficheros. Por ejemplo, en algunas distribuciones
de Linux existen bugs rpidamente solucionados en posteriores versiones, relacionados con los permisos. Son errores poco frecuentes. Si se sospecha que la
distribucin tiene bugs, y se est seguro de no haber hecho nada mal, se debe
contactar con el fabricante de la distribucin para informarle del bug.
Si se tiene otros extraos problemas durante la instalacin de Linux (especialmente si el software se ha obtenido va red o mdem), hay que asegurarse
de haber obtenido todos los ficheros necesarios. Por ejemplo, hay usuarios que
utilizan el comando de FTP mget *.* cuando obtienen el software va FTP.
En realidad, este comando slo obtiene todos los ficheros que contengan un
. en el nombre, y no todos lo tienen. El comando correcto a utilizar ser
mget * en vez del anterior.
142
143
6.3
6.3.1
WebSphere
Que es WebSphere?
6.3.2
Plataforma de Software
6.3. WEBSPHERE
145
146
6.3. WEBSPHERE
147
148
Personalizacin sofisticada del B2B para ayudar a administrar las relaciones de negocio.
Tecnologa de ventas asistidas para conducir a los clientes y contratistas
a travs de la agrupacin de requisitos y del proceso de seleccin del
producto.
Herramientas de cooperacin online y de formacin de equipo virtual
para mejorar la eficacia de contratistas comerciales, canal y clientes.
Administracin integrada de contrato para soportar contratos complejos
y polticas de negocio.
Administracin de pedidos anticipado resultando en capacidades de optimizacin de operaciones.
Capacidades multi-culturales para llegar a clientes globales.
Capacidades avanzadas de inteligencia de negocios para decisiones fundamentas del e-business.
6.3. WEBSPHERE
149
150
WebSphere studio:
IBM WebSphere Studio Site Developer.
IBM WebSphere Studio Application Developer.
IBM WebSphere Studio Application Developer Integration Edition.
IBM WebSphere Studio Enterprise Developer.
IBM WebSphere Studio Homepage Builder.
Host Access.
6.3.3
Application Server
6.3. WEBSPHERE
151
Edicin Avanzada:
Proporciona integracin slida a las bases de datos, middleware orientado
a mensajes, y sistemas preexistentes y aplicativos, en conjunto con soporte de
agrupacin. Esta configuracin se ajusta a la mayora de los escenarios de la
empresa e interesa a los negocios que necesitan construir aplicativos altamente
transaccionales, administrables, disponibles y escalables que ofrecen seguridad
distribuida y administracin remota.
152
6.3. WEBSPHERE
153
Servidor HTTP
IBM WebSphere Application Server trabaja con un servidor HTTP para manejar las peticiones de servlets y otros contenidos dinmicos desde las aplicaciones Web.
El servidor HTTP y el servidor de aplicaciones se comunican utilizando
el plug-in HTTP de WebSphere para el servidor HTTP. El plug-in HTTP
utiliza un archivo de configuracin XML de fcil lectura para determinar si la
peticin la debe gestionar el servidor Web o el servidor de aplicaciones. Utiliza
el protocolo HTTP estndar para comunicarse con el servidor de aplicaciones.
Tambin se puede configurar para implementar seguridad en el servidor
HTTP, si fuera necesario. El plug-in HTTP est disponible para los servidores
Web ms conocidos.
Servidor de Aplicaciones
El servidor de aplicaciones colabora con el servidor Web intercambiando peticiones de clientes y respuestas de aplicaciones. Puede definir varios servidores
de aplicaciones, cada uno de ellos ejecutndose en su propia Mquina Virtual
Java (JVM).
Contenedor de EJB
El contenedor de EJB proporciona los servicios de tiempo de ejecucin necesarios para desplegar y gestionar componentes EJB, de ahora en adelante
conocidos como enterprise beans. Es un proceso de servidor que maneja peticiones para beans de sesin y beans de entidad.
154
Los enterprise beans (dentro de los mdulos EJB) instalados en un servidor de aplicaciones no se comunican directamente con el servidor; en su lugar,
el contenedor de EJB ofrece una interfaz entre los enterprise beans y el servidor. Juntos, el contenedor y el servidor proporcionan el entorno de tiempo de
ejecucin del bean.
El contenedor proporciona muchos servicios de bajo nivel, incluido el soporte de hebras y transacciones. Desde un punto de vista administrativo, el
contenedor gestiona el almacenamiento y la recuperacin de datos para los
beans que contiene. Un solo contenedor puede gestionar ms de un archivo
JAR de EJB.
Contenedor Web
Los servlets y los archivos JSP (Java Server Pages) son componentes del servidor que se utilizan para procesar peticiones de clientes HTTP como, por
ejemplo, navegadores Web. Se encargan de la presentacin y el control de
la interaccin del usuario con los datos de aplicacin subyacentes y la lgica
empresarial. Tambin pueden generar datos formateados, como XML, para
que los utilicen otros componentes de aplicacin.
El contenedor Web procesa servlets, archivos JSP y otros tipos de inclusiones de servidor. Los servlets anteriores a J2EE se ejecutarn en un motor
de servlets. Cada contenedor Web contiene automticamente un nico gestor
de sesiones.
Cuando se manejan los servlets, el contenedor Web crea un objeto de
peticin y un objeto de respuesta, e invoca el mtodo de servicio de servlets.
El contenedor Web invoca el mtodo destroy() del servlet cuando corresponda
y descarga el servlet, y despus la JVM ejecuta la recoleccin de basura.
6.3. WEBSPHERE
155
Contenedor de Applets
Un applet es una clase Java de cliente que se ejecuta normalmente en un
navegador Web, pero que tambin se pueden ejecutar en otros dispositivos y
aplicaciones de cliente.
Los applets se utilizan a menudo junto con pginas HTML para mejorar
la experiencia de usuario que ofrece el navegador Web. Tambin se pueden
utilizar para pasar parte de la carga de trabajo de proceso del servidor al
cliente.
El contenedor de applets maneja applets de Java incorporados en documentos HTML (HyperText Markup Language) que residen en una mquina
cliente remota respecto al servidor de aplicaciones. Con este tipo de cliente,
el usuario accede a un bean enterprise en el servidor de aplicaciones mediante
el applet de Java en el documento HTML.
156
6.3.4
6.3. WEBSPHERE
157
158
El ambiente operativo principal debe ser una base confiable que permita de forma segura, transacciones e implementaciones de servicios en la Web
de forma abierta. En otras palabras, debe ser una infraestructura abierta,
basada en servicios, como la proporcionada por la familia del WebSphere Application Server, un mecanismo de alto desempeo, extremadamente escalable
para aplicaciones de e-business dinmicos.
En el caso en que nuevas aplicaciones tengan que ser desarrolladas, estas
necesitan ser creadas de forma que capturen el conocimiento de negocio de
forma eficaz, y construidas para integrarse, de manera que se ajusten rpidamente al ambiente existente, y a impulsarlo. Esta capacidad de desarrollo de
aplicaciones es proporcionada por la familia WebSphere Studio.
Las inversiones existentes en sistemas y aplicaciones, tan dispares cuanto
puedan ser, deben ser utilizadas por el e-business para bajar costos y preservar
inversiones. Esta capacidad de modernizacin de la empresa es proporcionada
por herramientas especializadas de desarrollo de la familia WebSphere Studio
y a travs de la familia WebSphere Host Integration, que es software destinado
a impulsar y extender los activos legados para nuevas soluciones de e-business.
El WebSphere Host Integration Solution puede llevar sus aplicativos preexistentes a la Web, rpidamente! extiende los aplicativos de host a la Web
y proporciona software para la creacin y diseminacin de nuevos aplicativos para host de acceso a e-business, sin necesidad de cambios a los propios
6.3. WEBSPHERE
159
aplicativos existentes.
Tanto si se necesita una simple entrega de pgina Web, darle un nuevo aspecto a un aplicativo preexistente, o crear soluciones Java sofisticadas, el IBM
WebSphere Host Integration Solution permite rpida y flexiblemente integrar
datos crticos de la empresa la Web.
El WebSphere Host Publisher proporciona la manera ms rpida, ms fcil
para implementar e-business mediante la ampliacin del alcance de aplicativos
a los usuarios de browsers en la web y nuevos aplicativos WebSphere, sin alteraciones a aplicativos existentes. Amplio soporte a aplicativos preexistentes
y escalabilidad, seguridad, y caractersticas de disponibilidad, hacen del Host
Publisher la solucin ideal para diseminaciones de nuevos e-business. Tanto
si su objetivo es coste menor o mayores ganancias a travs de diseminaciones
Web-to-Host o a travs del desarrollo de nuevos aplicativos para e-business.
Las caractersticas clave son:
Proporciona integracin Web con Terminal Virtual 3270, 5250(VT), Java
Database Connectivity (JDBC) y aplicativos Java host sin necesidad de
cambios al propio aplicativo existente.
Permite la fcil consolidacin de mltiples aplicativos en un aplicativo
compuesto nico o pgina Web para presentacin a usuarios de la Web.
Se integra con la Edicin Avanzada del WebSphere Application Server
e incluye el WebSphere Studio para proporcionar una solucin completa
para la entrega de datos del host a usuarios de la Web y para nuevos
aplicativos WebSphere para e-business.
Opera con el Websphere Transcoding Publisher para extender datos del
host a tecnologas penetrantes como los dispositivos SmartPhone y asistentes digitales personales.
Proporciona una amplia gama de opciones de acceso al Host: HTML a
browsers de la Web, XML Gateway para aplicativos Java, y Host Publisher Integration Objects reutilizables para aplicativos de Java applets
aplicativos.
Ayuda a impulsar la inversin en Host Publisher utilizando objetos de
integracin basados en estndares abiertos de la industria que se pueden
reutilizar en nuevos aplicativos de e-business, reduciendo el coste y los
riesgos asociados al desarrollo de nuevos aplicativos.
160
Puede ser implementado sin programacin utilizando una simple interface grfica del tipo wizard (asistente).
Remote Integration Objects (RIO) permite que Integration Objects sean
ejecutados en el servidor Host Publisher para ser accedido por aplicativos
con tecnologa Java siendo ejecutados en cualquier lugar de la red.
El XML Gateway torna datos existentes de aplicativos de host disponibles para aplicativos cliente o Business Partner Java en un formato
XML.
El 3270/5250 HTML Mapper proporciona un emulador HTML de nivel
de entrada load-and-go dentro de una ventana de browser de la Web.
6.3.5
6.3. WEBSPHERE
161
6.4
6.4.1
Servlet
Desarrollando Servlets
Los servlets son programas de Java que construyen respuestas dinmicas para
el cliente, tal como pginas Web. Los servlets reciben y responden a las
demandas de los clientes Web, normalmente por HTTP.
Los servlets son ms eficientes que los programas (CGI) porque son cargados de una sola vez en la memoria, y cada demanda es manejada por un hilo
de la mquina virtual de Java, no por el sistema operativo.
Adems los servlets son escalables, dando soporte para una multi-aplicacin
de configuracin del servidor. [?, IBM Press]
Permiten utilizar datos cach, acceso a informacin de base de datos, y
compartir datos con otro servlets, archivos JSP y (en algunos ambientes) con
los bean empresariales.
6.4. SERVLET
163
164
Instanciacin e Inicializacin
El motor del servlet (la funcin del Servidor de Aplicaciones que procesa servlets, archivos JSP, y otros tipos de server-side incluyendo codificacin) crea
una instancia del servlet. El motor del servlet crea el objeto de configuracin
del servlet y lo usa para pasar los parmetros de inicializacin del servlet al
mtodo INIT. La inicializacin de los parmetros persiste hasta que el servlet se destruye y es aplicada a todas las invocaciones de ese servlet hasta
destruirse.
Si la inicializacin tiene xito, el servlet est disponible para el servicio. Si
la inicializacin falla, el motor del servlet descarga el servlet. El administrador
puede inhabilitar una aplicacin y el servlet para el servicio. En tales casos,
la aplicacin y el servlet permanecen inhabilitados hasta que el administrador
los habilite.
Servicio de Demanda
Una demanda del cliente llega al servidor de aplicaciones. El motor del servlet
crea un objeto demanda y un objeto respuesta. El motor del servlet invoca
al mtodo de servicio del servlet, procesa el requerimiento y usa mtodos del
objeto respuesta para crear la respuesta para el cliente.
El mtodo de servicio recibe informacin sobre el requerimiento del objeto
demanda, procesa el requerimiento, y usa los mtodos del objeto respuesta
para crear la contestacin para el cliente. El mtodo de servicio puede invocar
otros mtodos para procesar el requerimiento, tales como doGet (), doPost (),
o mtodos del usuario.
6.4. SERVLET
165
166
6.4. SERVLET
167
Procesadores JSP
Cada procesador de JSP es un servlet que se puede adherir a una aplicacin
Web para manejar todos los requerimientos JSP pertenecientes a la misma.
168
Cuando se instala el Application Server en un servidor Web, la configuracin del servidor Web pasa los requerimientos HTTP para los archivos JSP
(archivos con la extensin .jsp) al Application Server.
El procesador de JSP crea y compila un servlet desde cada archivo JSP.
El procesador produce estos archivos para cada JSP:
Archivos Java que contienen el cdigo del lenguaje Java para el servlet.
Archivos de clase que se compilan en el servlet.
El procesador de JSP pone los archivos .java, y .class en un camino especfico al procesador. Los archivos .java y .class tienen el mismo nombre de
archivos. El procesador usa una convencin de denominacin que incluye el
agregado de subrayado de los caracteres y un sufijo para el nombre del archivo
JSP.
Por ejemplo, si el nombre del archivo JSP es simple.jsp, los archivos generados son: _simple_xjsp.java y _simple_xjsp.class.
Como todos los servlets, un servlet generado desde un archivo JSP se extiende desde javax.servlet.http.HttpServlet. El cdigo Java de servlet contiene
declaraciones de importacin para las clases necesarias y una declaracin de
paquete, si la clase del servlet es parte de un paquete.
Si el archivo JSP contiene sintaxis de JSP (como directivas y scriptlets), el
procesador de JSP convierte la sintaxis de JSP al cdigo Java equivalente. Si
el archivo JSP contiene etiquetas HTML, el procesador agrega el cdigo Java
a fin de que el servlet realice la salida de HTML carcter por carcter.
6.4. SERVLET
169
supervisar la compilacin de los archivos JSP para cambios, y automticamente compilar y recargar los archivos JSP, siempre que el servidor de aplicaciones descubra que el archivo JSP ha cambiado. Modificando este proceso,
se puede ahorrar tiempo y recursos consumidos por las compilaciones y asegurar que se tenga el control de la compilacin de los archivos JSP. Tambin es
til como una manera rpida al sincronizar todos los archivos JSP para una
aplicacin.
Desarrollando Aplicaciones
Para WebSphere Application Server, las aplicaciones son combinaciones de
bloques que trabajan conjuntamente para el logro de una funcin de la lgica
comercial. Las aplicaciones Web son grupos de uno o ms servlets, ms el
contenido esttico.
Aplicaciones Web = servlets + archivos JSP + archivos XML + archivos
HTML + grficos.
El modelo de programacin de WebSphere Application Server est basado
en la plataforma Java de Sun (J2SE). El ambiente J2SE soporta la base para
construir redes centrales de aplicaciones empresariales para correr sobre una
variedad de sistemas. El software J2SE consiste en los Java SDK Standard
Edition y el Java Runtime Environment (JRE) Standard Edition.
Fases de Inicializacin y de Terminacin
Un motor del servlet crea una instancia de un servlet en los siguientes momentos:
Automticamente en el arranque de la aplicacin, si esa opcin se configura para el servlet.
En la primera demanda del cliente para el servlet despus del arranque
de la aplicacin.
Cuando el servlet se vuelve a cargar.
El mtodo INIT ejecuta slo una vez durante la vida del servlet. Ejecuta
cuando el motor del servlet carga el servlet. Con el Application Server se
170
6.4. SERVLET
171
Para aplicaciones que requieren modelado complejo sobre el nodo del servidor de aplicacin Web, no es fcil definir la granularidad de servlets y cmo
interactan los servlets. Pero sin un buen diseo para el servlets y JSP es
difcil mantener la aplicacin.
Adems en la fase del anlisis de un proyecto, usa casos y diagramas de
transicin de estados ampliamente usados para describir el resultado de la fase
del anlisis. Podra ser til trazar esos resultados en el diseo e implementacin
de la fase.
En un caso se puede contemplar el servlet como el evento central y procesa
todas las demandas del cliente. Ejecuta la accin necesaria para ese evento
y enva el requerimiento a uno (de muchos) JavaServer Page por desplegar el
resultado. Usando esta solucin, puede ser difcil de desarrollar ese servlet.
As como es responsable para un conjunto de casos de uso, se puede tener que
llevar a cabo mucha lgica en ese servlet.
En otro caso se puede tener tantos servlets como JavaServer Pages y encadenarlos. Esto significa que un servlet obtiene un requerimiento, ejecuta la
accin correcta, y llama al JavaServer Page especfico para ese servlet, para
desplegar el resultado. Un requerimiento de ese JSP entonces obtiene otro servlet, y as sucesivamente. Ser difcil mantener muchos servlets y JSP, puede
confundirse al intentar entender el flujo de la aplicacin.
Una solucin que tiene una granularidad entre esos extremos es dividiendo la aplicacin en estados diferentes. Se intenta transferir un diagrama de
transicin de estados (por ejemplo, modelado con RationalRose) en pginas
HTML, servlets y JavaServer Pages.
Applicabilidad.
Este modelo puede usarse en toda aplicacin servlet /JSP. Es recomendable este modelo sobre todo en las aplicaciones Web complejas donde muchas
pginas Web y transiciones de pginas tienen que ser desarrolladas.
Componentes.
Los componentes en esta estructura son:
172
6.4. SERVLET
173
Pensando sobre cada interaccin entre el navegador y el servidor de aplicaciones Web (por ejemplo, el servlet) como una sola unidad de trabajo, de
slo lectura o de actualizacin. Hay dos flujos bsicos de modelos de control,
ambos, llevado a cabo por el servlet. Uno se ocupa del despliegue para un
estado dado, y el otro maneja las acciones que causan un cambio de estado.
Despliegue de Patrones.
Este modelo normalmente se manifiesta dentro de HTML como un link,
resultando en un requerimiento Get. El flujo de control para este modelo es:
El servlet invoca el mtodo apropiado de slo lectura en el modelo
de estado (ese es el wrapper de la tarea) y selecciona el JSP para
ocuparse del resultado.
El servlet inicializa el objeto de datos asociado con el JSP, carga el
resultado y coloca la vista del bean en un atributo HttpRequest.
El servlet remite la demanda al JSP escogido.
La Pgina de JavaServer genera el cdigo del HTML.
El servlet enva el requerimiento al JSP seleccionado.
El JSP genera el cdigo HTML.
Vistas.
Las vistas se implementan como un JSP.
Cosecuencias.
Usando este modelo, es posible conseguir un acercamiento bueno para disear una aplicacin Web, mediante la utilizacin de servlets, JSPs, wrapper
de tareas y pginas HTML.
6.5
6.5.1
JAVA
Introduccin al Lenguaje
6.5. JAVA
175
176
Comunicacin de datos.
Acceso a la red Internet.
Acceso a bases de datos.
Interfaces grficas.
La interfaz de programacin de estas clases es estndar, es decir en todas
ellas las operaciones se invocan con el mismo nombre y los mismos argumentos.
Java es Multiplataforma
Los programas en Java pueden ejecutarse en cualquiera de las siguientes plataformas, sin necesidad de hacer cambios:
Windows/95 y /NT.
Power/Mac.
Unix (Solaris, Silicon Graphics, ...).
La compatibilidad es total:
A nivel de fuentes: el lenguaje es exactamente el mismo en todas las
plataformas.
A nivel de bibliotecas: en todas las plataformas estn presentes las mismas
bibliotecas estndares.
A nivel del cdigo compilado: el cdigo intermedio que genera el compilador
es el mismo para todas las plataformas. Lo que cambia es el intrprete del
cdigo intermedio.
6.5. JAVA
177
178
179
6.6
180
menus.setTitle(Simulacin de Redes);
menus.setVisible(true);
}
}
Aparece una clase que contiene el programa principal Simu (aquel que
contiene la funcin main()) y algunas clases de usuario (las especficas de
la aplicacin que se est desarrollando) que son utilizadas por el programa
principal. La aplicacin se ejecuta por medio del nombre de la clase que
contiene la funcin main(). Las clases de Java se agrupan en packages, que
son libreras de clases. Si las clases no se definen como pertenecientes a un
package, se utiliza un package por defecto (default) que es el directorio activo.
6.6.1
Conceptos Bsicos
Clase
Una clase es una agrupacin de datos (variables o campos) y de funciones
(mtodos) que operan sobre esos datos. A estos datos y funciones pertenecientes a una clase se les denomina variables y mtodos o funciones miembro. La
programacin orientada a objetos se basa en la programacin de clases [?, Joyanes]. Un programa se construye a partir de un conjunto de clases.
Una vez definida e implementada una clase, es posible declarar elementos
de esta clase de modo similar a como se declaran las variables del lenguaje (int,
double, String). Los elementos declarados de una clase se denominan objetos
de la clase. De una nica clase se pueden declarar o crear numerosos objetos.
La clase es lo genrico: es el patrn o modelo para crear objetos. Cada objeto
tiene sus propias copias de las variables miembro, con sus propios valores, en
general distintos de los dems objetos de la clase. Las clases pueden tener
variables static, que son propias de la clase y no de cada objeto [?, Bosz].
Ejemplo:
181
public FuncionActivacion () {
}
}
Herencia
La herencia permite que se puedan definir nuevas clases basadas en clases
existentes, lo cual facilita reutilizar cdigo previamente desarrollado. Si una
clase deriva de otra (extends) hereda todas sus variables y mtodos. La clase
derivada puede aadir nuevas variables y mtodos y/o redefinir las variables
y mtodos heredados.
En Java, a diferencia de otros lenguajes orientados a objetos, una clase slo
puede derivar de una nica clase, con lo cual no es posible realizar herencia
mltiple en base a clases. Sin embargo es posible simular la herencia mltiple
en base a las interfaces.
Interface
Una interface es un conjunto de declaraciones de funciones. Si una clase implementa (implements) una interface, debe definir todas las funciones especificadas por la interface. Una clase puede implementar ms de una interface,
representando una forma alternativa de la herencia mltiple.
Una interface puede derivar de otra o incluso de varias interfaces, en cuyo
caso incorpora todos los mtodos de las interfaces de las que deriva.
Ejemplo: La clase TangenteHiperblica se extiende de la clase FuncinActivacin que implementa la interface Serializable.
/*funcin de activacin tangente hiperblica */
public class TangenteHiperbolica extends FuncionActivacion implements Serializable{
/*constructor sin argumentos */
public TangenteHiperbolica () {
}
}
182
Package
Un package es una agrupacin de clases. Existen una serie de packages incluidos en el lenguaje.
Adems el programador puede crear sus propios packages. Todas las clases
que formen parte de un package deben estar en el mismo directorio.
Los packages se utilizan con las siguientes finalidades:
1. Para agrupar clases relacionadas.
2. Para evitar conflictos de nombres. En caso de conflicto de nombres
entre clases importadas, el compilador obliga a cualificar en el cdigo los
nombres de dichas clases con el nombre del package.
3. Para ayudar en el control de la accesibilidad de clases y miembros.
Por las razones citadas, durante la etapa de Diseo del Software desarrollado, se ha decido crear dos paquetes, calculos e interfase, utilizando la sentencia
package.
package myprojects.simu;
import myprojects.calculos.*;
import myprojects.interfase.*;
183
6.6.2
Una variable en Java es un identificador que representa una palabra de memoria que contiene informacin. El tipo de informacin almacenado en una
variable slo puede ser del tipo con que se declar esa variable.
En Java hay dos tipos principales de variables:
1. Variables de tipos primitivos. Estn definidas mediante un valor nico
y almacenan directamente ese valor siempre que pertenezca al rango de
ese tipo. Por ejemplo una variable int almacena un valor entero como
1, 2, 0, -1, etc. Esto significa que al asignar una variable entera a otra
variable entera, se copia el valor de la primera en el espacio que ocupa
la segunda variable.
2. Variables referencia. Las variables referencia son referencias o nombres
de una informacin ms compleja: arrays u objetos de una determinada
clase. Una referencia a un objeto es la direccin de un rea en memoria
destinada a representar ese objeto. El rea de memoria se solicita con
el operador new. Al asignar una variable de tipo referencia a objeto a
otra variable se asigna la direccin y no el objeto referenciado por esa
direccin. Esto significa que ambas variables quedan referenciando el
mismo objeto. En Java una variable no puede almacenar directamente
un objeto, como ocurre en C y C++. Por lo tanto cuando se dice en
Java que una variable es un string, lo que se quiere decir en realidad es
que la variable es una referencia a un string.
Desde el punto de vista de su papel dentro del programa, las variables
pueden ser:
184
1. Variables miembro de una clase: Se definen en una clase, fuera de cualquier mtodo; pueden ser tipos primitivos o referencias.
2. Variables locales: Se definen dentro de un mtodo o ms en general
dentro de cualquier bloque entre llaves {}. Se crean en el interior del
bloque y se destruyen al finalizar dicho bloque. Pueden ser tambin tipos
primitivos o referencias.
En la tabla 6.1 de la pgina 184 se muestra una declaracin, el nombre de
la variable introducida y el tipo de informacin que almacena la variable.
Declaracin
int i;
String s;
int a [];
int[]b;
Identificador
i
s
a
b
Tipo
entero
referencia a string
referencia a arreglo de enteros
referencia a arreglo de enteros
Referencias a Objetos
Strings
Arreglos
otros objetos
Tipo
int
short
byte
long
boolean
char
float
double
Bits
32
16
8
64
1
16
32
64
Rango
231 ..231 1
215 ..215 1
27 ..27 1
263 ..263 1
n/a
n/a
IEEE
IEEE
185
Ejemplos
0,1,5,-120,...
0,1,5,-120,...
0,1,5,-120,...
0,1,5,-120,...
false, true
a,A,0,*,...
1.2
1.2
186
de una clase B derivada de otra A, tienen acceso a todas las variables miembro de A declaradas como public o protected, pero no a las declaradas como
private. Una clase derivada slo puede acceder directamente a las variables y
funciones miembro de su clase base declaradas como public o protected. Otra
caracterstica del lenguaje es que es posible declarar una variable dentro de un
bloque con el mismo nombre que una variable miembro, pero no con el nombre de otra variable local. La variable declarada dentro del bloque oculta a la
variable miembro en ese bloque. Para acceder a la variable miembro oculta
ser preciso utilizar el operador this.
Uno de los aspectos ms importantes en la programacin orientada a objetos (OOP) es la forma en la cual son creados y eliminados los objetos. La
forma de crear nuevos objetos es utilizar el operador new. Cuando se utiliza
el operador new, la variable de tipo referencia guarda la posicin de memoria
donde est almacenado este nuevo objeto. Para cada objeto se lleva cuenta
de por cuntas variables de tipo referencia es apuntado. La eliminacin de
los objetos la realiza el denominado garbage collector, quien automticamente
libera o borra la memoria ocupada por un objeto cuando no existe ninguna
referencia apuntando a ese objeto. Lo anterior significa que aunque una variable de tipo referencia deje de existir, el objeto al cual apunta no es eliminado
si hay otras referencias apuntando a ese mismo objeto.
6.6.3
Operadores en Java
Java es un lenguaje rico en operadores, que son casi idnticos a los de C/C++.
Estos operadores se describen brevemente a continuacin.
Operadores Aritmticos
Son operadores binarios (requieren siempre dos operandos) que realizan las
operaciones aritmticas habituales: suma (+), resta (-), multiplicacin (*),
divisin (/) y resto de la divisin (%).
Operadores de Asignacin
Los operadores de asignacin permiten asignar un valor a una variable. El
operador de asignacin por excelencia es el operador igual (=). La forma
187
Utilizacin
op1 + = op2
op1 - = op2
op1 * = op2
op1 / = op2
op1% = op2
ExpresinEquivalente
op1 = op1 + op2
op1 = op1 - op2
op1 = op1 * op2
op1 = op1 / op2
op1 = op1 % op2
Operadores Unarios
Los operadores ms (+) y menos (-) unarios sirven para mantener o cambiar
el signo de una variable, constante o expresin numrica. Su uso en Java es
el estndar de estos operadores.
Operadores Incrementales
Java dispone del operador incremento (++) y decremento (). El operador
(++) incrementa en una unidad la variable a la que se aplica, mientras que ()
la reduce en una unidad. Estos operadores se pueden utilizar de dos formas:
1. Precediendo a la variable (por ejemplo: ++i). En este caso primero se
incrementa la variable y luego se utiliza (ya incrementada) en la expresin en la que aparece.
188
Operadores Relacionales
Los operadores relacionales sirven para realizar comparaciones de igualdad,
desigualdad y relacin de menor o mayor. El resultado de estos operadores
es siempre un valor boolean (true o false) segn se cumpla o no la relacin
considerada. La siguiente tabla 6.5 de la pgina 188 muestra los operadores
relacionales de Java.
Operador
>
>=
<
<=
==
! =
Utilizacin
op1 > op2
op1 >= op2
op1 < op2
op1 <= op2
op1 == op2
op1 != op2
El resultado es true
si op1 es mayor que op2
si op1 es mayor o igual que op2
si op1 es menor que op 2
si op1 es menor o igual que op2
si op1 y op2 son iguales
sio p1 y op2 son diferentes
189
Se observa que el operador de concatenacin se utiliza dos veces para construir la cadena de caracteres que se desea imprimir. Las variables imprimoErrror, imprimoIteraciones, horaInicial, horaFinal son convertidas en cadena
de caracteres para poder concatenarlas.
190
Precedencia de Operadores
El orden en que se realizan las operaciones es fundamental para determinar
el resultado de una expresin. Por ejemplo, el resultado de x/y*z depende de
qu operacin (la divisin o el producto) se realice primero. La tabla 6.6 de
la pgina 190 muestra el orden en que se ejecutan los distintos operadores en
una sentencia, de mayor a menor precedencia.
Nombre
Postfijos
Unarios
De creacin
Multiplicativo
Adicin
Shift
Relacional
Igualdad
AND
Or Excluyente
Or Incluyente
Logico AND
Logico OR
Condicional
Asignacin
Sintxis
[ ] .(params) expr++ expr++expr expr +expr -expr !
(type) expr
*/%
+<< >> >>>
<> <= >= instanceof
== ! =
&
^
|
&&
||
?:
= += -= *= /= %= &= ^= |= <<= >>= >>>=
Tabla 6.6: Precedencia de Operadores.
En Java, todos los operadores binarios, excepto los operadores de asignacin, se evalan de izquierda a derecha. Los operadores de asignacin se
evalan de derecha a izquierda, lo que significa que el valor de la izquierda se
copia sobre la variable de la derecha.
6.6.4
Estructuras de Programacin
Las estructuras de programacin o estructuras de control permiten tomar decisiones y realizar un proceso repetidas veces. Son los denominados bifurcaciones y bucles. En la mayora de los lenguajes de programacin, este tipo de
191
Sentencias o Expresiones
Una expresin es un conjunto variables unidos por operadores. Son rdenes
que se le dan al computador para que realice una tarea determinada.
Una sentencia es una expresin que acaba en punto y coma (;). Se permite
incluir varias sentencias en una lnea, aunque lo habitual es utilizar una lnea
para cada sentencia. A continuacin se muestra un ejemplo de una lnea
compuesta de tres sentencias:
i = 0; j = 5; x = i + j;
Comentarios
Existen dos formas diferentes de introducir comentarios entre el cdigo de Java
(en realidad son tres, como pronto se ver). Son similares a la forma de realizar comentarios en el lenguaje C/C++. Los comentarios son tremendamente
tiles para poder entender el cdigo utilizado, facilitando de ese modo futuras
revisiones y correcciones. Adems permite que cualquier persona distinta al
programador original pueda comprender el cdigo escrito de una forma ms
rpida. Se recomienda acostumbrarse a comentar el cdigo desarrollado. De
esta forma se simplifica tambin la tarea de estudio y revisin posteriores.
Java interpreta que todo lo que aparece a la derecha de dos barras //
en una lnea cualquiera del cdigo es un comentario del programador y no
lo tiene en cuenta. El comentario puede empezar al comienzo de la lnea o
a continuacin de una instruccin que debe ser ejecutada. La segunda forma
de incluir comentarios consiste en escribir el texto entre los smbolos /* */
. Este segundo mtodo es vlido para comentar ms de una lnea de cdigo.
Por ejemplo:
// Esta lnea es un comentario
int a=1; // Comentario a la derecha de una sentencia
192
Las llaves {} sirven para agrupar en un bloque las sentencias que se han
de ejecutar, y no son necesarias si slo hay una sentencia dentro del if.
193
Bifurcacin If Else
Anloga a la anterior, de la cual es una ampliacin. Las sentencias incluidas
en el else se ejecutan en el caso de no cumplirse la expresin de comparacin
(false),
Ejemplo:
public double decirSalidaActual(int indiceEtapa) {
if(pila != null)
{return pila[indiceEtapa];}
else
{System.out.println(Fallo: Pila no creada);
return 0;
}
}
Bucles
Un bucle se utiliza para realizar un proceso repetidas veces. Se denomina
tambin lazo o loop. El cdigo incluido entre las llaves {} (opcionales si el
proceso repetitivo consta de una sola lnea), se ejecutar mientras se cumpla
unas determinadas condiciones. Hay que prestar especial atencin a los bucles
infinitos, hecho que ocurre cuando la condicin de finalizar el bucle (booleanExpression) no se llega a cumplir nunca. Se trata de un fallo muy tpico,
habitual sobre todo entre programadores poco experimentados.
Bucle While En el siguiente ejemplo se muestra que se ejecutar la sentencia fin++ mientras la expresin (capas.charAt(fin)!=, && capas.charAt(fin)!=1) sea verdadera.
for (int j=0; j < numeroCapas; j++)
{int fin = principio;
try {
while (capas.charAt(fin) != , && capas.charAt(fin) != -1)
194
{fin++;
}
}
}
do{
/* calcular el gradiente del vector fijar el vector de diseo */
problema.fijoVector(vectorDis);
/* incrementar el contador de iteraciones*/
step++;
} while (error > errorDeseado && step < iteracionesMaximas);
195
Bloque Try{...} Catch{...} Finally{...} Java incorpora en el propio lenguaje la gestin de errores. El mejor momento para detectar los errores es
durante la compilacin. Sin embargo prcticamente slo los errores de sintaxis son detectados en esta operacin. El resto de los problemas surgen durante
la ejecucin de los programas.
En el lenguaje Java, una Exception es un cierto tipo de error o una condicin anormal que se ha producido durante la ejecucin de un programa.
Algunas excepciones son fatales y provocan que se deba finalizar la ejecucin
del programa. En este caso conviene terminar ordenadamente y dar un mensaje explicando el tipo de error que se ha producido. Otras excepciones, como
por ejemplo no encontrar un fichero en el que hay que leer o escribir algo,
pueden ser recuperables. En este caso el programa debe dar al usuario la
oportunidad de corregir el error (dando por ejemplo un nuevo path del fichero
no encontrado).
Los errores se representan mediante clases derivadas de la clase Throwable,
pero los que tiene que chequear un programador derivan de Exception (java.lang.Exception que a su vez deriva de Throwable). Existen algunos tipos
de excepciones que Java obliga a tener en cuenta. Esto se hace mediante el
uso de bloques try, catch y finally.
El cdigo dentro del bloque try est vigilado: Si se produce una situacin
anormal y se lanza como consecuencia una excepcin, el control pasa al bloque
196
catch que se hace cargo de la situacin y decide lo que hay que hacer. Se pueden
incluir tantos bloques catch como se desee, cada uno de los cuales tratar un
tipo de excepcin. Finalmente, si est presente, se ejecuta el bloque finally,
que es opcional, pero que en caso de existir se ejecuta siempre, sea cual sea el
tipo de error.
En el caso en que el cdigo de un mtodo pueda generar una Exception
y no se desee incluir en dicho mtodo la gestin del error (es decir los bucles
try/catch correspondientes), es necesario que el mtodo pase la Exception al
mtodo desde el que ha sido llamado. Esto se consigue mediante la adicin de
la palabra throws seguida del nombre de la Exception concreta, despus de la
lista de argumentos del mtodo. A su vez el mtodo superior deber incluir
los bloques try/catch o volver a pasar la Exception. De esta forma se puede ir
pasando la Exception de un mtodo a otro hasta llegar al ltimo mtodo del
programa, el mtodo main().
6.6.5
Clases en Java
Las clases son el centro de la Programacin Orientada a Objetos (OOP Object Oriented Programming). Algunos conceptos importantes de la POO
son los siguientes:
1. Encapsulacin: Las clases pueden ser declaradas como pblicas (public)
y como package (accesibles slo para otras clases del package). Las
variables miembro y los mtodos pueden ser public, private, protected
y package. De esta forma se puede controlar el acceso y evitar un uso
inadecuado.
2. Herencia: Una clase puede derivar de otra (extends), y en ese caso hereda
todas sus variables y mtodos. Una clase derivada puede aadir nuevas
variables y mtodos y/o redefinir las variables y mtodos heredados.
3. Polimorfismo: Los objetos de distintas clases pertenecientes a una misma
jerarqua o que implementan una misma interface pueden tratarse de
una forma general e individualizada, al mismo tiempo. Esto facilita la
programacin y el mantenimiento del cdigo.
197
198
La Clase Object
Como ya se ha dicho, la clase Object es la raz de toda la jerarqua de clases
de Java. Todas las clases de Java derivan de Object.
La clase Object tiene mtodos interesantes para cualquier objeto que son
heredados por cualquier clase. Entre ellos se pueden citar los siguientes:
1. Mtodos que pueden ser redefinidos por el programador:
clone(): Crea un objeto a partir de otro objeto de la misma clase. El
mtodo original heredado de Object lanza una CloneNotSupportedException. Si se desea poder clonar una clase hay que implementar
la interface Cloneable y redefinir el mtodo clone(). Este mtodo
debe hacer una copia miembro a miembro del objeto original. No
debera llamar al operador new ni a los constructores.
equals(): Indica si dos objetos son o no iguales. Devuelve true si
son iguales, tanto si son referencias al mismo objeto como si son
objetos distintos con iguales valores de las variables miembro.
toString(): Devuelve un String que contiene una representacin del
objeto como cadena de caracteres, por ejemplo para imprimirlo o
exportarlo.
finalize(): Este mtodo ya se ha visto al hablar de los finalizadores.
2. Mtodos que no pueden ser redefinidos (son mtodos final ):
getClass(): Devuelve un objeto de la clase Class, al cual se le
pueden aplicar mtodos para determinar el nombre de la clase, su
199
Captulo 7
Software de Base
7.1
Globus Toolkit
Antes de comenzar la instalacin se han tenido en cuenta las siguientes consideraciones en cuento:
Hardware
El Globus Toolkit 3 a instalar est creado sobre Java y cdigo C para UNIX.
Por tanto se requerir de un hardware capaz de ejecutar esta plataforma. En
nuestro caso se ha optado por un PC basado en arquitectura Pentium con un
sistema operativo Linux. Considerando un espacio en disco de al menos 512
Mb.
Software
Globus Toolkit 4 tiene unas dependencias de software importantes. Para su
instalacin y ejecucin, la mquina necesita el software JDK 1.3.1 o superior,
recomendando disponer de la versin 1.4 como el usado en esta documentacin.En ambos casos, la raz del directorio del JDK ser referenciado por la
variable $JAVA_HOME.
Otro software necesario es Jakarta Ant 1.5 o superior, referenciando la raz
de su directorio en el sistema mediante la variable $ANT_HOME, y Jakarta
ORO. Jakarta Ant es un software imprescindible en la instalacin, que permite
crear y usar ficheros makefiles complejos y puede ser usado tanto en UNIX
como en Windows.
201
202
7.1.1
Instalacin
203
204
7.2. SIMPLE CA
7.2
205
Simple CA
Una ves finalizada la instalacin del Globus Toolkit se debe llevar a cabo los
paso necesario para lograr la seguridad en nuestro grid.
Se utiliza como mtodo de seguridad al Simple CA. Consiste en certificar
usuarios y hosts del Grid mediante una Autoridad Certificante (AC). Esto es,
cada host y usuario que deseen utilizar algn servicio del Grid del proyecto
debe generar un certificado propio el cual ser firmado por la AC del proyecto.
La AC es un sistema de control centralizado para administrar certificados
digitales. Cada AC firma su propio certificado y ste es distribuido de manera
confiable.
Cada certificado posee:
Nombre (identifica a la persona o al objeto que el certificado representa)
Clave Pblica (perteneciente a la persona u objeto)
Identidad de la AC (que certifica que la clave pblica y la identidad
de la persona u objeto son correctas)
Firma digital de la AC
Cmo obtener un certificado?:
El usuario/host genera su propia clave pblica y privada con un
programa provisto por la AC
El usuario/host le enva a la AC las clave pblica generada para
que sta la firme
La AC:
confirma la identidad del usuario/host.
firma el certificado.
enva el certificado firmado al usuario/host.
Luego el usuario con estos certificados puede acceder a todos los servicios
del Grid a travs de un solo punto de validacin.
Cmo funciona GSI (Infraestructura de Seguridad del Grid)?:
206
7.2. SIMPLE CA
207
CertificateAuthoritySetup
208
/home/globus/.globus/simpleCA/
7.2. SIMPLE CA
CA setup complete.
209
210
$GLOBUS_LOCATION/sbin/gpt-build \
/home/globus/.globus/simpleCA/
globus_simple_ca_fc935898_setup-0.18.tar.gz
$GLOBUS_LOCATION/sbin/gpt-postinstall
*********************************************************
setup-ssl-utils: Complete
2. Finalizar como usuario ROOT la configuracin del GSI
globus$ su -
7.2. SIMPLE CA
211
212
Actores
root (de la AC).
globus (usuario administrador de la AC).
usuario (mcarri).
Pasos en comn para certificar Usuarios o Hosts 1. Como usuario
GLOBUS del host master pedir a la AC el script para generar claves (en este
caso como se tiene acceso a la AC se copia remotamente).
2. Instalar el programa certificador en el host master.
/opt/gt4/sbin/gpt-build globus_simple_ca_fc935898_setup-0.18.tar.gz
/opt/gt4/sbin/gpt-postinstall
running /opt/gt4/setup/globus/./setup-ssl-utils.fc935898..
[ Changing to /opt/gt4/setup/globus/. ]
setup-ssl-utils: Configuring ssl-utils package
Running setup-ssl-utils-sh-scripts...
*********************************************************
Note: To complete setup of the GSI software you need to run the
following script AS ROOT to configure your security configuration
directory:
/opt/gt4/setup/globus_simple_ca_fc935898_setup/setup-gsi
For further information on using the setup-gsi script, use the -help
option. The -default option sets this security configuration to be
the default, and -nonroot can be used on systems where root access is
not available.
*********************************************************
7.2. SIMPLE CA
213
setup-ssl-utils: Complete
..Done
WARNING: The following packages were not set up correctly:
globus_simple_ca_fc935898_setup-noflavor-pgm
Check the package documentation or run postinstall -verbose to see
what happened
3. Completar la configuracin como usuario ROOT.
su /opt/gt4/setup/globus_simple_ca_fc935898_setup/setup-gsi
setup-gsi: Configuring GSI security
Making /etc/grid-security...
mkdir /etc/grid-security
Making trusted certs directory: /etc/grid-security/certificates/
mkdir /etc/grid-security/certificates/
Installing /etc/grid-security/certificates//grid-security.conf.fc935898...
Running grid-security-config...
Installing Globus CA certificate into trusted CA certificate directory...
Installing Globus CA signing policy into trusted CA certificate directory...
setup-gsi: Complete
4. Certificacin del HOST master como usuario ROOT.
4.1. Como usuario ROOT en el host master ejecutar:
grid-cert-request -host master
A private host key and a certificate request has been generated
with the subject:
214
/O=Grid/OU=GlobusTest/OU=simpleCA-lsc.dc.uba.ar/CN=host/master
The private key is stored in /etc/grid-security/hostkey.pem
The request is stored in /etc/grid-security/hostcert_request.pem
Please e-mail the request to the Globus Simple CA dfslezak@dc.uba.ar
You may use a command similar to the following:
cat /etc/grid-security/hostcert_request.pem | mail dfslezak@dc.uba.ar
Only use the above if this machine can send AND receive e-mail. if not,
please
mail using some other method.
Your certificate will be mailed to you within two working days.
If you receive no response, contact Globus Simple CA at
dfslezak@dc.uba.ar
4.2. Como autoridad certificante de la mquina lsc.dc.uba.ar, usuario
GLOBUS, se firma el certificado.
ssh globus@lsc.dc.uba.ar
globus@lsc$ cd /tmp
globus@lsc$ grid-ca-sign -in hostcert_request.pem -out hostsigned.pem
To sign the request
please enter the password for the CA key:
The new signed certificate is at: /home/globus/
.globus/simpleCA//newcerts/15.pem
4.3. Desde el host master, se toma el certificado ya firmado del lsc.dc.uba.ar
y se ubica en /etc/ grid-security/
(en un caso normal este archivo tambin se recibe por mail desde la autoridad certificante).
7.2. SIMPLE CA
215
root# cd /etc/grid-security
root# scp globus@lsc.dc.uba.ar:/tmp/hostsigned.pem ./hostcert.pem
root# chown root.root /etc/grid-security/hostcert.pem
root# chmod 0400 /etc/grid-security/hostkey.pem
4.4. Limpiar el directorio /tmp en el servidor lsc.dc.uba.ar.
5. Certificacin del USUARIO mcarri.
5.1. Se ejecuta como usuario mcarri el script grid-cert-request.
[mcarri@master mcarri]$ grid-cert-request -force -cn Carolina Leon Carri
/home/mcarri/.globus/usercert_request.pem already exists
/home/mcarri/.globus/usercert.pem already exists
/home/mcarri/.globus/userkey.pem already exists
A certificate request and private key is being created.
You will be asked to enter a PEM pass phrase.
This pass phrase is akin to your account password,
and is used to protect your key file.
If you forget your pass phrase, you will need to
obtain a new certificate.
Generating a 1024 bit RSA private key
............++++++
..++++++
writing new private key to /home/mcarri/.globus/userkey.pem
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
A private key and a certificate request has been generated with the subject:
216
7.2. SIMPLE CA
217
218
Captulo 8
Descripcin de la Aplicacin
8.1
Descripcin General
8.1.1
220
Ayuda.
Buscador (Acceso a Internet)1 .
1
221
222
8.1.2
8.1.3
deploy-server.wsdd:
<?xml version=1.0 encoding=UTF-8?>
<deployment name=defaultServerConfig
xmlns=http://xml.apache.org/axis/wsdd/
xmlns:java=http://xml.apache.org/axis/wsdd/providers/ java
xmlns:xsd=http://www.w3.org/2001/XMLSchema>
<service name=examples/ProvisionDirService provider = Handler
use=literal style=document>
<parameter name=className value = org.merrill.examples. services.
provisiondir. impl. ProvisionDirService/>
<wsdlFile>share/schema/ examples/ ProvisionDirService/ ProvisionDir
_ service.wsdl< / wsdlFile>
<parameter name=allowedMethods value = */>
<parameter name=handlerClass value = org. globus. axis. providers.
RPCProvider/>
<parameter name=scope value = Application/>
<parameter name=providers value = GetRPProvider Destroy Provider />
<parameter name=loadOnStartup value =true/>
223
</service>
</deployment>
deploy-jndi-config.xml:
<?xml version=1.0 encoding=UTF-8?>
<jndiConfig xmlns=http://wsrf.globus.org/jndi/config>
<service name=examples/ProvisionDirService>
<resource name=home type= org. globus. wsrf. impl. Service Resource Home>
<resourceParams>
<parameter>
<name>factory</name>
<value>org.globus.wsrf.jndi.BeanFactory</value>
</parameter>
</resourceParams>
</resource>
</service>
</jndiConfig>
ProvisionDirQNames.java:
package org.merrill.examples.services.provisiondir.impl;
import javax.xml.namespace.QName;
public interface ProvisionDirQNames {
public static final String NS = http://examples.merrill.org/provisiondir/
ProvisionDirService;
224
225
wdResponse;
import org.merrill.examples.provisiondir. ProvisionDirService. ListDirArrayResponse;
public class ProvisionDirService implements Resource, ResourceProperties
{
/* Resource Property set */
private ResourcePropertySet propSet;
/* Insert resource properties here. */
private String cwd;
226
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
} catch (Exception e) {
throw new RuntimeException(e.getMessage());
}
}
public ListDirArrayResponse listDir() throws RemoteException {
//java.io.File currentDir = new java.io.File(cwd);
//List listaAlumnos = new ArrayList();
///listaAlumnos.add(Pepe);
String[] alumnos;
try {
int cantidad=0;
Class.forName(com.mysql.jdbc.Driver);
Connection conn = DriverManager.getConnection (jdbc:mysql:// localhost:3306/ alumno,root, );
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery (SELECT count(*) as cantidad from
unne);
227
if(rs.next())
cantidad = rs.getInt(cantidad);
while(rs.next()){
alumnos[i]=rs.getString (anio_in) + @ + rs.getString (carrera)
+ @ + rs.getString(sexo) + @ + rs.getString (luniv) +
@ + rs.getString (domiciliop);
i++;
}
} catch (Exception e) {
throw new RemoteException (Error: + e.getMessage());
}
228
try {
int cantidad=0;
Class.forName(com.mysql.jdbc.Driver);
Connection conn = DriverManager.getConnection (jdbc:mysql:// localhost:3306/ alumno,root, );
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery (SELECT count(*) as cantidad from
unne);
if(rs.next())
cantidad = rs.getInt(cantidad);
while(rs.next()){
alumnos[i]=rs.getString(luniv);
i++;
}
229
} catch (Exception e) {
throw new RemoteException(Error: + e.getMessage());
}
230
Captulo 9
Conclusiones
9.1
232
CAPTULO 9. CONCLUSIONES
Bibliografa
[1] L. Joyanes Aguilar. Cibersociedad. Mac Graw-Hill, 1997.
[2] Viktors Berstis. Fundamentals of Grid Computing. IBM, USA, 2002.
[3] James A. O Brien. Sistemas de Informacin Gerencial. Editorial Nomos
S.A., Argentina, 2003.
[4] Arun K. Iyengar Marcos Novaes Li Zhang Catherine H. Crawford, Daniel
M. Dias. Commercial Applications of Grid Computing. IBM, USA, 2003.
[5] H.imrod D. Abramson, R. Giddy Sosic. The Grid: Blueprint for a New
Computing Infrastructure. IEEE, USA, 1995.
[6] A. Gonzlez del Alba Baraja; V. Yague Galaup; L. Joyanes Aguilar. Impacto de las Tecnologas en la Gestin de los Sistemas de Informacin en
II Congreso Internacional de Sociedad de la Informacin y del Conocimiento. McGraw Hill, Madrid-Espaa, 2003.
[7] Matt Haynos. The Physiology of the Grid:A visual of Open Grid Services
Architecture. IBM, 2003.
[8] C. Kesselman I. Foster. The Grid: Blueprint for a New Computing Infrastructure. 1998.
[9] J.ick S. Tuecke I. Foster, C. Kesselman. The Physiology of the Grid:
An Open Grid Services Architecture for Distributed Systems Integration.
Global Grid Forum, USA, 2002.
[10] R. Gutierrez I. Foster B. Ginsburg O. Larsson I. Lopez, G. Follen. Using
CORBA and Globus to Coordinate Multidisciplinary Aeroscience Applications. NASA, USA, 2000.
[11] T. Durniak P. Herman J. Karuturi C. Woods C. Gilman J. Barry, M. Aparicio. Enterprise Distributed Computing Workshop. IEEE, USA, 1998.
233
234
BIBLIOGRAFA
ndice de Materias
AFS, 26
ambiente hosting
rol, 89
API (Application Programming Interface), 182
Aplicaciones del Grid Computing
Entornos Virtuales, 6
Proceso Intensivo de Datos, 6
Servicios Puntuales, 6
Sistemas Distribuidos en Tiempo Real, 6
Supercomputacin Distribuida,
4
Aplicaciones y Servicios, 11
GridSystems, 12
HP, 11
Sun, 11
Appletalk
Appletalk, 112
Applets
contenedor de, 155
applets, 159
arquitectura de grid
semnticas de servicio, 85
arquitecturas
tres niveles de, 156
Autoridad Certificante, 205
bifurcaciones, 192
if, 192
if else, 193
bloque try, catch, finally, 195
browsers, 159
bubbled up, 38
bucles, 193
do while, 194
for, 194
while, 193
C/C++, 191
certificado de autoridad, 51
Clase, 180
clase
caractersticas, 196
clase en Java, 196
clase object, 198
clases de grid services, 71
grid data service, 71
servicios de ejecucin de programas de grid, 71
Clientes POP
Clientes POP, 113
Comandos para Internet, 131
Comando ftp, 132
Comando telnet, 132
Protocolos Internet (IP), 131
comentarios, 191
computacin negocio a negocio, 77
concepos y componentes
trabajos y aplicaciones, 30
236
conceptos y componentes, 24
almacenamientos, 26
Comunicaciones, 28
comunicaciones
externa, 28
interna, 28
equipos,capacidades,arquitecturas
y polticas, 29
software y licencias, 28
tipos, 25
computacin, 25
configuracin de datos, 46
contenedor
cliente de aplicaciones de, 154
EJB de, 153
Web, 154
Content-Type, 163
core dumps
core dumps, 111
cpu paralela, 17
algoritmos, 17
primer barrera, 18
segunda barrera, 18
Data Striping, 27
destroy, 166
DFS, 26
DHTML, 160
digitales
activos, 149
doGet, 162
doGet (), 164
doPost (), 164
download, 149
e-commerce, 147
Ejecucin de Programas, 128
Comando time, 128
Comando top, 129
ejemplo de
NDICE DE MATERIAS
NDICE DE MATERIAS
237
GSS-API, 80
GUI, 44, 154
hardware, 201
herencia, 181, 182, 196
heursticas, 32
HTML, 159
HttpServletRequest, 162
HttpServletResponse, 163
IDE, 160
INIT, 163, 164
instalacin
del software, 202
instanciacin e inicializacin, 164
interface, 181
intragrid a intergrid, 32
compatimiento de archivos, 32
IT, 23, 152
J2EE, 66, 151
Java, 175, 176
caractersticas, 176
conceptos, 174
conceptos bsicos, 180
estructura general de un programa, 179
flexibilidad de, 177
introduccin a, 174
Jerarqua de clases en, 182
javax.servlet.HttpServlet, 162
JCA, 152
JDBC, 155, 159
JDK, 192
JNDI, 155
JSP, 154
compilacin batch de, 168
modelos de, 166
procesadores, 167
JSPs, 160
JVM, 153
238
KDE, 114
Administracin de Archivos. Kfm,
116
Asociar un Nuevo Tipo de Archivo, 119
Borrar un Directorio, 117
Copiar y Mover un Directorio, 118
Crear un Nuevo Directorio,
117
Directorios y Contenido de Ficheros, 116
Enlaces de KDE, 118
Propiedades de un Fichero,
120
Aplicaciones Auxiliares, 120
kdehelp, 122
kedit, 121
Kfind, 123
konsole, 121
kwrite, 122
Configuracin de KDE, 124
tilde nadir Aplicaciones al Panel, 126
Editor de Mens, 124
KDE Control Center, 126
Otras Aplicaciones, 127
Partes de la Pantalla, 114
Escritorio, 115
Panel de KDE, 115
Panel de ventanas, 115
X Windows, 115
Kerberos, 80
Licencia GPL
Licencia GPL, 109
Linux
Caractersticas Principales, 111
Instalacin, 133, 137
Arranque de Linux, 133
NDICE DE MATERIAS
Dispositivos y Particiones en
Linux, 133
Espacio de Intercambio (sawp), 134
Instalacin de Software, 135
Instalacin del Lilo, 136
Problemas al Arrancar desde
el Disco Duro, 142
Problemas al Arrancar desde
el Floppy, 142
Problemas con el Arranque,
138
Problemas con el Hardware,
140
Problemas con el Software, 140
Problemas Despus de Instalar Linux, 142
Procedimientos Post-Instalacin,
137
Resolviendo Problemas, 138
Sistemas de Ficheros, 135
Linux, 107
Recursos para el Desarrollo, 110
mtodos, 197
de la clase object, 198
de objeto, 197
Mac
Mac, 108
MacOS, 108
MDS-2, 78
memoria
administrador automtico de la,
178
middleware, 151
Minix-1
Minix-1, 112
monitoreo del progreso y recuperacin, 47
MPI, 41
NDICE DE MATERIAS
239
240
convenciones de protocolos de
trasporte, 87
sentencia, 191
Server
Application, 150
Advanced Edition, 151
Enterprise Edition, 152
Standard Edition, 153
server-side, 164
servicio
de demanda, 164
servicios centrales del grid, 68
administracin, 69
comunicacin, 70
poltica, 70
seguridad, 70
servidor
de aplicaciones, 153
HTTP, 153
servise data set find, 64
servlet, 162
ciclo de vida del, 163
codificacin de, 162
desarrollo, 162
motor del, 164
servlets, 154
Set-Cookie, 163
simple
CA, 205
SmartPhone, 159
SMP, 109
SOA, 58, 62
SOAP, 81
software, 182, 201
de base, 201
Software free
Fundacin de Software Libre,
110
Software free, 109
NDICE DE MATERIAS
string, 183
System V
System V, 112
TCP/IP
TCP/IP, 108
TLS, 80
UDDI, 81
UMSDOS
UMSDOS, 112
UNIX
UNIX, 107
URL, 57
variable
clasificacin, 183
local, 184
miembro de una clase, 184
referencia, 183
variables
miembro, 185
tipo primitivo, 183
visibilidad y vida de las, 185
virtual
sistema principal, 155
virtualizacin y orientacin de servicio, 82
VO, 91
VOs
organizaciones virtuales, 82
VPN tunneling, 33
VT, 159
W3C, 80
Web
aplicaciones, 169
services, 80
Web Services, 151
web services
definicin, 97
NDICE DE MATERIAS
Grid Services, 99
Invocacin, 98
WebSphere
para el comercio, 144
WebSphere Commerce, 146
WebSphere Everyplace, 147
WebSphere for Commerce
soluciones de portal, 148
soluciones digital media, 149
WebSphere for commerce
soluciones B2B, 147
soluciones B2C, 147
WebSphere Host Integration, 158
WebSphere Host Publisher, 159
WebSphere Portal, 146
WebSphere Studio, 158
la familia de herramientas, 160
WebSphere Transcoding Publisher,
159
WebSphere Voice, 147
wizard, 160
WSDL, 57, 58, 81, 83
WSIL, 81
X Windows
X Windows, 114
X.509, 80
Xenix
Xenix, 112
XML, 57, 81, 159
ZIP Iomega
ZIP Iomega, 110
241