Modelos de Programación 2
Modelos de Programación 2
·····
Modelos de programación 2
····· ...
··. ·· ... ..··
__ ...··············'·· ...
•••
Modelos de programación 2 / Gustavo Enrique Tabares Parra, /
Bogotá D.C., Fundación Universitaria del Área Andina. 2017
978-958-5459-35-9
Edición:
Fondo editorial Areandino
Fundación Universitaria del Área Andina
Calle 71 11-14, Bogotá D.C., Colombia
Tel.: (57-1) 7 42 19 64 ext. 1228
E-mail: [email protected]
http://www.areandina.edu.co
Hecho en Colombia
Made in Colombia
Todos los derechos reservados. Queda prohibida la reproducción total o parcial de esta
obra y su tratamiento o transmisión por cualquier medio o método sin autorización escrita
de la Fundación Universitaria del Área Andina y sus autores.
Modelos de programación 2
••••
i
Índice
Metodología 8
Desarrollo temático 9
Metodología 24
Desarrollo temático 25
Metodología 43
Desarrollo temático 44
Metodología 59
Desarrollo temático 60
i
Índice
Metodología 82
Desarrollo temático 83
Metodología 102
Metodología 129
Metodología 140
Bibliografía 153
1
UNIDAD
1 Unidad 1
·· ...,.··
..··· ··.
···· ...
··· ...
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 7
3
U1 Metodología
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina 9
Andina 5
ma, o noticias que cambian dinámicamente ejecución para su procesamiento. Los Ser-
en la cabecera de las páginas web, en muchas vlet también tienen más alternativas que
ocasiones construyendo la página con el re- los programas normales CGI para optimiza-
sultado de la consulta que el cliente solicito. ciones como los cachés de cálculos previos,
mantener abiertas las conexiones de bases
También encontramos información que de datos, etc.
usan las páginas web desde Bases de Datos
corporativas u otras fuentes, el uso de la in- Potencia: con los Servlets se controla fácil-
formación a través de una tienda en línea, mente las deficiencias que su presentaron
la información de los productos debe estas anteriormente en el desarrollo de los CGI
almacenada en un BD, para que los clientes al ejecutarse, Los Servlets mantiene las una
puedan interactuar con ella. También la in- comunicación directa entre la aplicación y
formación del cliente es importante alma- el servidor web. Pueden compartir datos en-
cenarla para llevar un control de quienes tre ellos. Como puede ser la conexión a una
adquieren productos en línea. BD, un repositorio de almacenamiento, etc.
Son clases desarrolladas en Java, por lo que
El acceso a las cabeceras de las peticiones
se pueden emplear en toda la aplicación
http a través de dos tipos get y post, donde
que la requiera.
el post viene por el cuerpo de la petición,
conteniendo ficheros y el GET la petición Seguridad: es controlada por la máquina
viene por la cabecera URL. virtual de Java, que corrige la mayoría de
problemas detectados de seguridad en los
Los Servlet en Java permiten realizar mu-
CGI, y ya no se aplican en los Servlets.
chas más cosas que en la programación tra-
dicional es imposible, los Servlet permiten Portabilidad: se puede utilizar bajo cual-
compartir datos entre sí, conexiones a bases quier plataforma de ejecución (S.O.) y en la
de datos, ficheros, etc. mayoría de los servidores web como Apa-
Ventajas de los Servlets che, Microsoft IIS, WebStar. Están soporta-
dos directamente por plug-in.
Eficiencia: cada petición por parte de un
cliente crea un hilo, no un nuevo proceso Precio: normalmente todo el software utili-
como ocurría con los CGI tradicionales, don- zado con los Servlets es gratis, para el uso
de se presentaba la sobrecarga de procesos personal o sitio web de bajo nivel, a diferen-
de arracada y dominaba el tiempo de eje- cia de Apache como servidor web gratuito,
cución. Los Servlets, la máquina virtual de la mayoría de los servidores web comercia-
Java permanece activada corriendo, y cada les son caros, cuando se tiene un servidor
petición de la aplicación se maneja como un web comercial, se debe añadir en soporte
thread Java muy liviano y no como un pro- para Servlets en alguno es gratuito y de
ceso del sistema que requiere memoria de muy bajo costo.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 10
6
Servidor web basado en CGI Servidor
web
Petición al CGI 1 Proceso hijo del CGI-1
Petición al CGI 2 - -
Proceso hijo del CGI-2 i
------------------ 1 Servlet 1
Petición al Servlet 2
Petición al Servlet 1
><:::~~~~~~::I
Thread Servlet 2
JSP Java Server pages Los elementos HTTP que componen los Ser-
vlets están predefinidos en los JSP, como:
Java JSP se aplica en las páginas web con la
combinación del código HTML en un Java • request: objeto HttpServletRequest
embebido de dos formas: que permite acceder a la información
de la solicitud.
1. Scriptles: código Java-JSP multi-mensa-
je entre símbolos <% %>, donde cada • response: objeto HttpServletRespon-
instrucción debe ir separada por “;” pun- se para generar la respuesta
to y coma. • sesion: Objeto HttpSession asociado
2. Expresiones: son variables que mues- a la petición, Si no se define la sesión
tran un resultado, estas no finalizan con esta será null.
punto y coma, deben escribirse dentro • application: el objeto ServletContext
de los símbolos <%= %>. del contenedor web.
3. Declaraciones se insertan en la clase, no
en un método <%! Declaraciones %>.
• out: Objeto JspWriter-Similar a un
PrintWriter para ejecutar la salida
4. Comentarios JSP <%-- Comentario --%>. para el usuario.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 11
7
Puede ser llamados de forma directa, sin definirlos con anterioridad, veamos un ejemplo.
<%--
Doctllllent index
Created on 13/08/2015, 01:21:04 PM
Author gtabares
--%>
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 12
8
• Contra JavaScript. JavaScript puede generar HTML dinámicamente en el cliente. Este
una capacidad útil, pero sólo maneja situaciones donde la información dinámica está
basada en el entorno del cliente. Con la excepción de las cookies, el HTTP y él envió
de formularios no están disponibles con JavaScript. Y, como se ejecuta en el cliente,
JavaScript no puede acceder a los recursos en el lado del servidor, como bases de
datos, catálogos, información de precios, etc.
Para la implementación de los Servlet, se hace uso de las librerías básicas y de extensión para
http:
• Javax.Servlet: entorno básico
• Javax.Servlet.http: extensión para Servlet http
Generic aetver--4i de
GenericServlet fum:,tionality
Applicalion &pecil'ic
MyS ervlet
functionality
@Override
pro t e c ted voi d doGet( HttpSe rvl etReques t re quest, Ht t pServletRespon se respons )
throws Se rvl etExc eption, IOExc eption
processRequest(reguest, r esp o n se ) ;
@Overri de
protected void doPos t (HttpSe rvl e tRe que st r e ques t, HttpSe rvl e tRe sponse r e spo e)
t hrows Se rvl etException, I OExcep t ion
p ro cessRe quest( r e quest, r esponse ) ;
@Override
public Strin g getS e rv1e tlnfo ( ) {
r e turn "Short description" ;
) // </editor-fold>
Imagen 3. Servlet Java imagen de código generado por el autor dese IDE Netbeans
Fuente: Propia.
Ejemplo de la aplicación de un Servlet
import j a.v.a . i o . ., ;
import j a v.a x . ::ie rvl et . ., ;
import j a v ax.::ie rvl et. h ttp.
public void doGet (HttpSe rvl et Reque::it r e que::it, HttpSe rvlet Respon se r e::ipo n se )
throws Servl etException , IOExcept i on {
respo ::ie.setCo n ten t Type ( "text/htmlff ) ;
Pr int Wri ter o t = r espo n se . getWr i ter () ;
o u t . p rin t ln( <~DOCTYPE HTML PUBLIC \" - //W3C//DTD.,
+ HTML 4 .0 Transitional//EN\">"
+ <html> <head><title>Hola Mundo</ title></head>"
+ < body> <hl>Hola M' do</hl> </body></html>,, ) ;
}
Imagen 4. Método doGet del Servlet imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
S cript l et
<%
String a u tor = application . getln itParameter ( "A·tor ) ;
if (( a.u tor = null ) II (a u tor . trim () . equal::i ( "" ))) {
a u tor = "Ano i mo" ;
}
ou t . prin tl n( "A tor=" a u tor ) ;
%>
Imagen 5. Scriptles en JSP imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 14
10
Con el Scriptles, se asigna sobre una variable de tipo String el parameter (Autor) y se valida a través
de un condicional if si el autor esta en nulo y si al ejecutar el Scroptles no escribieron nada el algún
formulario. Este se valida con autor.trim().equals(“”). En caso de que sea nulo o este en blanco se la
asigna a la variable autor la etiqueta de Anónimo.
O bien
atributo2=”valor2”
Directivas comunes:
• Include: incluye otros ficheros que son de tipo jsp, pueden ser de tipo jsp, html o un
Javascript.
• El fichero se referencia con una URL relativa a la página JSP o al servidor si va prece-
dido de “/”.
<%@ include file=”/URL” %>.
• Page Permite importar un paquete <% page import=”Java.util.*” %>
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 15
11
Ejemplo de Servlet con Netbeans
Vamos iniciar con la creación de Servlet sencillo con el IDE de desarrollo de NetBeans:
Java ME Embedded
Java Card
Description:
Creates an empty Web apprlCiltion in a standard IDE project. A standard project uses an
IDE-generated build script to build, run, and debug your project.
Imagen 6. Creando un nuevo proyecto imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 16
12
Ste ps Name .ind Location
Siguiente paso configurar el servidor web con el que realizaremos el ejercicio, es necesario
para la ejecución del Servlet, ya que estos solo corren en un servidor web. Para este ejemplo
utilizaremos el servidor que trae NetBeans por defecto llamado GlassFish.
Imagen 8. Seleccionar el servidor GlassFish Server 4.1 imagen de código generado por el autor desde IDE
Netbeans
Fuente: Propia.
8··· JavaServlet
8',,·· ,.... .
L... liJ
$·· Source Packages
· ··· <olefault package >
Libraries
f,·· $·· · ] DK 1. 7 (Default)
@-·· EE GlassFish Serv er 4. 1
e-- Configuration IFiles
L.... ~ MANIFEST.MF
En la estructura tenemos un archivo que se llama idex.jsp, en el cual podremos crear un for-
mulario para llamar al archivo Servlet de la aplicación.
<!DOCTYPE html>
< ! --
A t h or: Gtabares
-->
<html>
<head>
<title>TODO s ppl y a t i t l e</title>
<meta charset= ff0TF - 8ff>
<meta name = nviewportff concenc = nwidth=d.evice - width, initial - scale=1 . on >
</head>
<body>
<div>TODO wri te con ten t </div>
<form action= nservlet" ~ ethod= npost" >
Escri be t n o mbre :
<input type="text" n ame="nombre" >
<input type='"sub.mit" v al e=·nenviarn >
</form>
</body>
</html>
Imagen 10. Formulario en HTML imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 18
14
Vamos a crear el código, del Servlet del proyecto para esto damos clic derecho sobre el pro-
yecto JaveServlet seleccionamos New / Servlet.
New
Build
Cle n ood Buid
Cl• n
~.
V ~1
Run
doc
D~
Dsug
Prof,!.
T lifSTI el>
tsl Al\.F&
Scta,MoinP,qect
o.-~. e<1P,.,,.m
CIOH
Imagen 11. Crear el Servlet de la aplicación imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
En la siguiente imagen se define el nombre del Servlet (para este ejemplo lo llamaremos Ser-
vlet, ya que fue el que definimos en la etiqueta del formulario), y pulsamos el botón clic, con
esto hemos creado un archivo llamado Servlet.Java, el cual debemos de programar en Java.
Warning: It is highly recommended that you do not place Java dasses in the default package.
Imagen 12. Definir el nombre del Servlet imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 19
15
Código generado del Servlet.Java
(;] import java . io . IOException;
import java.io.PrintWriter;
import javax .servl et . ServletException;
import javax .servlet . annotation . WebServlet;
import javax .servl et . h ttp . HttpS e rvl et;
impo rt javax .servl et . http . HttpSe rvl etRe quest;
impo rt javax . se rvl et . h ttp . HttpS e rvl etRespons e;
lr /:*@author Guentabares
L */
@WebServlet(urlPattern s = { "/Servlet" })
public c lass Servlet exten ds HttpServlet
pro tected void processRequest (HttpServl etRequest request, BttpServl etRespon se response )
El t h r ows ServletException, IOException {
response.setContentType( "text/html;cbarset=tJTF-8" );
try (PrintWriter out= response . getWriter[)) {
/• TODO output your page here. You may use following sample code. *I
out . println( "<!DOCTYPE htm.1> 0 ) ;
out . println( "<html>" ) ;
out . println( "<head>" ) ;
out . println( "<title>Servlet Servlet</title>" ) ;
out . println( "</head>" );
out . println( "<body>" ) ;
out . println( "<hl>Tu nombre es: " + request . getParamete~ ("nombre" ) + "</bl>" );
out . println( "</body>" ) ;
out . println( "</html>" ) ;
0 !HttpServlet meth ods . Click on the+ s ign on the left to edit t h e code .I
Imagen 13. Personalizando el código del Servlet imagen de código generado por el autor desde IDE
Netbeans
Fuente: Propia.
Imagen 14
Fuente: Propia.
Podemos ejecutar nuestro proyecto para verificar los resultados. En el botón run.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 20
16
Salida del proyecto en el explorar google Chrome.
Ej emplo de Ser d et
I
Esc.ribe tu nombre: J.-P-ed-ro- Pe-,-ez_ _ _ _ _ enviar I
Imagen 15. Formulario de salida de la aplicación web imagen de código generado por el IDE Netbeans
Fuente: Propia.
Al digitar el nombre y pulsar sobre el botón enviar nos da como salida nuestro Servlet:
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 21
17
1
UNIDAD
1 Unidad 1
·· ...,.··
..··· ··.
···· ...
··· ...
Arquitectura Modelo-
Vista-Controlador Modelos de programación II
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 23
3
U1 Metodología
El desarrollo de esta cartilla este desarrollada bajo en tema de patrones de diseño MVC, se
recomienda al estudiante seguir de forma adecuada el desarrollo del tema, apoyándose en
el material complementario. Lecturas de referencias, Videos capsulas. Es importante estar
muy activo en la video conferencia es un espacio donde se pueden aclarar muchas dudas
que se presenten con el tema.
En esta semana se realizara la primera evaluación a través de un Quiz, enfocado a los con-
ceptos del tema de la semana 2. Adicional hay una actividad de repaso que le permitirá al
estudiante poder aplicar los conocimientos adquiridos hasta el momento.
Arquitectura Modelo-Vista-Controlador
El patrón de desarrollo Modelo-Vista-Controlador establece unos lineamientos de buenas
prácticas de programación, según la cual todo programa orientado a objetos bajo este pa-
trón consta de tres partes: el Modelo, La Vista y el Controlador.
4. El controlador selecciona
3. El modelo devuelve una vista.
Modelo los datos. Vista
(navegador)
Esta arquitectura pretende que el programador separe la parte lógica del programa, de la
parte de presentación. Como siempre, al dividir un problema, se disminuye la complejidad
de su solución, y permite que más tarde el mantenimiento sea mucho menos costoso en tér-
minos de tiempo y dificultad, ya que dependiendo de la naturaleza (del modelo, de la vista
o del control) del aspecto sobre el que se requiera un cambio o un ajuste, su ubicación es
más rápida y los efectos de efectuar sobre ella el mantenimiento serán más claros y predeci-
bles. Si por ejemplo lo que se quiere es cambiar un logo en una pantalla, pues este cambio
solo afecta una parte de la vista, sin alterar al modelo o al controlador. Si por el contrario se
requiere un cambio en un método de un objeto como por ejemplo el cambio en el cálculo
============================• Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 25
5
de retención en la fuente, solo se tendrá que modificar el método dentro de la clase corres-
pondiente al objeto dentro del modelo.
La aplicación del patrón MVC facilita también la reutilización de partes del programa. Si por
ejemplo una interface igual a una ya programada es requerida, pues se puede utilizar sin
problema aunque la lógica que la vaya a utilizar sea diferente.
Controlador
Modelo Vista
Modelo
El Modelo es la parte del programa que contiene las clases correspondientes al modelo de
datos y es el encargado de interactuar con la base de datos.
Controller
,r --------------------
t I
I
Model
I
I
I
I
I
t
•L------------ ------ ------
I
I
View
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
26
6
Vista
La Vista es la encargada de las interfaces con las cuales el programa se relaciona con el usua-
rio, permitiendo las entradas y las salidas de datos, es la interfaz visible a los operadores y/o
a otros sistemas.
f ------------------- Controller
•
'
I
I
Model
I
I
I
I
•
I
•L------------ ------------
I
I
View
Controlador
Es el encargado del bloque de control, su función es recibir y/o enviar datos al a la interfaz
y además crear instancias de los objetos del modelo con el objetivo de poder ejecutar sus
métodos dependiendo de la funcionalidad del programa.
Interpreta las acciones del usuario de teclado y ratón. Informando al modelo y/o a la
vista para cambiar apropiadamente sus estados.
f ------------------- Controller
•
'
I
I
Model
I
I
I
I
•
I
•L------------ ------------
I
I
View
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
27
7
Ejemplo
Escenario: desarrollar un programa para simular una calculadora que pueda sumar, restar,
multiplicar y dividir dos operandos que un usuario digita. Se deben mostrar los operandos,
la operación y el resultado.
Un ejemplo sencillo en el que se aplicaran cada uno de los conceptos tratados hasta el mo-
mento, es decir desde el planteamiento del escenario hasta su arquitectura MVC.
Escenario
Para identificar los objetos se seguirá el procedimiento de elaborar una lista de los sustanti-
vos que están mencionados en el texto del problema:
• Calculadora
• Operando
• Operación
• Usuario
• Resultado
Después de esta operación analizamos cada uno de ellos, para encontrar aquellos que den-
tro del escenario existen independientemente.
Calculadora tiene existencia propia, no depende de otro objeto, luego es válida su inclusión
como objeto.
Operando es un dato que será utilizado por la calculadora para efectuar alguna operación,
por sí solo no tiene sentido su existencia, luego no es un objeto. En este caso aparecen 2.
Operación solo tiene existencia dentro de la calculadora, esta es quien realiza la opera-
ción, de lo cual se deduce que No es un objeto.
Usuario, es quien utiliza el programa, luego aunque se menciona dentro del texto, está por
fuera del escenario, luego no es un objeto.
Abstracción de objetos
Como el único objeto identificado es calculadora, solo se efectuara la abstracción de él, co-
locándole un nombre e identificando sus componentes (o atributos o características), lo
mismo que los métodos que permiten que los valores de esos componentes puedan ser
modificados.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 28
8
Los componentes normalmente son los sustantivos que hemos rechazado como objetos,
pero que están dentro del escenario, es decir que forman parte de la solución del problema:
• Operando1
• Operando2
• Operación resultado
Teniendo la lista de componentes, podemos elaborar una lista de metodos, analizando cada
componente y deduciendo que modificaciones puede tener el valor del componente y
como se pueden efectuar:
Para operando1 se requiere que el valor sea uno de los que interviene en la operación,
luego el cambio de valor se obtiene “poniendo” dentro del valor correspondiente. Debemos
tener un Método que permita hacer esto:
Establecer_operando1 ()
Como el resultado pide que “se muestren los operandos”, hay que tener otro método que
“extraiga” el valor del OPERANDO1:
Obtener_operando1 ()
Establecer_operando2 ()
Obtener_operando2 ()
Existen cuatro posibles valores para el componente operación: “suma”, “resta”, “multiplica-
ción”, “división”. El componente como es normal, solo tendrá uno de ellos y hay que “ponerlo”
dentro de él. Para este efecto se utilizará el método:
Establecer_operación ()
Al final también hay que mostrar el valor de operación, luego hay que extraer el valor de
OPERACIÓN para mostrarlo:
Extraer_operación ()
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 29
9
posteriormente:
Obtener_resultado ()
En este punto ya tenemos todos los elementos que conforman el objeto calculadora del
problema y lo podemos diagramar:
Calculadora
Operrando1 Numérico
Operrando2 Numérico
Operador Carácter
Resultado Numérico
Establecer_operando1()
Establecer_operando2()
Establecer_operación()
Calcular_resultado()
Obtener_operando1()
Obtener_operando2()
Extraer_operación()
Obtener_resultado()
En el diagrama para cada componente se debe especificar el tipo de datos que recibe. Este
diagrama es el mismo diagrama de clase del objeto calculadora.
Diagrama de clases del problema
Usando la arquitectura MVC, se debe especificar el modelo y el control, para este caso la vista
estará incluida dentro del control.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 30
10
Como solo hay un objeto, entonces el número de clases que conforman el modelo es solo
una:
Modelo
Calculadora
Operrando1 Numérico
Operrando2 Numérico
Operador Carácter
Resultado Numérico
Establecer_operando1()
Establecer_operando2()
Establecer_operación()
Calcular_resultado()
Obtener_operando1()
Obtener_operando2()
Extraer_operación()
Obtener_resultado()
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 31
11
Modelo
Calculadora
Operrando1 Numérico
Operrando2 Numérico
Operador Carácter
Resultado Numérico
Control
Establecer_operando1()
II( Calculadora_basica()
Establecer_operando2()
Establecer_operación()
Calcular_resultado()
Obtener_operando1()
Obtener_operando2()
Extraer_operación()
Obtener_resultado()
Inicialmente vamos a separar las cosas que hace el servidor y las cosas que van de la parte
del cliente.
1. El cliente hace una petición desde la página principal (index.jsp) de la app Calculadora.
2. El servidor procesa la pantalla inicial, que permite ingresar dos números.
3. El cliente suministra dos números y presiona el botón Sumar del formulario.
• páginas JSP
• servlets
El method hace post/get a un action «calcular». ¿Dónde va a parar ese pedido entonces?
El código anterior permite relacionar un nombre («calcular») con un package name + nom-
bre de la clase del servlet.
Un Servlet
Es una clase Java que extiende HttpServlet. CalcularServlet en este ejemplo implementa un
único método doPost. El servlet está pensado para recibir un pedido (http request), proce-
sarlo y devolver código html que pueda ser formateado por el browser.
MVC en Web
Variables
session/ reque st/application
($~~·
3: del~ga en o ·etos
b7
home/ de negoc io, guard a · e
~ ~ses-i6n
Web Server
1: se ver procesa
pagin yvue lve al
li e nte
JSP se randeriza
a HTML
Figura 9. Diagrama del patrón MVC para aplicaciones web. Imagen tomada del sitio http://algo3.uqbar-
project.org/temario/03-intro-web/java/web-mmvc
A través del siguiente ejemplo implementaremos un ejercicio para aplicar el patrón de desa-
rrollo MVC en aplicaciones web.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 34
14
Crearemos los siguientes archivos que describen lo siguiente:
Creamos una aplicación Java Web / Web Application, con el nombre de implementación-
MVC, definimos el servidor GlassFish Server y clic en finish.
0.. Fit.er :
Categories:
Java
JavafX Web Application with Existing Sources
Java Wei> Web Free-form Application
Java EE
HTMLS
Java ME Embedded
Java Card
Maven
Pt-IP
Groovy
C/C++ V
,___~x. -Se
_ ,_·-~ Fi - ~-----<
_ll_e s _ P_r_o_.. ~ ~ index.html X ~--------------------------
<head>
<title>TODO supply a title</title>
<Jc.eta chazset= "UTF-8" >
<Ee:ta nazt.e- RvLewport" content= nwidth=device-width ,
</ head>
<body>
14 <d.iv>TOOO wric e content < / div>
15 < / body>
16 < / html.>
Figura 11. Estructura de archivo proyecto Web Application imagen de código generado por el autor desde
IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 35
15
Para crear el primer archivo entrada.jsp correspondiente a la vista, da clic derecho del mouse
sobre Web Pages, new, JSP…
8 Ul"!)lementacionMVC
II
l+I
New
Find ...
- ... ,~
~o Folder...
Servlet ...
JSP ...
Figura 12. Creando el archivo JSP imagen
generada por el autor desde IDE Netbeans
Fuente: Propia.
Figura 13. Código archivo entrada.jsp imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
Para crear el siguiente archivo clic derecho sobre Source Packages, seleccionamos new, Java
class con el nombre de User.Java, y creamos el paquete com.ejer.modelo.
Figura 14. Definición del constructor de la clase User.Java imagen de código generado por el autor desde IDE
Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 36
16
A continuación creamos los métodos Getter y Setter de la clase en el archivo User.Java como
se muestra a continuación.
.i:e, Su·1 U lt
th.u1 , s,r1. .. .. • pr1lf0trilre;
~h1~ . pr Apell1do • prLAF~ll1do:
itl\U . I 1 • -11. :
•I
e.- rn
r@)
pru.pal lClO •
re llTD . 11
., 11 I!
p11l1Uc VOld
• 11 (S~rl.l'IO u,
~h-1:s. - 4.11 - er!A-11;
Figura 15. Código clase Bean User.Java imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 37
17
Para crear el siguiente archivo clic derecho sobre Source Packages, seleccionamos new, Java
class con el nombre de Proceso.Java, y creamos el paquete com.ejer.controlador, y creamos
el siguiente código:
package co~.cJcr.conerolador;
i~ort co .ejer.n:.odelo.Oser;
i~ort javax,servlet,RequestDispatcher;
,..
~ 0
Figura 16. Código controlador clase Procesos.Java imagen de código generado por el autor desde IDE
Netbeans
Fuente: Propia.
Editamos el archivo web.xml, si este no está en la estructura del proyecto, lo creamos con
clic derecho sobre el proyecto, new, other y buscamos en web el tipo de archivo Standard
Deployment Descriptor (web.xml). Choose File Type
Project:
Q.. Filer:
Web
KTM..S
Javi!Server Faces
Bean Valdation
Struts
Sp,-ngFrameworl<
Enterprise JavaBeans
Contexts and Dependency lnj,
~ipbon:
Figura 17. Creando el archivo web.xml imagen ICreates new web.xml deployment descriptor for web application.
generada por el autor desde IDE Netbeans
Fuente: Propia.
rvlet>
<s rvlet- name>Proc sos</s rvlet - no:r. >
<scrvlct-class>com.cjcr.controlador.Procc#Os</scrvlct-class>
e:rvle:~>
rvlec-i.appino>
<5ervlec-~~@>Proceso5</serv1ec-na."t.e>
<url-pactern>/Procesos</url-paccern>
ervl c-m pp1no>
s:u.on-conf1.q>
<session- timeout>
30
</sess1on- ~1:~ou~>
•ss10n- cont10>
lcore - file - list>
<w lcorr. -f1l >e ncrado . jsp</v lco - f1l >
Figura 18. Código xml del archivo web.xml imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
</body>
</html>
Figura 19. Código Archivo Resultado.jsp imagen de código generado por el autor desde IDE Netbeans
Fuente: Propia.
•
Informacion del suar10
ombre: .,__ _____.....,
Gustavo
Apellido: Tabares
Email: [email protected]
[ enviar I
Figura 20. Formulario de datos imagen generada por el autor desde IDE Netbeans
Fuente: Propia.
Clic en botón enviar, el controlador procesa los datos y los muestra en la vista Resultado.jsp
Figura 21: Datos de respuesta imagen generada por el autor desde IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina 40
20
1
UNIDAD
2 Unidad 2
AR€ANDINA MIEMBRODELARED
Fundaci6n Universitaria del Area Andina I LU M N 0
Introducción El uso de plantillas para el desarrollo de aplicaciones web, nos
permiten cumplir con una estructura de desarrollo definida
de forma estándar y cumplir con la calidad que se requiere a
la hora de programar, JSF ofrece una variedad de sentencias
que aplicadas correctamente se puede lograr construir aplica-
ciones exitosas.
~---------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 42
3
U2 Metodología
El desarrollo de esta cartilla está desarrollada bajo en tema referentes a JSF, se recomienda
al estudiante seguir de forma adecuada el desarrollo del tema, apoyándose en el material
complementario. Lecturas de referencias, Videos capsulas. Es importante estar muy activo
en la video conferencia, es un espacio donde se pueden aclarar muchas dudas que se pre-
senten con el tema.
En esta semana se realizara la primera evaluación a través de un quiz, enfocado a los con-
ceptos del tema de la semana 3. Adicional hay una actividad de repaso que le permitirá al
estudiante poder aplicar los conocimientos adquiridos hasta el momento.
Esta implementación de tecnología facilita la construcción de aplicaciones web con UIs del
lado del servidor, con una programación bien definida y las librerías necesarias para su co-
rrecta implementación. Con un mínimo esfuerzo de programación, podemos lograr:
■ Conectar los eventos que se generan del lado del cliente al código de la aplicación del
lado del servidor.
■ Mapear los componentes UI a una página de datos del lado del servidor.
■ La construcción de Interfaces de usuarios UI con componentes reutilizables y extensibles.
■ Una tecnología que se ejecuta del lado del servidor y no del lado del cliente.
■ La interfaz de usuario es tratada como un conjunto de componentes UI.
Características principales
■ Generar las vistas a través de JSF, incluyendo una biblioteca de etiquetas propias para los
elementos de los formularios.
■ Desde el código HTML, asocia a las vista con formularios, un conjunto de objetos Java ma-
nejados por el controlador (Beans) que permiten la captura, manipulación y visualización
de los datos mostrados en los diferentes elementos de los formularios.
■ Proporciona una serie de etapas en el procesamiento de la petición, como la validación,
reconstrucción de las vistas, recuperaciones de los datos de los elementos.
~---------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 44
5
■ Utiliza para el controlador un fichero de configuración con el formato XML.
■ Permite la creación de nuevos elementos de la interfaz o modificar los ya existentes.
■ Hace parte del estándar J2EE, lo que permite muchas posibilidades de la creación de la
capa de presentación logrando el control de una aplicación web Java, como Struts y otros
frameworks.
La siguiente grafica muestra los archivos que hacen parte de una aplicación Java Server Fa-
ces.
- i Backing Bean
+ Backl
Web !
+C]) + ._._w.e,._b.,
Componentes
+
Valoresde Listeners Reglas de Descriptor de
Graficos Componentes Navegaci6n Despliegue
Graficos
JSF, contiene una colección de básica de etiquetas disponibles que permiten crear de forma
fácil, páginas con los componentes dinámicos de una página web. A continuación veremos
algunas:
Inicialmente crearemos una aplicación Hello que contendrá un backing bean y una página
web, que le permitirá al cliente cuando ingrese y ejecute la aplicación, imprimir un mensaje
de HelloWord.
~---------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 46
7
Analicemos un poco, el backing bean asigna un valor a la variable mundo con la cadena
“Hola Mundo” la anotación @ManagedBean se encarga de registrar el backing bean como
un recurso de la implementación JSF.
package hello;
import Javax.faces.bean.ManagedBean;
@ManagedBean
<html xmlns=”http://www.w3.org/1999/xhtml”
xmlns:h=”http://Java.sun.com/jsf/html”>
<h:head>
<title>Facelets Hello World</title>
</h:head>
<h:body>
#{hello.world}
</h:body>
</html>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>Javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
~---------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 47
8
El mapeo de FacesServlet se realiza de forma automática cuando se usa el IDE de desarrollo
Netbeans.
El ciclo de vida de la aplicación Hello
Las aplicaciones web tienen un ciclo de vida. Las acciones más comunes como el manejo
de solicitudes entrantes, la decodificación de los parámetros, la modificación y el almacena-
miento de estado de páginas web como salida hacia el navegador, todas se ejecutan durante
el ciclo de vida que tiene la aplicación web. Algunas ventanas de trabajo web ocultan los
detalles del ciclo de vida mientras que otros requieren ser manejados manualmente.
Por defecto, JavaServer Faces, las acciones que se presentan en los ciclos de vida son mane-
jadas de forma automática en una página web. Es posible acceder a los diferentes escenarios
del ciclo de vida y poder modificar e incluso ejecutar diversas acciones si se requiere.
No se requiere conocer todo el ciclo de vida de la aplicación para quien está comenzando a
desarrollar aplicaciones JavaServer Faces.
A continuación se describe como comienza y termina el ciclo de vida de una aplicación Java-
Server Faces. Inicialmente el cliente hace una petición a la aplicación a través de una página
web, y la respuesta del servidor se da a través de una página web. Como se ve el ciclo consta
de ejecutar y renderizar dos fases principales.
La creación de páginas
Para este tema vamos a realizar un ejemplo práctico para el desarrollo de una aplicación
haciendo uso de JavaServer Faces. Pueden seguirlo en su IDE de desarrollo para que practi-
quen la realización del ejercicio.
~---------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 48
9
2. En el archivo web.xml, en este se modifica para que las páginas sean procesadas por el
servlet de JSF, de la siguiente forma:
< ?xml vers i on-~1.0" encodinq-"OTF- 8"?>
<web-a.pp
<contcxt-parom>
<param- na.n:e>Java..x.faces .PROJtct_STAG!</ param- nan:..e>
<para.n.-value>Oe:velopmenc</ param-value>
</ coneext-para.."11>
<se::vlee>
<3c,:vlct-n=c>tJcmplo JavaScvcrracc3</ 3c,:vlce-n=c>
<servle&- class>Javax .faces . webapp .FacesServlec</ servlec- class>
<load-on-sea.Icup>l </ load-on-startup>
</ servle~>
<se::vlee-ir.appinQ>
<3crvlc~-n«m.C>facc3 Scrvlc t </ 3crvlct-nA1:tc>
<url - paeeern>/taces/ ~</ url - paccern>
</ servlee-mapping>
<sess10n-conr1q>
<session-ein:eo ue>
30
</ sess1on- tl.lt.eout>
</ sess1cn-cont10>
<welc01C~-!1le-l1St>
<velco , -file> fac s/1nde x.xhe"'1 </velc -file>
</ wclco~c-f1lc-l1st>
</ web- app>
Figura 2 Archivo web.xml, código creado por el autor desde el IDE Netbeans
Fuente: Propia.
3. El siguiente paso es crear el beans el cual estará asociado al modelo lógico de usuario
y se encargara de guardar la información. Los atributo nombre y contraseña serán las
propiedades que también generan los métodos get y set del beans.
package com;
Metodo lor.-.ore
public String g etNombre ()
return nombre ;
Figura 3. Archivo Beans, métodos get y set. Código genera por el autor desde IDE Netbeans
Fuente: Propia.
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
Nombre:
Contrac;etia:
Aceptar
</tr>
<It bl>
<p>
<h:coaaandButton valuc-•Accptar• action•""saludo.xht -" / >
</p>
</h : 1'.or.>
</center>
</h:body>
</ht >
Figura 5. Archivo index.xhtml. Código generado por el autor desde el IDE de Netbeans
Fuente: Propia.
Biennnido
. lodelos de pl'Ogramal'ion
Gustno
Figura 7. Código de salida archivo saludo.xhtml. Código generado por el autor desde el IDE de Netbeans.
Fuente: Propia.
<~aged-bean>
<u:.anaqed-been-n.-uc.e> suar~o< / c.Anaged-bean-ner.e>>
<manaqed- bean• claas>com.Usuazio</ naqed- bean- class>
<n:.a.~aoed-bea~-scope>sess on</ icanaoed-bean-scope>
</ re: no d-b n>
</ :Cace11• con:C1q>
Figura 8. Mapping de FacesServlet faces-config.xml. Código generado por el autor desde el IDE de Netbeans
Fuente: Propia.
En este ejemplo, vamos a crear una aplicación donde implementaremos Select y Option
con JavaServer Faces (JSF), con una entrada de texto mediante el uso de inputText, adicio-
nalmente tendrá una lista desplegable que le permitirá elegir una o varias opciones, el es-
tudiante puede seguir el ejemplo e implementarlo en el IDE de práctica Netbeans o Eclipse.
Index.xhtml: en esta página se le pedirá al usuario unos datos de entrada, donde digitará el
nombre, apellido y la edad y el país lo seleccionará de una lista que se le suministrará.
Saludo.xhtml: esta página de la bienvenida, mostrando los datos que seleccionamos inicial-
mente.
Intl'oducil· us Dato
Nombre:
Apdhdo:
Edad:
________..,..
Aceptar
Figura 9. Formulario ingreso de datos
Fuente: Propia.
El archivo saludo.xhtml se encarga de mostrarla salida con los datos capturados el código
es el siguiente.
Figura 10. Código salida archivo saludo.xhtml. Código generado por el autor desde el IDE de Netbeans
Fuente: Propia.
Gusta\·o Tabares 20
X5i:5che..~Locat1on• •http :''JCllll.ns.~ cp .e~a'xr.tl'nsl~a aee ht~ p ://xrn r.s . c . or / x:Jtl/ns/ avaee/veb-app 3 l . X5d· >
<contexc-param.>
<param-n4J!le>java x. faces . PROJECT_STAGE</par m-nan:e>
<param-v lue> v lop,r. nt <I P<Or -volue>
</contcxt-param>
<servlet>
<servlet - n&J:e> ~aces Servlet </servlet- nan:.e>
<servlet-class>Javax . taces.~ebapp.racesServlet</servlet-class>
<load-on-scarcup>l </load-on-scart p>
</servlet>
<• rvl t -:n4ppin9>
<~ rvl t-n >Foes S rvl t </s rvl t -no >
<url-pattcrn> / facc~/ · </url-pattcrn>
</servlet - u:.appin9>
<ses81on- cont10>
<sess1on-c1.1r.;eout>
30
</sess1on-t1meo t>
</sess1on-conf1Q>
<w le -fil -lit>
<wclcc c-filc>facc3/ 1..ndcx.xht.ml</wclco c-f1lc>
</welcon:.e - tile- list>
</web- app>
Figura 12. Estructura de navegación web.xml. Código generado por el autor desde el IDE de Netbeans.
Fuente: Propia.
package com;
<tr4::o.qed - been>
<inanaoed- bean- n~>usuar1o< / 11t11.naoed- bean- nllllle> >
ona..~a9ed-bean-c:lass>c:=.us ar10</ aeana9ed-bean-c:lass>
<=n•o d-b on-sc:op > ion</ no d-b n- cope>
</man aqe:d-be:an>
</ fac:es-c:cnho>
Figura 14. Mapping de FacesServlet faces-config.xml. Código generado por el autor desde el IDE de Netbeans.
Fuente: Propia.
2Unidad 2
AR€ANDINA MIEMBRODELARED
Fundaci6n Universitaria del Area Andina I LU M N 0
Introducción Hoy el día encontramos mucha tendencia en el diseño del
software hacia una programación más modular, donde la
aplicaciones esta compuestas de una serie de componen-
tes reutilizables que podemos entenderlos como
servicios, estos pueden estar distribuidos a los largo de una
red de computadoras generando información y recursos que
a la vez pueden ser consumidos por alguna aplicaciones
que los requieran.
~---------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 58
3
U2 Metodología
Para cada unidad el estudiante cuenta con un texto que se conoce como guía de actividades,
el cual semana a semana le informa qué actividades tiene para la semana y qué debe hacer.
Así mismo le informa las actividades calificables en su módulo. En dicho texto se incluyen los
objetivos de aprendizaje de la unidad.
La cartilla le permitirá abordar el tema de los web services bajo la programación Java. Se re-
comienda leer cuidadosamente y en forma secuencial la semana para tener una compresión
adecuada del tema.
Servicio web
Un servicio web es un componente al que podemos acceder a través de protocolos web
estándar, haciendo uso del XML, SOAP, WSDL y UDDI sobre protocolos de la Internet como
(HTTP, SMTP, TCP, FTP) como intermediario para el intercambio de información.
UDDI: es el encargado de conocer cuáles son los servicios disponibles para ser consumidos.
Un servicio web es una colección de procedimientos que son compartidos a través de pá-
ginas de internet, son llamados desde cualquier lugar de internet, esta invocación es to-
talmente independiente de la plataforma y del lenguaje de programa en el que se haya
programado el servicio.
Cuando nos conectamos a la Internet y hacemos una petición al servidor web desde el na-
vegador, el servidor devuelve la página solicitada, con la información para ser visualizada
por el usuario, y difícil de entender por una máquina, los servicios web se ofrecen con un
formato estándar para que sea entendido fácilmente por otra aplicación.
Los servicios web son componentes de aplicaciones totalmente distribuidas que están dispo-
nibles a las aplicaciones de forma externa. Pueden ser utilizados para integrar aplicaciones
en diferentes lenguajes y plataformas, debido a los estándares web de algunos servicios web.
Características de los servicios Web
■ Cualquier servicio web debe ser posible su acceso a través de la web. Para esto debe estar
basado en protocolos de transporte estándar como el HTTP, y los mensajes se deben co-
dificar en un lenguaje que pueda ser interpretado fácilmente por el cliente.
■ El servicio debe tener una descripción de sí mismo, esto para que las aplicaciones que lo
invoquen sepan la función determinada de un servicio web.
Un servicio web es un componente de software que se ofrece a través de una página por me-
dio de un endpoint y es accesible a través de la red. Los servicios web tiene la funcionalidad
de ser producidos y consumidos intercambiando información a través de mansajes invoca-
dos por peticiones y respuestas en forma de documentos auto-contenidos.
A nivel técnico los servicios web pueden implementarse de varias formas para ser consumi-
dos por los usuarios, tenemos dos tipos de servicios web: los servicios Web “grandes” (big
Web Services), que también se llaman SOAP, y los servicios Web RESTful.
Hoy en día los IDE de desarrollo como Netbeans y Eclipse, etc. Permiten reducir la comple-
jidad para el desarrollo de aplicaciones que implementen servicios web para los usuarios,
estos están bajo un formato SOAP (formato de mensajes) y WSDL (lenguaje de definición de
interfaces) Se que se ha extendido y utilizado por muchos IDE de desarrollo.
Otro tipo de servicio web es el RESTful (Representational State Transfer Web Services), son
ideales para espacios web de integración básicos ad-hoc. Este servicio se integra mejor con
HTTP que los servicios basados en SOAP, debido a que no es necesario mensajes XML o las
definiciones del servicio en forma de fichero WSDL.
El servicio web RESTful está basado en estándares muy utilizados como son HTTP, MIME,
SML, URI, posee una infraestructura muy práctica (ligera), lo que permite que los servicios se
vallan construyendo con herramientas de forma mínima. Debido a esto es tipo de servicios
es muy económico y no tiene muchos obstáculos para su implementación.
~---------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 61
6
Arquitectura de los servicios web
Los servicios Web entre aplicaciones están basados en una arquitectura orientada a servicios
que permite crear una definición abstracta de un servicio, para poder proporcionar la infor-
mación e implementar de forma concreta dicho servicio, que permita publicar y localizar un
servicio a través aplicaciones, seleccionar una instancia de un servicio, y utilizar el servicio
con una seguridad y calidad. Es posible desacoplar la implementación del servicio Web y su
uso por parte de un cliente. Las implementaciones concretas del servicio pueden desaco-
plarse a nivel de lógica y transporte. La siguiente figura muestra en detalle la arquitectura
orientada a servicios web.
(2) Find
WSDL+UDDI
La página que ofrece el servicio define una descripción abstracta del servicio utilizando el
lenguaje WSDL (Web Services Description Language) Lenguaje de descripción de servicios
web. Lo que permite la creación de un servicio concreto a partir de la dicha descripción. Esta
información descriptiva del servicio puede ser publicada en un servicio de registro como
UDDI (Universal Description, Descovery and Integration). Un consumidor de un servicio
puede utilizar el servicio de registro para localizar una descripción de un servicio, lo que le
permitirá seleccionar y hacer uso de los métodos, eventos y funciones implementadas del
servicio.
El documento WSDL describe de forma abstracta el servicio como un PortType, es este una
instancia concreta de un servicio se define mediante un elemento port de un WSDL, el cual
consiste en una serie de combinaciones de un PortType, un binding de codificación y trans-
porte, más la dirección.
_ __________. _ _ _ _ _ _ _ _ Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina •
62
7
Servicios Web Soap y Java
JAX-WS utiliza JAXB 2.0 para enlazar datos y soportar la personalización de los servicios que
se vayan creando.
Mediante un ejemplo crearemos un web service y este será consumido por tres aplicaciones
clientes de la siguiente forma:
■ Una clase Java dentro de una aplicación Java SE.
■ Un Servlet dentro de una aplicación Web.
■ Una página JSP dentro de una aplicación Web.
Crear un Web Service
Para crear un Web service lo primero es elegir el contenedor a utilizar “Deployment Contai-
ner” para desplegar un web servicies se puede hacer en un contenedor Web o en un con-
New Project
tenedor EJB (Enterprise
JavaBeans).
1. Choose Project
2. .••
Pro~ts: Seleccionamos File – New
Java
JavaFX
COfmti,. ,
Wd>-bon wdhEx,stng Sou-ces
Project, seleccionamos
.lavaWUJ Web Frtt-Forrn ADPkation
en categorías “Java web”
y en Projects selecciona-
JavafE
HTM.5
-
Javac..n:t
Maven
<in>cwy
C/C++
Cn:atcs a.n c.mpty Wc.b application in a standsd IDE project. Astand.d project.uses_,
lOE·oenerated build sonpt t o ~, n.ri, and debug yo,.s p,o,ect.
~---------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 63
8
Clic en siguiente, y asignamos el nombre al proyecto “AplicacionCalculadoraWS”
Figura 3. Definiendo nombre aplicación Web imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
-G)
Steps
I,
2,
3.
4.
Oioose Project
Name and ~lion
Serve r and Settings
Ff"""'worlcs
Server and Sdtings
New Web Apphcat,on
Server : GaissFish-4. 1
-
Add .. .
I
Java EE Vers,on: ~va EE 7 l'ld>] ..,
Contttt Path: /AplicacionCala.ladoraWS
I
Figura 4. Selección servidor GlassFish imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
El paso siguiente es crear el web service, para esto damos clic con el botón derecho del mou-
se sobre el proyecto y seleccionamos new – Web Service…
0
Steps
1.
2.
Choose File Type
Name and Location
Name and Location
New Web Service
- /
< Bade Next > ~i~ Cancel Help
-
Figura 5. Crear Web Services imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Si observamos la estructura de archivos del proyecto vemos que nos ha creado una carpeta
Web Services.
8··
;... index .html
ges
ices
Calcu adora S
Figura 6. Estructura de archivos
hello: String AplicacionCalculadoraES imagen generada por el
+· Con gur ation Fi es autor desde el IDE Netbeans
Fuente: Propia.
.
1 ~ @author G e.tabares
l }
return ello + txt +
Figura 7. Código del Web Services código creado por el autor desde el IDE Netbeans
Fuente: Propia.
Vamos a añadir una operación al web service, cambiamos a modo Desing ubicado en la par-
te superior del código. Con esto no muestra el modo de diseño del web service.
~-c,,i,_.ws
....,,., - - - -
Param1Mn
~·
·-
Paramttt, Name Paramettt rw,1
j.,,... .Siring
Figura 8. Diseño del Web Services imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
En la pestaña parameters se adicionan los valores, en este caso vamos a realizar una opera-
ción de suma.
---,
Parameters Exceptions
l
Down
OK Cancel
Figura 9. Definición del método y atributos del Web Services imagen generada por el autor desde el IDE
Netbeans
Fuente: Propia.
Con esto ya tenemos una operación en nuestro web service, como se ve en la gráfica.
J lfll
Figura 10. Atributos enteros del método del Web Services código creado por el autor desde el IDE Netbeans
Fuente: Propia.
Figura 11. Creación de la programación del método add código creado por el autor desde el IDE Netbeans
Fuente: Propia.
Con esto hemos creado un Web Services que recibe dos números y devuelve el resultado.
Para realizar un test web service, y probar si funciona nuestro ws, damos clic derecho sobre
el proyecto y seleccionamos la opción Deploy. Después damos clic con el botón derecho del
mouse sobre el web service y seleccionamos test web sevice.
ws
Open
Ref res
Test ebSeMce
Figura 12. Test del Web Service imagen generada
por el autor desde el IDE Netbeans
Fuente: Propia.
Para tener como salida la vista del web service que se ha creado.
Tws form will allow you to tes t your web sen·ice implementation QVSDL File)
To inrnke an operation. fill the method parameter(s) input boxes and click on the button labeled with the method na
::Vletbods:
Figura 13. Resultado del Web Service imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
. lethod 1·ehl1'Dtd
mt : "II "
OAPRtquts t
c- > 1 trnon.s· 1.•- t n< 1 .. ,-- IJT• -, -~>-<S ien tlopt -1.nsis-· i,-:tp ://sef'!ff!ls . ho,,p.ort)10-1p1• r t o"r lfa.l ns ~~ - v . - ~ tP / JC tftls. :11. lso.JC1.0J"l/so,,p f•,. t10Pf r,
~-!!: N !l'kJ-:1, .. />
S:~ y
cru: i ..;;:i :: 1n:::!:•"ht:~ 1//c.alcula~.a . ca./ "
~- <lb
<j ~4</ j >
c'rs2 :•dd>
</ 5i eod/>
</S : E"l"il >
OAPR poase
l US!.Or_.,• 1 . e· Cod t"-Cs "\,i-,-.1 .. ?>d ; t ,.. tlcC:• ulnt : !.a"J'lttp: //scl> ,u. ll-Ol:>,O'l"'C ( t. ( tfl tle:0t r II ns : ~ · t ' i \"s ,.. tto: //ldtMH , .SCIP ,OI" S 0/ t! f'I il I">
<~-tw :ritldtr/>
<~ :aod1>
<l'IJZ:6dO=;tJOOl""st 1ulltu :r.:1:• .. tttt ://Cll(1,1ll60f'"l , CC-J'">
< t1'f"n> U </ turfl
c/r u 10d1t ,pons
</ ~: i>
c/ S; f'l \ tlOOt >
Figura 14. Salida métodos Request y Response, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Con esto ya tenemos creado el web services, a continuación crearemos un cliente para con-
sumir los métodos y funciones que tiene el web service claculdoraWS.
Pl'O)eClf«let': •es'Jloa,-,t1~18e-.sPro,tcts~t1on_c.laJldot•_diente
_]
1 packaq a lication_calculadora_cliente ;
animation
2
Apl~onCalokdoraWS
author G entabares
Web Services
7 publ i c class Aplication_Calculadora clien te
Calculador aWS
8
©-
II add: int
Configuration Files
Aplication_Calculadora_diente
109 l / ••
par arqs '" h e
13
8---
Source Paclcag s
apkation_calculadora_d ente
Aplication_Calculadora_diente.java
11
12
13
14
l public static void mai.n (String[J args)
-r
r """" n r
Libraries
~ Ji... A-L - FI:_ _ ....,:: _ &- - - h•il&.. -
15
Figura 16. Aplicación calculadora cliente, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Q l.ocalfile:
Q WSlllUU.:
O me ~tored:
P!ojcct
Pad<.,ge: ...
<Bao: Ne>!>
Figura 17. Definición del WSDL Cliente, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Observemos que el proyecto del web service client integra el WSDL (lenguaje de definición
de interfaces).
1:;:1 ..
8 CalruladoraWS
0 ill CalculadoraWSPor
add
Libraries
Figura 18. Estructura aplicación calculadora cliente, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Para consumir el método del Web Service solo arrastramos el método dentro del main y
asignamos valores a las variables para probar la funcionalidad del web service. El código de
la clase quedaría de la siguiente forma, con el web service incorporado para ser consumido
dentro de la clase Java:
,..
• l!pat args - .. co nd ll.ne ar
•/
p\lbl1c stat1c vo1d m.al.D(Str1ng(J args) <
add( , 4);
return o:
Figura 19. Consumiendo el método add, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Seleccionamos File – New Project, seleccionamos en categorías “Java web” y en Projects se-
leccionamos Web Apllication.
1. Cl>oofC Projcd
2. . ..
C.tc901,....~_._: - - - - - - - - ,
,..
Jlr,,
.w1•Web
Java EE
HlM. 5
la\' MEEl'!lbedd!d
llwac:ard
M.wcn
Ptf>
<irOOYY
C/C.++
0-,,pt,on:
CrHtes an ~mpty Web appkation ria standard a pro)lCt. A~1andlrd proieausesan
[ D>E-9ffl"l'ated buld solpt tobuld, run. and debug 'f«ll lll'O)'!CL
Figura 20. Creación de la una aplicación Web, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Conte Pa tproyectoCalculadoraWSServtetC
Figura 21. Definición del servidor web, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Ahora para consumir el web services, damos clic con el botón derecho del mouse, seleccio-
namos new – Web Service Client.
()
SttDS
I. 0.:-: T~
WSOt. •nd knt ocaii-
New Web Serv1ce Chent
Q W50LI.Jll.:
Q ltE~od: Bro,u,,
Figura 22. Consumiendo el Web Services, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
8 ProyectoCalruladoraWSServ letcliente
S· Web Pages
~ -· WEB-INF
$ · wsdl
•·· ~_!;. j ax -ws-catalog .xml
······ l!J inde .html
8·
!
$ a j ~ e~ d
Seleccionamos Project y en el botón browse
~ It) JDK 1. 7 (Default)
buscamos el web service CalculadoraWS. Y
clic en Finish.
l±J ··El:J Glassfish Server 'l.1
8· Web Service References
Observemos que el proyecto del web servi-
8 Calculadora 15
ce client integra el WSDL (lenguaje de defi-
0 · Ca culadoraWS
8 Calculadora WSPort
nición de interfaces).
add
8· Configuration Flies
ltl··· xml-resources Figura 23. Estructura de la aplicación Web, imagen
,..... ~ MA IFEST.MF generada por el autor desde el IDE Netbeans
Fuente: Propia.
Ahora vamos a crear el servlet para poder usar nuestro web service.
New I Cl Folder. ..
Web Servi ce Client. ..
Bui ld
eb Servi ce ...
Clean and Build
Java Class ...
Clean
JFrame Form .. .
Verify
Java Package...
Generate Java doc
JSP ...
Run Standard Deployment Descriptor (web.xmO,
Deploy ,~ Servlet. ..
Figura 24. Creación del servlet de la aplicación web, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Pacbge: • • • •• • -
Nut>
Figura 25. Definiendo la clase Servlet, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
1/MOpbons:
(used for n.ning main classes or Lrlit lests; e.g. -Xms!Om)
Figura 26. Definiendo el Servlet como punto de entrada de la aplicación, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Ahora vamos a agregar el método “add” de nuestro web service, en el servlet que hemos
creado dentro del método “processRequest”, donde podemos observar código HTML, arres-
tramos el método “add” dentro de las etiquetas <body> </body> del serlvet, y modificamos
el método para que muestra la información de la variable resultado.
Figura 27. Código del Servlet, código creado por el autor desde el IDE Netbeans
Fuente: Propia.
Seleccionamos File – New Project, seleccionamos en categorías “Java web” y en Projects se-
leccionamos Web Apllication.
0 New Pro,ect
ste
me-:
,. ....,.,-----------,
Pto,octs:
.
Oooac>bon:
Ctt.ates an empty Web application n a st.,nd«d !OE prD)Od. A stond«d pro,ect uses..,
Il)(-9ene,~ted 11<,ld so.pt II> buld,-. and deb.,g .,..,, prcje(t,
Figura 28. Creación aplicación Web, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
8 . . . . .. New
rl-11 '-JV:l l'T'I I
Folder ...
Servlet. ..
Build
Web Service Client. ..
Clean and Build
!ti Source Pa~ eb Service ...
Clean
rB Libraries
Verify
~ Java Class ...
1B Configuration Fl l r:r~m...cir:_,_..
Figura 30. Creación del Web Services Cliente, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Ahora para consumir el web services, damos clic con el botón derecho del mouse, seleccio-
namos new – Web Service Client.
~
Ste!!;
,. °""'""""T)II<
L
Clifflt
WSOl and Loa Hon
• Projttt:
New Web Serv,ce Chent
h'11>://loah,&tWJl!IJ/~ a W S ~ a'/15- ~
-
0 ...,,..,.,
Q W51ll~
0 !DE Reg,s....ed, e,...,.
Fuente: Propia.
<body>
<h >Apl1cac 6n JSP< / h
<e start web service invocation - ><hr/ >
<I
r.ry
com. calc ladora.Calcu adoraws Service service• new com. calc ladora . Calculadoraws Service
com. calculadora.CalculadoraWS porr. = service. ger.CalculadoraWSPorr.();
int i 7;
int j 4;
\>
< -- end web sersnoe invocation --e >< hr / >
</ body>
Figura 33. Código del add del Web Services, código creado por el autor desde el IDE Netbeans
Fuente: Propia.
plicacion J p
Resultado = 11
Figura 34. Salida del Web Services, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
3 Unidad 3
AR&ANDINA MIEMBRODELARED
Fundaci6n Universitaria del Area Andina I LU M NIJ
Introducción Los Beans Enterprise son una de las interfaces de programa-
ción de aplicaciones (API) que forman parte del estándar de
construcción de aplicaciones empresariales J2EE, teniendo
como objetivo encapsular los objetos del lado del servidor
que almacena los datos.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
81
3
U3 Metodología
Se recomienda llenar de forma ordenada la lectura de la cartilla para tener una mayor com-
prensión del tema, no se aconseja saltarse el contenido debido a que la programación orien-
tada a objetos es importante comprender bien el concepto.
Para esta semana hay un material de apoyo video capsula, video diapositiva, que le permitirá
afianzar los conceptos y comprender la herencia que se da en la programación orientada a
objetos.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
82
4
U3 Desarrollo temático
Beans Enterprise
Los Session Beans, es importante para saber cómo una aplicación java negocia con el servi-
dor, una de las funciones principales de java Enterprise, es su construcción de componentes
de software modulares, formada por APIS.
Java Enterprise Edition (JEE) es la encargada de coordinarlas, esta APIS puede ser comunes o
compartidas con Java Estándar Edition (JSE) u otras plataformas de programación que debe
cumplir con ciertos requisitos de conformidad para que se dé una integración con JSE.
Algunas APIS están especificadas como componentes únicos para JEE, esta es la que vamos
a tratar en esta cartilla Java Enterprise Beans (EJB).
EJBs es la encargada de detallar como los servidores de una aplicación mueven los objetos
específicamente JBeans.
Servidor
()
Cliente
Figura 1. Objetos de Java Beans del lado del servidor y del cliente
Fuente: Propia.
Desde la versión 6 de Java Enterprise Edition, con la integración de JPA, Java Persistence API.
Los EJB quedan limitados a los Java Beans Session que trataremos en esta cartilla.
Los Session Beans, se encargan de encapsular la lógica de negocio de las aplicaciones em-
presariales, permite separar de forma clara para el desarrollo la lógica del negocio entorno
a los requerimientos como la escalabilidad, la seguridad, la apariencia y transacciones, etc.
Esto se puede aplicar tanto a un equipo de trabajo complejo como también para distribuir
de forma racional en trabajo de proyecto individuales.
Los objetos EJB, residen siempre en el servidor y se requiere de un cliente que interactúe con
ellos, entre el cliente y el servidor se dan dos tipos de Beans.
■ Stateful Session (Sesiones con estado).
■ Stateless Session (Sesiones sin estado).
La diferencia radica en que la interacción en los Stateful, no se cierra, esta permanece abierta
entre las invocaciones a los métodos que interactúan entre el cliente y el servidor. Mientras
que en los Stateless se cierra la sesión después de la invocación de método y hay que volver-
la a abrir cuando se invoque un nuevo método que necesite llevar a cabo esa iteración con
el servidor.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
84
6
Entreurise JavaB eans
lninterrumpida
Servidor
Stateful Session
Cliente
EJBs
- ~
lnterrumpida
Dliente
Esta posibilidad de añadir EJB a aplicaciones web es una nueva característica que se introdu-
ce en Java Enterprise Edition 6.0 y que facilita el empaquetado y el despliegue de aplicacio-
nes web que usen estos Enterprise Java Beans en este caso los Session Beans. Lo que permite
empaquetar de forma fácil el código de la aplicación web y el código EJB en un único archivo
WAR.
En esta cartilla vamos a trabajar con una aplicación web como cliente, para negociar con los
Sessions Beans, podemos también utilizar clientes independientes. Es importante consultar
u poco el link www.java.com/es/download/faq/java_webstart.xml. Allí encontrarán mucha
información relacionada con el Java Web Start.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
85
7
¿Qué es Java Web Start y cómo se ejecuta?
El software de Java Web Start permite descargar y ejecutar aplicaciones Java desde la Web.
Características de Java Web Start.
■ Permite activar las aplicaciones con un simple clic.
■ Garantiza que se está ejecutando la última versión de la aplicación.
■ Elimina complejos procedimientos de instalación o actualización.
Recomiendo visitar el link para estar un poco más empapados del tema que relacionaremos
en esta cartilla.
Para iniciar un ejemplo de Session Beans vamos a trabajar con el IDE Netbeans en nuestro
ejemplo vamos necesitar 4 proyectos enlazados entre sí, con la siguiente función.
■ SessionBean : proyecto Enterprise Application.
■ SessionBeanCliente: App de cliente.
■ SessionBeanClienteLib: Proyecto de librería de clases.
■ SessionBean-ejb : Proyecto para la Sesion Beans.
Vamos crear un proyecto Java Enterprise Edition, para esto damos clic en proyecto nuevo,
seleccionamos en categorías Java EE y en proyectos seleccionamos Enterprise Application.
Figura 3. Creación del proyecto Java Beans, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
86
8
Damos clic en Next>, asignamos el nombre al proyecto “SessionBeanPrimero”, y dejamos por
defecto, damos clic en Next>.
I
0
Steps
I.
2.
3.
Choos<!ePro)'Ct
Name and location
Server and Settings
Name and location
Project Name:
New Enterprise Application
SessionBeanPrimero
A continuación debemos seleccionar los módulos que deben der incluidos en la aplicación,
seleccionamos “Create EJB Module”, en este caso no vamos a utilizar “Create Web Application
Module”, lo desactivamos ya que vamos a utilizar una aplicación Enterprise.
Figura 5. Selección del servidor, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
87
9
Vamos a crear un cliente, a través de un tercer proyecto que será el módulo de la aplicación
cliente.
Vamos crear un proyecto Java Enterprise Edition, para esto damos clic en proyecto nuevo,
seleccionamos en categorías Java EE y en proyectos seleccionamos Enterprise Application
Client.
Categories : Projects :
Java Enterprise Application
Enterprise Appl·caoon with Existing Sources
Java EE
< >
Description :
Creates a new Enterprise application dient project in a standard IDE proj ect. "-
Standard projects use an IDE-generated Ant build script to bu'ld, run, and debug the
nrniPrt "'
Figura 7. Creación proyecto cliente Enterprise, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Different users and proJects can share the same comptlabon 1branes
(see Help for deta s).
Figura 8. Asignando nombre al proyecto cliente Beans, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
88
10
A continuación, añadimos nuestro proyecto a una aplicación Entreprise Application, “Add to
Enterprise Application”, seleccionamos “SessionBeanPrimero”, que es el proyecto Enterprise
que hemos creado incialmente, damos clic en Finish.
Figura 9. Selección del servidor cliente, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
S ionB nPr" ro
SessionBeanPrimero-ej b
SessionBeans_primero_ e
ro_di n
a·n.java
Test Packages
·braries
Test Libraries
Con gur a ·on Fi es
Serv er Resources
Figura 10. Lista de archivos del proyecto, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
En este proyecto tenemos la clase Main.java que utilizaremos más adelante. Ahora creare-
mos nuestro cuarto proyecto de librerías de clases. Damos clic en proyecto nuevo, seleccio-
namos en categorías Java y en proyecto seleccionamos Java Class Library.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
89
11
Choose Project
Ater:
Categories: Projects:
Description:
Creates a new Java SE library in a standard IDE project. A Java SE library does not
conta·n a main dass. Standard proj ects use an ID -generated Ant build script to
Figura 11. Creando el archivo de librerías del proyecto, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Name a nd Location
Figura 12. Asignando el nombre del proyecto cliente Lib, imagen generada por el autor desde el IDE
Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
90
12
Y con esto, tenemos nuestro cuarto proyec-
to creado, el cual debe tener la siguiente es-
P r o jects x Fi les Se rvfoes
El
tructura.
SessionBeanPrimero
8 Jav a EE Modules
SessionBeanPrimero-ejb .jar
© ··
Se ssion.Beans _prime ro _diente .jar
Configuration R ies
Contamos con 4 proyectos con los nombres:
El ··
Server Resources
Sess,onBeanPrimero_CltenteL,b ■ SessionBeanPrimero
e Source Packages
<default pad<age > ■ SessionBeanPrimero_ClienteLib
■ SessionBeanPrimero-ejb
l±l·· Libraries
8- SessionBeanPrimero~jb
■ SessionBeans_primero_cliente
Source Packages
Libraries
Enterprise Beans
Configuration R ie s
Server Resources
El SessionBeans_primero_diente
El Source Packages
El se-.ssionbeans_primero_ d iente
e;.,ain.jav a
T est Pad<ages
Libraries
Test Libraries
Configuration R ies Figura 13. Lista de archivos de todo el proyecto,
Server Resources imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
tipo de archivos “Sessión Bean”, damos clic .. " Timer Session Bean
Contexts and DepE Message-Driven Bean
en Next>. Java
Service Locator
Caching Service Locator
JavaBeans Object!
Session Beans For Entity Classes
UnitTests Standard Deployment Desa'ptor
Persistence
Groovy
< >
"
Description:
Creates an empty Session Enterprise JavaBean (EJB) component. A
session bean is typical y used to encapsulate busness logic or
"
enterprise resources. This template creates 1he Java dasses for a
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
91
13
Le asignamos un nombre al archivo “Car-
New Session Bean
garSession”, creamos un paquete “com.ses-
sionbeanprimero.ejb”, seleccionamos el tipo Name and Location
Padcage: com.sessionbeansprimero.ejb
"
Session Type:
@Stateless
Q stateful
Q Singleton
Create Interface:
0 Local
Sessions Type:
■ Stateless: sesiones sin estado, No se mantiene la comunicación, la aplicación se ejecuta de
modo fluido, pero los valores de las variables no serán consistentes.
■ Stateful: sesiones con estado, mantiene una comunicación entre el servidor y el cliente,
por lo tanto los valores que mantengan las variables miembros son consistentes entre
distintas llamadas de los métodos sin perder la información de los datos.
■ Singleton: este tipo de Session fue incorporado a partir de la versión Java Entrerprise 6.0
y se encarga de crear instancias únicas de hilo para cada Session Beans, se crea cuando
es desplegada nuestra aplicación, trabaja como cache ideal para trabajar con datos que
deban ser leídos muy frecuentemente desde la base de datos.
Create Interface: debemos especificar si nuestra aplicación va a tener una interfaz local o
remote.
■ Local: El cliente se ejecuta en la misma máquina virtual Java donde también se ejecuta el
Java Beans.
■ Remote in Project: Es usada para clientes que se ejecutan en máquinas virtuales java dife-
rentes a las que se encuentran los Beans de Sessions.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
92
14
Los proyectos tendrán la siguiente estructu-
ra: Proj ects X Files Services
[!I SessionBeanPrimero
I
8·· SessionBeanPrimero _Clien teUb
ei
Source Packages
' com. sessionbeansprimero .ejb
~
CargarSessionRemo te.java
ffi·· Libraries
8 SessionBeanPrimero-ejb
I
I, 8· Source Packages
author gtabar s
Stateless
public class CargarSess ion implements CargarSessionRemote {
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
93
15
Veamos la estructura de la clase CargarSessionRemote.java que se creó automáticamente
con la Interfaces que seleccionamos “Remote”.
author gtabare!!
@Remot e
public i terface CargarSessionRemote {
Adicionar la lógica del negocio abajo, con el botón derecho del mouse en el editor y selec-
cionar “Insert Code” y posteriormente Add Bussiness Method, con esto el método que vamos
a crear también se creará en la clase CargarSessionRemote.java. Vamos a hacerlo.
l @Sta
."
publ "
@
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
94
16
Seleccionamos “Add Bussiness Method”. Nos cargará una ventana para asignar el nombre al
método, le colocamos “cargar” y colocamos el tipo de retorno del método en este caso escri-
bimos “String” y adicionamos los parámetros de nuestro método, en este caso adicionamos
uno llamado cargando, como muestra la figura.
ame: cargar
Parameters Exceptions
1··-···Acid-··- ~
Remove
Up
Down
OK C~I
Figura 17. Definición del método del negocio, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Con esto lo que hicimos fue crear un método de tipo String llamado cargar, retornando un
String por defecto. Vamos guardando los cambios del proyecto.
Si observamos las dos clases a las que hemos hecho referencia CargarSession.java y Cargar-
SessionRemote.java, se ha creado el método en la clase CargarSessionRemote.java automá-
ticamente.
emote
public interface CargarSessionRe ote {
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
95
17
Y la clase CargarSession.java, la cual vamos modificar para que retorne un valor, agregando
el siguiente código.
.
author gtaba_es
Stat l ss
public c ass cargarSess ion irr.p ements CargarS essio err.a e {
@Ove::::-r -de
public String cargar(String car gando ) (
ret rn argada :
Hasta aquí ya tenemos un Session Beans que es accedido por un cliente de forma remota y
devuelve un String.
dd Project... =i
Co dd Libra ...
sn ddJ older ...
L Properties
Figura 18 Asignando la librería al proyecto, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
96
18
Y buscamos en la lista de proyectos “SessionBeanPrimero_ClienteLib”, donde está la sesión
remote y clic en Add Project JAR Files.
S· Project ame:
(±]- SessionBeanPrimero_C ientelib
[±}
Project JAR Flies:
(±]· PreubaCodigoJSF
d1stjSesSlooBeanPrinero_ClienteLib.Jar
S·
[±J-
[±1-
8·
Figura 19. Seleccionando la librería para el proyecto, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Ahora es necesario invocar desde el cliente el método que está en la SessiónBeans, para esto
es necesario crear una instancia o referencia de la clase que implementa la interfaces remo-
ta, nos ubicamos en el proyecto que estamos desarrollando “SessionBeans_primero_clien-
te”, abrimos el archivo Main.java pulsamos con el botón derecho del mouse y seleccionamos
insert código, seleccionamos “Call Enterprise Bean”…
, ..
• @param args the coll'Jlland line argun,ents
Generate
Constructor .. .
Logger ...
toStringQ ...
Override Method •..
Add Property ...
Cal Ente= Bean ...
Use Da !abase ...
Send JMS Message ...
Send E-mail. ..
Cal Web Service Operation ...
Figura 20. Llamada al Bean, imagen generada por el
Generate REST d ient. .. autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
97
19
Seleccionamos un Enterprise bean de la lista de Bean crados
Ej emploJSF
FormularioJSF
PreubaCodigoJSF
EjmploWebJSP
SessionBeanPrimero-ejb
Reference Name:
Cancel Hep
Figura 21. Llamada al Beans cargarSession, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
/**
• @author gtabares
,....
~ @param args c~e cc=and line argurr.ents
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
98
20
Agregamos el código haciendo uso la libraría que adicionamos al proyecto, llamando al mé-
todo cargar del SessionBeanPrimero_ClienteLib.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
99
21
1
UNIDAD
3 Unidad 3
Java persistence
API JPA Modelos de programación II
AR&ANDINA MIEMBRODELARED
Fundaci6n Universitaria del Area Andina I LU M NIJ
Introducción Introducción a Java Persistence API, más conocida por sus si-
glas JPA es el API de persistencia desarrollada por la platafor-
ma JavaEE.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
101
3
U3 Metodología
Se recomienda seguir en un orden secuencial la lectura y estar muy atento al código que se
utiliza para el desarrollo de la unidad. En cada ejercicio que se expone, en la unidad, encon-
trará la explicación detallada para una mayor comprensión del tema.
Se recomienda realizar ejercicio basados en los ejemplos que están desarrollados en la uni-
dad para comprender mucho más fácil el concepto de interface en Java.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
102
4
U3 Desarrollo temático
Fecha
Cl veJ Clave_E
Sub_T SUb_T
Total Tot<ll
Cl.we_E
Oiwe_R 00
0-_F Fecha_C
d.,ve_A Clave_A Clave_A
00 Nootire
Cartidad Clave_P Cantidad Oirecoon
I~ e Descripcion Impor e
Sueldo
Existencia
COIIWSIOfl
Precio_V Area
<X>
Punto_R
Clave_T
_T
RF<
Nombre
Oirecc,on
Ciudad
Clave_A
Precio
------------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 103
5
Cada registro usa como identificar un único campo de llaves primarias, las relaciones entre
tablas se representan mediante claves foráneas o tablas joins, respetando restricciones de
integridad, toda esta terminología es propia del modelo relacional. Sin embargo es total-
mente desconocido en el modelo orientado a objetos a objetos propio de Java.
En la orientación a objetos se manejan clases y sus instancias denominadas objetos; los ob-
jetos encapsulan su estado y comportamiento mientras está corriendo la máquina virtual de
Java, si se detiene la máquina se caen o se pierden todos los datos del negocio que maneja
el sistema en ese momento, para evitar esto necesitamos mecanismos de persistencia.
UmClus
Usertd
Uurf,lame
Use.Address
PhoneNo
0.0.B
Object Relational
I Mapping
I
Figura 2. Mapeo Relacional
Fuente:http://blog.jhades.org/solving-orm-complexity-keep-the-o-drop-the-r-no-need-for-the-m/
--------· Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina 104
6
JPA trabaja a través de entities que son clases Java también llamadas POJOS (Plain Old Java
Objects), no necesitan extender a ninguna otra clase o interface y se definen a través de
anotaciones en código que desarrollemos.
@Entity
@Table(nan1e = "CUSTOI{ER" ,schema = "APP" )
public class Customer implements Serializable
@Id
@Co l umn(name = "CUSTOMER_ID" )
private I nteger customerid;
@Basic(optional = false )
@Column(na.me = "DISCOUNT_CODE" )
private char discountCode ;
@Basic(optional = false )
@Column(name = "ZIP" , length= 10 )
private String zip ;
@Co l umn(name = "MAME" , length= 30 )
private String name ;
@entity: Sirve para indicar que una clase Java es una entidad JPA.
Los proyectos que utilizan JPA requieren de una unidad de persistencia, entre las que permi-
te trabajar en el IDE Netbeans utilizaremos eclipse link por defecto.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
105
7
Figura 4. Creación de una aplicación web, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Persistir consiste en guardar datos de un objeto Java en una base datos, a través de conectar
una base datos mediante una conexión pool y una fuente de datos.
Entidad son objetos que contienen información de mapeo que viven a corto plazo en me-
mora y persistentemente en base de datos, Java Persistence API dispone de una interfaz lla-
mada entity manager, con una serie de métodos para que podamos operar con ese conjunto
de entidades. Al conjunto de entidades asociadas con los registros de una base de datos se
le llama contexto de persistencia, es importante resaltar que la aplicación lo que maneja
son entidades del contexto de persistencia, cualquier cambio se realice en estas entidades
se trasladara automáticamente a la base de datos subyacente de forma transparente para
nuestro código.
Choose Project
F~ter:
Java
JavaFX
Java Web
Java EE
HTMLS
Java ME Embedded
Java card
Maven
PHP
Groovy
C/C++
Description:
Creates an empty Web application in a standard IDE project. A standard project uses an
IDE-generated build script to build, run, and debug your project.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
106
8
Frameworks
D Struts 1. 3. 10
Figura 5. Java Server Faces, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Para crear una entity JPA creamos un nuevo archivo y buscamos dentro de la categoría la
opción de “Persistencia” y tipo de archivo “Entity Class”.
Project ProyectoJPA
Filter:
Figura 6. Creación de la Entity Class, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
107
9
Clic en botón Next>, asignamos nombre a la clase “Estudiante”, y creamos un paquete llama-
do com.persistencia, verificamos que este seleccionado la opción “Create Persistence Unit”,
parra cada entity class se crea una unidad de persistencia bajo un archivo xmly damos clic
en Next>.
Project: Pfoyecto.J>A
loc:abon:
P~: com.persistenda
Prrnary~yTYP':: Llong
~----------------------~
Figura 7. Nueva Entity Class, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Asignamos un nombre a Persistence Unit Name o dejamos el que nos da por defecto, en la
opción Persistence Provider seleccionamos el proveedor “EclipseLink (JPA 2.1)(default)” Ele-
gimos la fuente de datos “Data Source”.
New File
Data SOl.l'ce:
.Nl!Name: ProyectoPA
Databaso C........ction:
:dorby:/,1ocallost: 1527/sarrp,, [ - on APP]
:mysq:/fttx,ihost:3306/dba>ntactos?zeroDateTmeBehavior-c
:SQlserver:/fttx,ihost: M3J;databaS<Nam<•Obporsonal (gu<:n
OI canc.i Help
Figura 8. Definición conexión a la Base de Datos, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
108
10
Data Source: JPA permite la conexión a la base de datos a través de una conexión pool Java,
agrupamiento de conexiones. Estas conexiones nunca se cierran ventaja que tiene frente a
JDBC y permiten tener la información del servidor, nombre de la Base de datos, el usuario y
clave de acceso a la base de datos.
Para esto en necesario utilizar una instancia de JEE de Javax.sql, Interface DataSource a tra-
vés de la API (JNDI) Java Naming and Directory.
Locate Driver
Aquí encontraremos los Drivers para diferente fuente de datos entre los que encontramos
Microsoft, MySQL, Ocracle OCI, PostgreSQL, etc. Para este ejemplo elegimos “Java DB (Net-
work)”, que significa Java Derby, se despliegan los driver derbyclient.jar y el derby.jar necesa-
rios para este ejemplo, damos clic en Next>. Proporcionamos los datos de conexión, nombre
y usuario a la base de datos.
Customize Connection
jdbc:derby:/f,ocahost: 1527i06Proyectojpa;aeate=true
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
109
11
En la opción JDBC URL: agregamos a la línea jdbc:derby://localhost:1527/DBproyectojpa; la
instrucción de créate=true debido a que la BD no existen para que Netbeans la cree, pode-
mos probar la conexión en el botón “Test Connection”. Damos clic en Next>.
For eaKti databa2 CX>nlleCbon, h ~ -,do.., only dispa'f\5 obj,,cts om one database sdlema.
5eKt ~ SlChenaof~ ~ ID be dsJ:Cay~ .
...
Figura 11. Selección del esquema de la BD, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Con esto damos clic en Next>, donde muestra al input de conection a la base de dato, damos
clic en Finish, luego en botón Ok.
En la opción Table Generation Strategy, seleccionamos Drop and Create lo que permite cada
vez que ejecutemos la aplicación borrar y crear la tabla de la base de datos, pulsamos en el
botón Finish.
A continuación se muestra el código generado por Netbeans, para la entity la cual corres-
ponde al archivo Estudainte.Java. Con la anotación @Entity lo que significa que es una clase
entidad JPA.
rr.po t java . io .S r i l z b l e ;
import j a v ax . persistence . En t ity;
1.~port javax. ersistence.GeneratedVa
import j a v ax . persistence. e n erat ionType·
@Id, es indicada para el campo
import java.x.pers istence . Id ;
de acceso en JPA es la llave pri-
maria @Id, es indicada para el
campo de acceso en JPA es la lla-
• @author G~entabares
ve primaria
@En t ity
public class Estud iante implements Seria iz a ble {
private static final long serialVersionUI L;
@Id C:,
@GeneratedValue(strategy Generation ype. AU'.fO)
private Long id; C:,
@GenerateValue, permite generar auto-
public Long getld ( ) máticamente la llave primaria JPA, me-
return id ; diante la estrategia GenetationType.AUTO
(lOverrid.,
pi.blic int hashCode () I
int hash= O;
hash+= (id ! = nul ? id . hashCode ( ) 0) ;
ret rn hash ;
@Override
public boolean equals (Ob J ect obJ ect ) {
•"• - t ~ t rk in the case the id tie ds are ot set
it (! (object instanceot Est diante))
return talse ;
ret rn true ;
@Overr i de
public Serino toStrino ( ) (
return "co .~ers1.stenc1.a.Estud1.ante[ 1.d=" 1.d + " )" ;
Figura 12. Anotaciones de la clave primaria, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
111
13
En el siguiente cuadro se muestra las diferentes opciones que se pueden utilizar para cada
GenetationType.AUTO.
Figura 13. Tipos de anotaciones de la entitys, imagen generada por el autor desde el IDE Netbeans
Fuente: Extraída de docs.oracle.com/Javaee/6/api opción GenarationType.
En el archivo Estudiante.Java vamos adicionar los campos nombre y apellido de forma pri-
vate para la clase entity.
@Entit y
public class Est~diante implements Serializable {
private static final long serialVersionUID = lL;
@Id
@GeneratedValu e (strategy = Ge n erationType . AUTO)
private Long id ;
private Str i ng ~ ;
private Str i ng a 1ll1dos ;
Generate d () {
Constructor ...
- Logger .. .
Getter .. .
Setter .. . id) {
Getter and Setter ...
_ Delegate Method .. .
Override Method .. .
Add Property ...
Use Entity Manager ,,,
cal Enterprise Bean ...
Use Database ...
Send JMS Message , ,, ! = null ? 1d . h ashCode() 0) ;
Send E-mai...
- Call Web Service Operation .. ,
Generate REST Ctient. ..
Figura 14. Generación de los métodos Getter y Setter, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
112
14
Presionamos la tecla Alt + Insert, para crear los métodos Getter and Setter, de la clase.
D Encapsulate Fields
Figura 15. Selección de atributos de la clase, imagen
Generate Cancel generada por el autor desde el IDE Netbeans
Fuente: Propia.
Seleccionamos los campos y damos clic en Generar, dándonos como resultado los métodos
dentro de la clase Estudiante.Java
El Data Acess Object o patrón de diseño DAO, permite resolver este problema abstrayendo y
encapsulando el acceso a datos. El DAO se encarga de manejar la conexión con la fuente de
datos permitiendo acezar obteniendo y guardando de forma persistente los datos.
A través del DAO este realiza operaciones de forma automáticas hacia la BD, no son nece-
sarias las transacciones, como ejemplos podemos mencionar las búsquedas por ID, los pro-
cesos de creación, actualizado y borrado de registros, consultas u otras operaciones que se
realicen a menudo en la aplicación.
Welb applicailion
Welb appli,cailion
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
15
113
Es necesario crear la clase controller JPA de la entity creada anteriormente (Estudiante.Java),
las clases controller siguen el patrón de diseño DAO.
Para crear la clase damos clic en archivo, Nuevo Archivo y seleccionamos en la categoría
Persistence y en tipos de archivos seleccionamos JPA Controller Classes from Entity Clases y
clic en Next>.
New File
Pro)'CI: [ ProyectDPA
Flter :
tI Java
Swilg GUI Forms
i..v.a.onsOb~
AWT GUI Forms
l.k'litTests
Persastence
Clesa<>tion:
Crea tes a set of FA controler das.ses and related dasses from a ~t of entity classes .
Seleccionamos la Entity a la cual le vamos a crear la clase controller y clic en botón add>,
luego clic en botón Netx>.
Entity Classes
< Remove
Add All »
<< Remove AD
~ Indude Referenced d asses
Figura 18. Controlador de la Entity Class, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
114
16
Verificamos en nombre del proyecto, la ubicación del paquete com.presistencia y damos clic
en Finish.
New JPA Controller Classes from Entity Classes
l, Choose Fie Type Specify the location of the JPA controler classes and related classes.
2. Entity Oasses
3. Generate JPA Controller
Project: Proyecto.J>A
Classes
Location: Sou-a, Packages .,
Package: com.persistencia .,
/
Figura 19. Clase Controlador, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
public void cn,ate (E~tudiant e e~tudi onte ) throw~ RollbockFoiluzeException, Except ion {
£nt1tyHa.naqer em• null ;
try
u tx .beqin () ;
e - oetEntityManoqer () ;
~.per919t(e9~udia.nte);
ut x . commit O ;
catch (Exception ex) I
try I
u tx . rollback () ;
catch (Exception re)
~brow new Jtollbacktail re~xcep~ion( "Ji.n error occurred acc9IP~1nq co rel back che cransacc10n." , re);
throw ex;
finally I
if (em!• null )
. clo~e O;
Figura 20. Método créate, código creado por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
115
17
Este método utiliza una instancia de la clase Estudiante como argumento, invocando al mé-
todo em.persist(estudiante) que pertenece a la clase getEntityManager.
public void cdit(E~tudiante estudiance) throws NoncxistentEncicyException, RollbackFailureException, Exception C
tntltyHanaqer em• null :
ery I
ue >< . beqln () ;
em• 9et£nt1.tyMana9er();
seudlanee • roe(estudl nee);
Ut X,CO?tml.t ();
caech (Excepeion ex ) I
ery I
ue x . rollback() ;
catch (Exception re)
thro~ n e w RollbackFailurcExccption( •1'zl error occurred attc.aptinq to roll bac, the transac~i n.• , re);
throw ex;
hnally
if I ! - null )
~ - Cose():
Figura 21. Método editar, código creado por el autor desde el IDE Netbeans
Fuente: Propia.
Este método utiliza una instancia de la clase Estudiante como argumento, invocando al mé-
todo em.merge(estudiante) que pertenece a la clase getEntityManager.
public void de troy(Lono id) throws Nonex1stenttntityfxception, Rollboctfa1luretxcept1on, Exception {
!ntityMa.naqcr ~ • null ;
cry {
ut:x . be<1in();
em• oet!nt1ty>.1anaqer();
tstudiante estu:cuante;
try
estudiante • em.oetReferenc (Estud1onte . closs , id);
c~tudiante.qctld ();
cacch (Ent:1tyNotFound.E.xcept1on ente) {
ehrow new Noncxi3tcn~EntityExcep~ion( •T.c cstudiantc with i d • id+ • no lenocr exists.• , enfe );
throw ex;
Hnolly <
if (em ! • null )
em . close: () :
Figura 22. Método destroy (Long id), código creado por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
116
18
Este método recibe un parámetro id, que es el campo principal de la entity para recuperar el
registro de la Base de Datos.
return q.qetResultList();
finally {
em. close();
Figura 23. Métodos de recuperación de registros, código creado por el autor desde el IDE Netbeans
Fuente: Propia.
estudiante
materia
ldEstudiante : int(11 )
® Nombres · v archar(25)
® Ma eria : varchar(25)
® Apellidos : varchar(25)
® Direccion : varchar(50)
® Telefono : varchar(12)
L
Figura 24. Esquema grafico de la Base de datos, imagen generada por el autor
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
117
19
Esquema de la Base de Datos Script SQL
CR!A!'! T;.J!LE IF !IOT EXISTS utu~,a.~tc .
ICIEnu'114lltC int (ll ) NOT Nlll.L ,
Nc::hre9 · varchar (2S , !iOI JULL,
' A1:•ll1Clos vo.rc!lor (25 ) !iOT ~1JLL ,
' D1rcee10:, · vo.rcho.r (SO) liOT !iUlL ,
Tclc!ono · varc!lar (1 2) NOT • ll,
PRIMARY iCEY ( ICIEst d16ntc )
£1iGIN!:• Ir:.oD3 DHAUL'! C!'..ltRS!: t!B ;
Figura 25. Esquema de la Base de Datos en Script SQL, imagen generada por el autor
Fuente: Propia.
En Netbeans crearemos las entities JPA de modo automático a partir del esquema y las apli-
caciones Java Server Faces de las entidades JPA.
Abrimos el archivo universidad.sql, damos clic en File, Open Archivo y seleccionamos univer-
sidad.sql, para crear la BD vamos la pestaña Services y seleccionamos Java DB con el botón
derecho del mouse, y damos clic en créate Database ….
©·
$··
lt}
$··
i
Stop Server pro yectojpa;create =tr
Figura 26. Creando la Base de Datos, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
118
20
Creamos la base de datos con los siguientes campos:
0 Create Java DB Database
Database Name : ._
Fef
_·_er_sid
_a_d _ _ _ _ _ _ _ _ =:]___,
User Name: § ert
Password:
:=::...--======~
E••••
Conlirm Password: E••••
Database Location: C:'j.Jsers\Guentabares~netbeans-derby Properties ...
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
119
21
Persistencia en nivel web
Para crear las entities de la base de datos vamos a crear un proyecto web application, para
esto creamos nuevo proyecto.
Choose Project
Filter:
Projects:
Java
JavaFX
Web Free.form Application
Java Web
Java EE
HTMLS
Java ME Embedded
Java card
Maven
PHP
Groovy
C/C++
Description:
Creates an empty Web application in a standard IDE project. A standard project uses an
IDE-generated build script to build, run, and debug your project.
Figura 29. Creación de una aplicación web, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Frameworks
D Struts2
0 Struts 1. 3. 10
Figura 30. Frameworks JavaServer Faces, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
120
22
Dejamos por defecto las demás opciones y damos clic en Finish.
Para crear una entity JPA creamos un nuevo archivo y buscamos dentro de la categoría la
opción de “Persistencia” y tipo de archivo “Entity Class”.
Clic en botón Next>, asignamos nombre a la clase “Estudiante”, y creamos un paquete llama-
do com.persistencia, verificamos que este seleccionado la opción “Create Persistence Unit”,
parra cada entity class se crea una unidad de persistencia bajo un archivo xmly damos clic
en Next>.
Crear las entities de la base de datos creamos un archivo nuevo, clic en file –> New File, se-
leccionamos la categoria “Persistence” y en tipos de archivos “Entity Classes from Database”.
Clic en Next>.
0 New File
Categories:
JavaBeans Objects
AWT GUI Forms
Unit Tests
'Ji'A Controler Classes from EMty Classes
JSF Pages om Entity Classes
Persistence
Persistence I.ht
Groovy
DB S~ts om Entity Classes
Hibernate - Database Schema
Web Services Session Beans For Entity Classes
XML RESTful eb Services from Entity Classes
r.l;ossFish RESTful eb Services from Data base
< >
Creates Java Persistence Af> entity dasses based on an exisu,g relational database , En ·
classes are used to represen objects whose lifespan is longer than a typical program execution ,
1hs template creates an en ·ty class for each selected table, romplete with named query
arnotations, fields representng columns, and relationships representing foreign keys,
Figura 31. Creando archivo entity Classes from Database, imagen generada por el autor desde el IDE
Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
121
23
Escogemos la opción de “New Data Sourde” de la ventana Data Source para asignar la fuente
de la base de datos.
D.ltabase Tables
Data Source:
Available Tabh~ava:comp,'DefaultDataSource
, - - - - -~,-,dbcj_default
~dbc/_ TmerPool
Udbc/sample
1!lli It. . '
Figura 32. Nueva fuente de datos, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Figura 33. Selección del jdbc:derby, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Nos carga la tablas que integran la base de datos, las cuales seleccionamos y add all >>. Y
clic en Next>>.
0 New Entity Classes from Database llllillll
Steps Databa:se Tables
Add >>
<< Remove AD
/
<Bade Next >"] Cancel Help
Figura 34. Selección tablas de la base de datos, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
122
24
En la ventana siguiente nos permite cambiar el nombre de las clases de cada tabla de la base
datos, las dejamos por defecto, creamos un paquete para las clases.
Entity Classes
Class Name:s:
Database Table Oass Name Generation Type
Project: UniversidadJPA
Figura 35. Clases Entity, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
El· UniversidadJPA
l
8 Web Pages
Ii) WEB-IF
L. . ~ index.xhtml
- · Source Packages
Podemos observar en el proyecto la crea- !_ 8- ··· com.jpa
ción de las entities para cada una de las ta- i
1
blas que conforma la base de datos.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
123
25
Ahora crearemos las aplicaciones JSF para cada una de las entidades JPA.
Para esto creamos un nuevo archivo file -> New file, seleccionamos la categoria JavaServer
Faces y en tipos de archivos seleccionamos JSF Pages from Entity Classes.
RI r:
Categories:
leb
HTMLS JSF Managed Bean
JSF Faces Configuration
JavaServer Faces
JSF Composite Component
Bean Validation
Strut:s2 JSF Resource Library Contract
Struts JSF Faces Component
Spring Frame Nork Facelets Temp ate
Enterprise JavaBeans Facelets Template Clien
r.nnh> i',:: ~nn nPnPnnpnrv Tni1 ¥
< >
Figura 37. Creación de las Pages from Entity Classes, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
En la siguiente ventana nos permite seleccionar las entities para la creación de las páginas.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
124
26
New JSF Pages from Entity Classes
Entity Classes
[ << Remove
~ Indude Referenced Classes
Figura 38. Selección de las entities JPA, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Verificamos el nombre del proyecto y podemos cambiar los paquetes para los Session Bean
Package y las Classes Package de la aplicación, las Sessions Bean es el encargado de la con-
trolar la lógico del modelo con la base de datos. Y clic en Finish.
Specify the package of e.,aslslg or ~ w EJBs and the package of JSF dasses.
Project:
Figura 39. Definición del package de la Sessión Bean y las Classes Package, imagen generada por el autor
desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
125
27
Ya tenemos nuestra aplicación con los archivos generados de cada una las entities JPA, los
controladores, las páginas web para cada entidad (Create.xhtml, Edit.xhtml, List.xhtml, View.
xhtml). Aplicación CRUD, la cual podemos ejecutar para ver su funcionamiento.
El··· UniversidadJ ~A
$ Web Pages
$·· WEB-I F
$· es tudiante
r· l!J Create.xhtml
i···· ~ Edit. xhtrnl
L. [!l ust. xhtml
L. ~ Vie .xhtrnl
materia
nota
reso ces
index .xhtml
i .. [!J temp(ate.xhtm
s Source Packages
$·· <default package >
$· com.jpa
$·· com.jpa ,util
El··· com .jpacontro er
?·--- ~ Abstractfacade.java
l···· cti Estudiantefacade.java
r·· Materiafacade ,java
Notafacade.java
L"braries
Enterprise Beans
Configuration Files
Server Resources
Figura 40. Estructura de archivos de la aplicación UnivesidadJPA, imagen generada por el autor desde el IDE
Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
126
28
1
UNIDAD
4Unidad 4
AR&ANDINA I MIEMBRODELARED
Fundacion Universitaria del Area Andina I LU M Ntj
Introducción El uso de la internet, ha abierto multiples alternativas para los
usuarios, desde el comercio, tranferencias de datos, procesa-
miento de informacíon, etc. El desarrollo de aplicaciones cada
vez debe garantizar a los usuarios la confiablidad y el buen
uso de las aplicaciones web. Por eso es importante la seguri-
dad que debe rodear y proteger estas aplicaciones y no per-
mitir que usuarios mal intencionados hagan uso idenbido de
la información y que esta quede alamcenada correctamente
en los repositorios de bases de datos de forma segura.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
128
3
U4 Metodología
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
129
4
U4 Desarrollo temático
Seguridad web
Una aplicación web segura puede ser tan compleja como necesite el sistema, requiere de
conocer los puntos vulnerables de la seguridad. Identificar de forma clara, las posibilidades
de seguridad que ofrecen algunos sistemas operativos y aplicarlas funciones de seguridad
para contrarrestar las amenazas.
En la siguiente lista encotraremos algunas pautas que seguridad minima que deben aplicar-
se a una aplicación web y que se deberian de tener en cuenta para dar mayor seguridad y
las cuales deberiamos de seguir.
■ Recomendaciones generales de seguridad para aplicaciones web.
■ Ejecutar aplicaciones con privilegios mínimos.
■ Conocer a los usuarios.
■ Protegerse contra entradas malintencionadas.
■ Tener acceso seguro a bases de datos.
■ Crear mensajes de error seguros.
■ Mantener segura la información confidencial.
■ Usar cookies de forma segura.
■ Protegerse contra amenazas de denegación de servicio (Microsoft, 2007).
ntcrface
, , _ _ , de
,,.usuario
._..
' L6 ica de ne '"Ocio
ttTTPS d
docum nos
HTTPS de
XML sat 11t~s
.... documentos
emo mo
Proxy
'
s, <lo de
segurieiad int no
_____________________ I:::::----------------.
a
• - - - - - - - - -111-
M
Qu ue S
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
132
7
La gráfica muestra la arquitectura de seguridad, ha sido segmentado y controlado por fi-
rewalls, protegiendo los servidores de contenido, la base de datos etc.
En una base de datos relacional la lógica de la aplicación lanzara consultas en lenguaje SQL
sobre protocolos como Tabular Data Stream Oracle Net y en el caso de un repositorio en
formato por XML utilizará consultas XPATH.
Cuando se presentan fallas en una aplicación web, permitiendo el acceso indebido de usua-
rios no autorizado para estraer información de un sistema informático, se debe en una alta
probabilidad de un fallo de seguridad en el codigo de la aplicación.
Los casos más comunes de ataques a las aplicaciones web según la OWASP (Open Web
Application Security Project) son:
■ Injection.
■ Cross-site Scripting (XSS).
■ Broken Authentication and Session Management.
■ Insecure Direct Object References.
■ Cross-Site Request Forgery (CSRF).
■ Security Misconfiguration.
■ Inseccure Cryptographic Storage.
■ Failure to Restrict URL Access.
■ Insufficient Transport layer Protection.
■ Unvalidated Redirects and Forwards (Institute, 2012).
A traves de estos ataques, intentan explotar fallos de seguridad de aplicaciones web en tec-
nologías de cliente o servidor, con la intención de extraer informacion de la base de datos.
Inyeccion de código SQL en aplicación web
Se presenta cuando una aplicación web no validad correctamente los datos que introduce el
usuario en la interfaz, y que se utilizan en consultas a repositorios de datos.
Employee Logon
Us@rnam@:
Password:
LOQin
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
133
8
Un sistema web, que tiene un sistema de validación de usuario, a traves de un formulario
donde se digita el login y un password, sino se valida por parte del programador correcta-
mente la información que recibe del formulario a traves de una concatenación, construyen-
do la consulta que se envia al servidor de la Base de Datos, el atacante puede interactuar di-
rectamente con la Base de Datos, como por ejemplo inyectando consultas SQL extrayendo,
modificando y eliminando información.
Employee Logon
Los ataques a traves de estos formularios, se dan cuando el atacante no introduce una con-
traseña correcta, al contrario digito una condición utilizando un carácter especial de comi-
llas simple.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
134
9
■ Conjunto de interfaces y arquitecturas que son proporcioandas con el programador de
aplicaciones Java API, El API es un biblioteca de componentes que se agrupan en liberias
o paquetes que se integran en las aplicaciones, proporcionando una gran variedad de uti-
lidades para la construcción de interfaces gráficas, acceso a bases de datos, redes, entrda
y salidad E/S, etc. La API tambien nos proporcionan librearias o paquetes que implemen-
tan o permiten el acceso a elementos de seguridad en varios niveles, en los que podemos
mencionar los algoritmos de encriptación, certificados y firmas digitales.
Enterno de ejecucuión: inicialmente la seguridad para los usuarios esta en la máquina vir-
tual, como mediadora y controladora de lo que se puede ejecutar y bajo que cirscunstancias
se ejecuta.
Una máquina virtual de Java contiene un mecanismo de verificador de clases, el cual permi-
te asegurar, al cargar las clases, si estas tienen o cumplen con la estructura interna correcta.
Al detecrar un patron o un problema dentro de la clase se genera un excepción, ya que la
estructura de la clases se genera con una estructurra de bytes. La máquina virtual no puede
determinar sin una clase en realidad es un bytecode, con relación a esto la máquina virtual
tiene un verificador de clases que se activa sobre clases no seguras, permitiendo la correc-
ción del código.
Uno de los objetivos del verificador de la máquina virtual de Java es garantizar la construc-
ción de aplicaciones robustas, bien estructuradas y seguras en su codificación, cuando el ve-
rificador detecta un codigo mal intecionado en algun método, generando una incosistencia
en la ejecuación de la clase la máquina virtual no funcionaria si este es invocado.
La verificación del bytecode generado se realiza despues de ser cargado, donde el verificar
inicia su tarea de comprobación en dos fases.
1. Se realiza despues de cargar la clase, comprueba la estructura interna de la clase y la
integrigirdad del bytecodes.
2. Se llave a cado durante la ejecución del bytecode generado de la clase, confirmando las
referencias simbolicas de las clases, atributos y métodos.
El cargador de clases en Java
Es el que se encarga de cargar los bytecodes definidos que definen la clase, para ser veri-
ficados y poder generar las clases finales. La máquina virtual incluye un cargador de clase
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
135
10
primario que a su vez es la clase en Java verificadora de el bytecode de las clases creadas de
la aplicación y el cargador de clase primario esta desarrollado en C.
La seguridad tambien esta presente en el cargador el cual cumple con las siguientes tareas:
■ El cargador primario es el encargado de invocar incialmente el paquete Java.*, donde to-
das las clases tienen un apuntador null. Para la seguridad es importante debidio a que son
las clases basicas de inicialización y correcto funcionmianto del sistema y son cargadas
desde el sistema de archivos local evitando que sean cargadas remotamente o reempla-
zadas.
■ El cargador facilta espacios de nombre de clases diferentes para ser cargadas, evitando
la duplicidad, las coliciones entre los nombre de clases cargas desde difretnes origenes.
■ Dentro de la máquna virtual no pueden cargase ni comunicarse clases provenientes de
fuentes diferentes, evientando la obtención de información de aplicaciones no fiables.
ClassLoader
Es una clase que carga otras clases, ClassLoader se encarga de verificar las clases de una apli-
cación en memoria según el requerimiento que tenga la máquina virtual Java.
Clases
e n ,on ____ carga •••
k/li xt pa,s xml
Classloader d
proveeclor rldcld
System
Class Loader
·---- desd
ClassPa Cla,es
adlcion s
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
136
11
Una de la cosas más importantes entre ob-
jetos son las relaciones que se dan en la
ClassLoaders, entre si como padre/hijo.
.....··
····• .
.
Si
, ------------·
.:
9 delega
padre
Integer
. ... ..
. ... No
. --0-. delega
' padre
d a
--
p re
. --
,
, -------- . l
Extension 1n1eger !
ClassLoader
Imagen 10. Delegación de la classLoader
' ' Fuente: http://www.arquitecturaJava.com/el-
' ' concepto-de-classloader/
a
Cuando se carga la clase persona por la
,-- padre
ClassLoader:
System
ClassLoader
• delega
padre
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
137
12
1
UNIDAD
4 Unidad 4
Seguridad en
aplicaciones web Modelos de programación II
AR&ANDINA I MIEMBRODELARED
Fundacion Universitaria del Area Andina I LU M Ntj
Introducción La protección de las aplicaciones web es un requerimiento
que debe estar muy presente entre el desarrollo de dichas
aplicaciones, los constantes ataques que sufren las aplicacio-
nes por diferentes medios, es sin lugar a dudas el quehacer de
los atacantes a diario.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
139
3
U4 Metodología
Es importante llevar a cabo el desarrollo de la semana de una forma secuencial, para tener
una claridad en el desarrollo del tema, se recomienda no saltar entre páginas, pues el desa-
rrollo del tema está enfocado al seguimiento paso a paso de una actividad.
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
140
4
U4 Desarrollo temático
Esta información de seguridad puede ser almacenada desde distintos dispositivos, desde
un archivo plano a una Base de Datos Relacional o un Repositorio. El configurar la aplicación
para que obtenga la información segura de un almacenamiento persistente nos libera de
mucho trabajo, solo debemos definir la autenticación de la aplicación para que use un do-
minio de seguridad.
USUARIO
Grupo de
permisos
Imagen 1. Grupos de usuarios
Fuente: http://www.metaspaceportal.com/metaspace/portal/15043/15583-users-and-roles?pms=1,15138,15
060002,view,normal,0
Existen diferentes modos para autentificar a los usuarios, el más común es el autenticación
basada en formularios, lo que requiere de una página HTML o JSP, para capturar los datos
de autenticación que digite el usuario, además de capturar la información de proporcione
el usuario se puede encriptar la información configurando las páginas para que usen HTTP/
HTTPS sobre SSL.
Redireccion
2
Login .jsp - i l l ( - - - - - - a a pagina - -
de login
3. Formulario
---- - - - j.security_check ------
enviado
Error
Se devuelve
p6gina de error
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
142
6
Los pasos para llevar a cabo este proceso, se debe de crear inicialmente una página de login
y otra página para el manejo de errores, cuando no se dé un login correcto. La aplicación
web debe ser configurada en el servidor para que pueda usar un dominio de seguridad y el
que se encargara de la autenticación.
El primer paso es iniciar el IDE de desarrollo NetBeans y creamos un nuevo proyecto, Web
Application, al cual llamaremos securitylogin, clic en Next>
L
2..
Choose Project
Name and Location
Project Name: 4¥.IIUfM
3. Server and Settings Project Location: D:'Qtabares'l',ty Ooruments'l\letBeansPro,ects Browse...
4. Frameworks
Project Folder: O:~tabares'l',ty Ooruments'l\letseansProjects\scositylogw,
Imagen 3. Nuevo proyecto Web Application, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
1.
2.
Choose Project
Name and Loca tion
Add toEnterpnseAppk:ation: "k'"'N.=,one
=>_.._.. __.._- _-__ ··===-·-"·_-_-_
·:-_-_·._·-_-_-_-_-_ -_·-_-=_-=__. .~.! v
3. rv rand tting
4. FramewO<l<s
Server: Glas~sh Server 4.1 v Add .. .
Imagen 4. Servidor GlassFish, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
8
L Cl! u Ul,J~!
Find ...
00 JSF Page...
Ii Session Bean ...
Paste Ctrl+V Java Class.. ,
Con
Java Paclcage...
Session History
Sessio RESTfu l Web Services from Entity Classes ...
Session\....._ _P_ro_p_e_rt_i_e_s --nc-,n.,--i Servlet ...
SessionBeans _prlmero _dien Timer Session Bean ...
Web Service fro m WSDL. ..
Entity Class ...
JSF Pages from Entity Cla sses .. .
@ Entity Classes from Databa_se.. .
00 JSP...
Imagen 5. Creación del archivo jsp, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
143
7
Asignamos el nombre login.jsp y damos clic en Finish.
l ocation:
Opbons:
@Fac*ts
Q JSP Fie (Standard Syntax) Crea~ as a JSP Segnent
Description:
Faulets syntax
Imagen 6. Creando el archivo login.jsp, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
Modificamos el código del archivo login.jsp que nos permita crear un formulario para ingre-
sar datos del login, como muestra la siguiente figura.
Imagen 7. Código formulario login.jsp, código creado por el autor desde el IDE Netbeans
Fuente: Propia
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
144
8
La acción del formulario action=”j_security_check” es compactible con los desarrollos de
aplicación del servidor en Java Entrerprise Edition - JEE, este cuenta con un servlet de se-
guridad implementado en la instalación, este servlet es mapeado a la URL j_security_check.
En el siguiente paso se crea la página de loginerror, damos clic derecho y creamos un archivo
jsp en nuestra aplicación.
New JSP
Options:
@ JSP Fie (Standard Syntax) D Create as a JSP Segment
Q JSP Document (lO,t. Syntax)
~bon:
A JSP file using JSP standard syntax .
Imagen 8. Página de loginerror.jsp, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
Imagen 9. Código loginerror.jsp, código creado por el autor desde el IDE Netbeans
Fuente: Propia
Fundación
Fundación Universitaria
Universitaria del
del Área
Área Andina
Andina
I
145
9
A continuación configuraremos el Deployment Descriptor, Descriptor de Implementación
XML de nuestro proyecto.
Para esto damos clic con el botón derecho sobre el proyecto, new Other …
IVcb Scrv,c •.
N ,:w
RESTfu l Web Services from Pattern~•..
Build
Other...
r 1.- ... - ..__ .. D , ,.a •
Imagen 10. Nuevo archivo Other, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
Del cual seleccionamos la categoría web y el tipo de archivo Standard Deployment Descrip-
tor (web.xml)
ProjKt::
Fdter:
File Types;
w~
KTMLS
JavaServer Faces
Be.!111 Valida lion
Struts
Spnno Framewort
Entetl)l'ist Jav Beans
Contexts and Dependency Inj,
111w,
.., Imagen 11. Creación del
< >
archivo Standard Deployment
Desaipbon:
Descriptor (web.xml), imagen
generada por el autor desde el
IDE Netbeans
Fuente: Propia
Nos crea el siguiente código, con una barra superior en la cual seleccionamos “Security”.
CJ
loginerror ,jsp X
----;i~-----~
- i , ,xm1
Source General Servlets Fite<s Pages Remences Secunty Hstx>ry
l
IE Login configuration
Security Roles
Role Name
Add •••
Imagen 12. Pestaña Security web.xml, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
146
10
Desplegamos la sección de Login Configuration, y seleccionamos el tipo de autenticación
que vamos a usar en nuestro caso es Form, indicamos la página del Form Login Page, el Form
Error page y el dominio de seguridad que incluye GlassFish que es file.
_login.J<p X] _lognorro,.JOP X -b.xml°x']_ ... Cl
Login configuration
Q None
Q ()gest
O Cknt Certb
Q Basic
(i) F«m
F«m logh Page: ,"loQro,J<I> 8r0"-~ ...
l!row,e ...
0 Security constraints
-· generada por el autor desde el IDE Netbeans
Fuente: Propia
Se pueden agregar nuevos roles de seguridad dando clic en el botón “add”, crearemos un
para administradores y otro para usuarios
- Security Roles
Role Name
Imagen 14. Creando nuevos roles, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
147
11
Para lograr que solo los usuarios autorizados puedan ingresar a las páginas autorizadas, es
necesario activar la caja de checheo Enable Authentication Constraint y escribimos el nom-
bre de los roles que van a estar autorizados para ingresar a la página, debemos pulsar en el
botón edit, seleccionamos el o los usuarios y adicionamos a la derecha y clic en el botón OK.
0 Edit Role, Names
Add >
<-
Qt
Imagen 16. Usuarios con acceso autorizado, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
d Security Constraints
TConstraint.I
HTTP"6elhod
Add...
1!'.]r,..t,1t-.U110nConstr..,t
OHo't>IIOn:
R.i.Nan!e{J): "'*""
D &lOblo u-oata eons1rat11
~
Imagen 17. Configuración del Constrain1, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia
Para el correcto funcionamiento es necesario crear una carpeta Admin con archivos, para
que puedan ser accedidos por los usuarios administradores.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
148
12
Projed:
File':
FioT-,:
J08C Comectlon Pool
DBCRcscuu
;J,ISResou-ce
JavaMaolSeSS10n
Weblog,c:
0~
<
Imagen 18. Creación del archivo GlassFish
Descriptor, imagen generada por el autor desde
el IDE Netbeans
Fuente: Propia
Dejamos valores por defecto y nos crea en la carpeta Configuration Files el archivo sun-web.
xml
0 Add Group
Enle' d-.e new group natrW! hett :
Groo.c>Nomc:: oppoct..,
ex sdKt a p r ~ y ent2red group""'"" om d-.e tall* below :
IG,oup-
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
149
13
Ya tenemos configurado nuestro sistema de seguridad de la aplicación, ahora es necesario
crear algunos usuarios en el dominio para que puedan ingresar a la aplicación a través de la
consola de GlassFish.
Consola de Glassfish
Para esto vamos a la pestaña Services, seleccionamos la opción servidores GlassFish Server
con el botón derecho del mouse y seleccionamos View Domain Admin Console.
X ,9 SINIP~ >C
c.....-
1~,;-;:
Surt
S1..i1nO wgMod
Su;rt ,n Ptofile Mode
Refresh
Oe9«1Y an Applea!lOn
• ti "°"""""" Administn1tlon
JOBC
Chat'li»e Adl'!'lr'llltrllOt
" .,'f JMS RMOWms Pa.uword Update C•nt•r
" i.JJNDI
t..t Pa"wOfd Alases hatal11d ~ t a
Aval&ble Updates
Conftg.H~iom Monrtonng
Ava bll AM-Ons
d•fa1,1lt-c0n.fiQ
" I"
..v.-oonftg Resources
.Update TOOi
Figura 22. Consola de administración del servidor GlassFish, imagen generada por el autor desde el IDE
Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
150
14
Accedemos al menú izquierdo de la administración en la sección Configurations, default-
config, Segurity, Realms, file.
default-oonfig
Acfmin Sefvice
[I)I Avail ability Servi ce
Con edor Service
EJ B Contain~
~ Gr u Mana em ent Servi
., HTTP Selvice
,,
File Users
an age user .acoou ts fcx the
~le-ct I
User ID I
Group List
Imagen 24. Crear usuarios bajo el dominio file de GlassFish, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
151
15
Pulsar sobre el botón New…. Para crear usuarios con su clave, bajo el dominio file. Crear el
siguiente usuario y pulsar el botón ok.
Imagen 25. Creando el primer usuario, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
U 10 : inistrado r
ru;e:tia:
--------------i.
Log in
Imagen 26. loguin de la aplicación, imagen generada por el autor desde el IDE Netbeans
Fuente: Propia.
Fundación Universitaria
Fundación Universitaria del
del Área
Área Andina
Andina
I
152
16
Bibliografia
■■Azpitarte, R. et al. (2009). Introducción a la Programación Orientada a Objetos con Java.
Departamento de Sistemas Informáticos y Computación Universidad Politécnica de Va-
lencia.
■■Balagurusamy, E. (2012). Object Oriented Programming with C++.
■■Cake software Foundation. (2015). Entendiendo el Modelo - Vista - Controlador.
■■Cardedo C. (2013). Tutorial de instalación y configuración de netbeans.
■■Caules, C. (2013). Arquitectura java.
■■EcuRed. (2015). Protocolo simple de acceso a objetos.
■■Global Mentoring. (s.f ). Instalación de JDK, Eclipse, ClasssFish y MySql.
■■Infosec Institute. (2012). OWASP top 10 tools and tactics - info Resources.
■■Lamarca, M. (2013). Aspectos tecnológicos de Internet.
■■Martínez, E. (2014). Tutorial de JSP (4) – Scriptlet.
■■Microsoft. (2007). Procedimientos de seguridad básicos para aplicaciones Web.
■■Microsoft. (2015). Visual Basic.
■■Microsystems. (2015). GlassFish.
■■Purdum, J. (2012). Beginning. Object-Oriented Programming with C#.
■■Rodríguez, A. (2015). Aprender programación java desde 0.
■■Ruiz, M. (2013). Introducción a los Sistemas de Base de Datos.
■■Soft, A. (2015). Programación: Cómo acceder a MySQL con JSP, Tomcat y JDBC.
■■Swlibre12. (2015). Servidores Web Apache (linux y windows).
■■Tejedor, R. (2008). Desarrollo de sitios Web dinámicos.
■■Valdés, D. (2007). Los diferentes lenguajes de programación para la web.
···· ...
··· ...
·· .. ..··
..........................