SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Facultad de Ingeniería, Ciencias y Administración
Departamento de Ingeniería de Sistemas
Centro de Estudios de Ingeniería de Software
Magíster en Ingeniería Informática

PRODUCCIÓN DE SOFTWARE
VÍCTOR ARAVENA
Septiembre 2013

Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
OBJETIVOS
 Modelar y diseñar sistema de registro transaccional web
utilizando un modelo de construcción basado en capa MVC
 Conocer y utilizar los principios de programación dirigido por
Modelo
 Utilizar patrones de diseño de software
 Modelar y generar un componente de persistencia ORM
 Implementar servicio web SOAP utilizando AXIS2
 Diseñar un formulario web en Spring 3.0

2
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN





Modelar un diagrama Entidad Relación
Sincronizar un Diagrama de Clase ORM
Configurar el motor de datos
Generar el código de persistencia de Datos e integrar el
código dentro de un proyecto en Eclipse
 Implementar la lógica de negocio y servicio
 Publicar los servicios web como protocolo SOAP (Axis2)
 Implementar formulario web utilizando el patrón MVC en
Spring 3.0

3
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Construir proyecto Visual Paradigm. Importante NO colocar tilde y ñ.

4
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Creamos un nuevo diagrama Entity Relationship Diagram ,al cual denominaremos
taller1

5
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Arrastramos el objeto Entity y lo definiremos como contacto. Posteriormente
seleccionamos el nuevo elemento y hacemos click derecho. En el menú emergente
seleccionamos la alternativa Open Specification

6
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Seleccionamos la etiqueta Columns y posteriormente el botón add.
 En el formulario de Column Specification agregaremos un campo con el nombre uid, de
tipo integer, con valor length de 10 y seleccionaremos la opción incremente en ID
generator. Documentamos y seleccionamos Include in Primary Key

7
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Repetimos el paso previo agregando dos nuevos atributos: Nombre y Apellido. Los valores
se ilustran en las siguientes imágenes.

8
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Finalizamos agregando dos nuevos atributos: mail y teléfono. Los valores se ilustran en las
siguientes imágenes.

9
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Como paso de verificación debería aparecer los siguientes valores en el formulario Entity
Specification y en diagrama gráfico

10
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 El siguiente paso consiste en que nuestro modelo de E-R pueda generar un diagrama en el
modelo de Clase. Seleccionamos cualquier parte blanca del diagrama, realizamos click
derecho y en el menu emergente escogemos la opción Syncronize to Class Diagram. En el
nuevo formulario emergente seleccionamos el botón ok.

11
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Seleccionar el botón OK el formulario que presenta el mapping E-R y Objeto.
 Finalmente , en el diagrama de clase resultante ,modificamos el valor de package por
defecto a orm

12
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad
Relación
 El siguiente paso es generar el
esquema de datos en el motor de
base de datos. Seleccionamos en
cualquier punto del espacio en
blanco del diagrama de Clase,
realizamos click derecho y
seleccionamos la opción ORM>Generate Database.

13
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Es necesario configurar los datos de conexión al motor de base de datos MySql. Debemos
seleccionar el botón Database Option y en el formulario Database Configuration se debe
ingresar los valores de conexión. Previamente debemos crear la base de datos ejemplotaller1.

14
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Modelar un diagrama Entidad Relación
 Finalmente seleccionamos el botón Ok en el formulario de Database Code Generation.
 Verificamos la creación de la tabla.

15
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Generar código de persistencia en lenguaje java
 Pasos previos
 Abrir IDE Eclipse
 Verificar que se encuentre instalado Java JDK 1.7 e correctamente configurado en el menú Window>Preferences->Java->Installed JREs
 Verificar que tomcat 7.0 se encuentre configurado en el menú Window->Preferences->Server> server
runtime environments
 Verificar que axis2 se encuentre configurado en el menú Window->Preferences-> Web Services-> Axis 2
Preferences -> Axis2 Runtime

 En Eclipse debemos crear Dynamic Web proyect

16
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Generar código de persistencia en lenguaje java
 Seleccionamos como Dynamic web module version 2.5. En la sección de Configuration
seleccionamos el botón Modify. En el formulario Project Facets seleccionamos la opción de
Axis2. Finalmente seleccionamos el botón OK y el botón Finish.

17
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Generar código de persistencia en lenguaje java
 Volvemos a Visual Paradigm. Ahora se generará el código. Seleccionamos cual punto del espacio
en blanco del diagrama de Clase, realizamos click derecho y seleccionamos la opción ORM>Generate Code. En el formulario Database Code Generation en el campo Output Path
colocamos la ruta donde se encuentra el proyecto creado en eclipse. Los valores se muestran en
el formulario.


18
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Generar código de persistencia en lenguaje java
 Seleccionamos el botón Ok y esperamos la confirmación. Finalmente volvemos al IDE Eclipse,
actualizamos el proyecto. Para solucionar los problema de dependencia debemos copiar la
carpeta lib dentro de del directorio WebContent->WEB-INF->Lib

19
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificación
 Para verificar el correcto funcionamiento debemos verificar los códigos y creación del siguiente
archivos

20
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificación
 Archivo de Configuración de Hibernate

21
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificación
 El Archivo ormmapping.orm.Contacto.hbm.xml se encuentra la vinculación entre la clase
Contacto y la tabla Contacto.

22
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Crear un Registro
 Editaremos el Archivo ormsample.CreateTaller1MagisterInformaticaDatase agregando el código
marcado en color azul. Posteriormente ejecutamos como aplicación java.

23
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Mostrar los Registros
 Editaremos el Archivo ormsample.ListTaller1MagisterInformaticaData agregando el código
marcado en color azul. Posteriormente ejecutamos como aplicación java.

24
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificamos la creación de los registros
 Ejecutamos los anteriores código y verificamos si el registro fue ingresado correctamente.

25
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Creación de 2 servicio Web SOAP
 Primero vamos a crear una clase dentro
del directorio SRC y contenida en
package webservice
 Primero hacemos click derecho en la
carpeta src, seleccionamos New->Class
 En el formulario New Java Class
ingresamos como package webservice y
la clase la llamamos ServicioContacto
 Finalmente seleccionamos el botón
Finish. El resultado se muestra en la
imagen ubicada debajo de este texto.

26
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Creación de Clase ContactoVO
 Primero vamos a crear una clase dentro
del directorio SRC y contenida en
package domain
 Primero hacemos click derecho en la
carpeta src, seleccionamos New->Class
 En el formulario New Java Class
ingresamos como package domain y la
clase la llamamos ContactoVO
 Finalmente seleccionamos el botón
Finish. El resultado se muestra en la
imagen ubicada debajo de este texto.

27
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Creación de Clase ContactoVO
 Se debe declarar cuatro atributos y
generar los constructores y los métodos
get-set mediante el asistente de eclipse
package domain;
public class ContactoVO {
private String nombre;
private String apellido;
private String mail;
private String telefono;
//generar get and setter
//generar constructor sin campo
// generar constructor con campo

}

28
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
Construir método de agregar contacto en la Clase
webservice.ServicioContacto
Importar las clases que sugiere el IDE de eclipse.
/**
* Ingreso de Registro
* @param oContactoVO
* @return
*/
public String agregarContacto(domain.ContactoVO oContactoVO){
PersistentTransaction t;
try {
t=
orm.Taller1MagisterInformaticaPersistentManager.instance().getSess
ion().beginTransaction();
try {
orm.Contacto lormContacto = orm.ContactoDAO.createContacto();
// Initialize the properties of the persistent object here
lormContacto.setNombre(oContactoVO.getNombre());
lormContacto.setApellido(oContactoVO.getApellido());
lormContacto.setMail(oContactoVO.getMail());

lormContacto.setTelefono(oContactoVO.getTelefono());
System.out.println("Ingreso Exitoso");
orm.ContactoDAO.save(lormContacto);
t.commit();
return "ingreso existoso";
}
catch (Exception e) {
t.rollback();
return "Error-Rollback";
}
} catch (PersistentException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return "Error persistencia";
}

}

29
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
Analicemos el código anterior. Construiremos un método que luego publicaremos como servicio
Web. Este método recibe un objeto de la Clase ContactoVO y devolverá un valor string con el
resultado de la operación del proceso. Internamente este método agregará un nuevo registro de
contacto a la base de datos mediante el uso de la capa de persistencia.
public String agregarContacto(domain.ContactoVO oContactoVO
Primero, iniciaremos la gestión de transacción (PersistentTransaction t ) de datos. Asimismo,
gestionamos la primera excepción (try/cath) en caso de no poder iniciar la gestión de transacción y
mostraremos el mensaje de error.
PersistentTransaction t;
try{
t=
orm.Taller1MagisterInformaticaPersistentManager.instance().getSession().beginTransaction();
…
}
} catch (PersistentException e1) {
e1.printStackTrace();
return "Error persistencia";
30
}
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
El siguiente paso es solicitar a la capa de persistencia DAO (ContactoDAO) que no entregue un objeto
no inicializado (clave de identificación y atributos se encuentran sin valor) de la clase Contacto.
Finalizamos gestionando la excepción, en caso de obtener un error.
try {
orm.Contacto lormContacto = orm.ContactoDAO.createContacto();
….
}
catch (Exception e) {
t.rollback();
return "Error-Rollback";
}
Posteriormente, por cada uno de atributos obligatorios de la Clase orm.Contacto , ingresaremos su
respectivo valor utilizando los métodos set
lormContacto.setNombre(oContactoVO.getNombre());
lormContacto.setApellido(oContactoVO.getApellido());
lormContacto.setMail(oContactoVO.getMail());
lormContacto.setTelefono(oContactoVO.getTelefono());
System.out.println("Ingreso Exitoso");
31

Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
Finalmente entregamos el objeto de la clase orm.Conctato a la capa de persistencia
(orm.ContactoDAO.save() ) para que sea grabado en el motor de base de datos. La capa de
persistencia se encargará de generar el sql respectivo.
orm.ContactoDAO.save(lormContacto);
Finalmente finalizamos la transacción y devolvemos el mensaje de éxito
t.commit();
return "ingreso existoso";

32
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
Construir método de mostrar contacto en la Clase
webservice.ServicioContacto
Importar las clases que sugiere el IDE de eclipse.
/**
* Retorna un listado de objeto de la clase ContactoVO
* @return List<domain.ContactoVO>
*/
public List<domain.ContactoVO> mostrarContacto(){
List<domain.ContactoVO> contactos = new
ArrayList<domain.ContactoVO>();
orm.Contacto[] ormContactos;
try {
ormContactos = orm.ContactoDAO.listContactoByQuery(null, null);
int length = ormContactos.length;
for (int i = 0; i < length; i++) {
System.out.println(ormContactos[i]);
contactos.add(new
domain.ContactoVO(ormContactos[i].getNombre(),
ormContactos[i].getApellido(),
ormContactos[i].getMail(),

ormContactos[i].getTelefono()));
}
return contactos;
} catch (PersistentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}

33
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Creación de Servicio Web
SOAP (UDDI, WSDL, SOAP)
 Click derecho sobre la clase
webservice.ServicioContacto
 Seleccionar la opción de
Webservice->Create
Webservice

34
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Creación de Servicio Web SOAP (UDDI, WSDL, SOAP)
 Seleccionamos la opción webservice runtime y seleccionamos la opción Axis2
 Seleccionamos el botón NEXT en el formulario Web Service

35
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Creación de Servicio Web SOAP
(UDDI, WSDL, SOAP)
 Seleccionamos la opción generate a
default services.xml file
 Finalmente seleccionamos el botón
finish

36
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)
 Realizamos click derecho en el nombre del proyecto.
 Seleccionamos Run As -> Run on Server y en formulario Run On Server seleccionamos Finish

37
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)
 Realizamos click derecho en el nombre del proyecto.
 Seleccionamos Run As -> Run on Server y en formulario Run On Server seleccionamos Finish

38
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)
 Seleccionamos el menu Service

39
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)
 Seleccionamos el menu Service

40
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)
 Seleccionamos el ServicioContacto y podemos ver el xml WSDL
 http://localhost:8080/WebServiceTaller1/services/ServicioContacto?wsdl

41
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Crearemos un Cliente Java
 Crearemos un cliente en java seleccionando la opción
New->Java -> Dynamic Web Project

42
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Crearemos un Cliente Java
 Realizamos click derecho en la carpeta src, seleccionamos la opción New->Other
 Buscamos Web Service Client

43
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Crearemos un Cliente Java
 Copiamos la URL de WS
http://localhost:8080/WebService
Taller1/services/ServicioContacto
?wsdl
 Dentro de la sección de
Configuration->Web Service
Runtime se debe seleccionar
Apache Axis2
 Seleccionamos el botón Finish

44
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Crearemos un Cliente Java con método void Main dentro del package webservice

45
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
Nos conectaremos al Cliente del WS
package webservice;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import webservice.ServicioContactoStub.AgregarContacto;
import webservice.ServicioContactoStub.AgregarContactoResponse;
import webservice.ServicioContactoStub.ContactoVO;
import webservice.ServicioContactoStub.MostrarContacto;
import webservice.ServicioContactoStub.MostrarContactoResponse;
public class Cliente {
public static void main(String[] args) throws AxisFault,
RemoteException {
// TODO Auto-generated method stub
ServicioContactoStub oStub = new ServicioContactoStub();
// AGREGA
ContactoVO oContactoVO = new ContactoVO();
oContactoVO.setNombre("Monica");
oContactoVO.setApellido("Pereira");
oContactoVO.setMail("correo@gmail.com");
oContactoVO.setTelefono("11111111");

oAgregarContacto.setOContactoVO(oContactoVO);
AgregarContactoResponse objResponse =
oStub.agregarContacto(oAgregarContacto);
System.out.println("Resultado "+objResponse.get_return());
//Muestra Contacto
MostrarContacto oMostrarContacto = new MostrarContacto();
MostrarContactoResponse objResponde =
oStub.mostrarContacto(oMostrarContacto);
ContactoVO[] contactos= objResponde.get_return();
int length = contactos.length;
for (int i = 0; i < length; i++) {
System.out.println(contactos[i]);
System.out.println("Nombre "+contactos[i].getNombre());
System.out.println("Apellido "+contactos[i].getApellido());
System.out.println("Mail "+contactos[i].getMail());
System.out.println("Telefono "+contactos[i].getTelefono());
}
}
}

AgregarContacto oAgregarContacto = new AgregarContacto();

46
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Verificaremos el funcionamiento ejecutando el código como una aplicación java

47
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Implementar formulario web utilizando el patrón MVC en Spring 3.0










Descargar del campus virtual el archivo war SpringMVCMagister.war
Importar a eclipse como proyecto
Revisar el archivo web.xml
Revisar el archivo spring-servlet.xml
Verificar archivos jsp
Verificar clases en spring3.controller y spring3.form
Revisar patrón idiomático
Revisar conector a Servicio Web
Verificar Funcionamiento

48
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
PROCESO CONSTRUCCIÓN
 Trabajo
–
–
–
–
–
–

agregar validaciones en el servicio de agregar contacto.
permitir filtrar búsqueda en el servicio de mostrar contacto
Crear el servicio para eliminar contacto
Crear el servicio para modificar contacto
probar software servicio web mediante la aplicación soapui
Seleccionar 4 servicios web http://www.webservicex.net/ws/default.aspx y
construir su cliente en java
– agregar tres atributos a registro de contacto y incluir en la vistas
– agregar control de idioma a los jsp faltantes y botonera

49
Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
Facultad de Ingeniería, Ciencias y Administración
Departamento de Ingeniería de Sistemas
Centro de Estudios de Ingeniería de Software
Magíster en Ingeniería Informática

PRODUCCIÓN DE SOFTWARE
VÍCTOR ARAVENA
Septiembre 2013

Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software

Más contenido relacionado

La actualidad más candente

Manual para creación de pagina web en word
Manual para creación de pagina web en wordManual para creación de pagina web en word
Manual para creación de pagina web en wordDarkiecrow
 
Visual basic 6 jose martinez terminado
Visual basic 6 jose martinez terminadoVisual basic 6 jose martinez terminado
Visual basic 6 jose martinez terminadojose martinez
 
Dce2 Introduccion Win Forms
Dce2 Introduccion Win FormsDce2 Introduccion Win Forms
Dce2 Introduccion Win FormsEsteban Soraire
 
Vbnet2010 ejerciciosdeconsola
Vbnet2010 ejerciciosdeconsolaVbnet2010 ejerciciosdeconsola
Vbnet2010 ejerciciosdeconsolaVAOC1984
 
Guía básica de Visual Basic 6.0
Guía básica de Visual Basic 6.0Guía básica de Visual Basic 6.0
Guía básica de Visual Basic 6.0patrimoni
 
Programando en microsoft visual studio 2008
Programando en microsoft visual studio 2008Programando en microsoft visual studio 2008
Programando en microsoft visual studio 2008ibrahimgonzalez
 
Instructivo dia 3_curso_flex
Instructivo dia 3_curso_flexInstructivo dia 3_curso_flex
Instructivo dia 3_curso_flexVictor Aravena
 

La actualidad más candente (9)

Manual para creación de pagina web en word
Manual para creación de pagina web en wordManual para creación de pagina web en word
Manual para creación de pagina web en word
 
Visual basic 6 jose martinez terminado
Visual basic 6 jose martinez terminadoVisual basic 6 jose martinez terminado
Visual basic 6 jose martinez terminado
 
Laboratorio de visual basic_Orlando
Laboratorio de visual basic_OrlandoLaboratorio de visual basic_Orlando
Laboratorio de visual basic_Orlando
 
Dce2 Introduccion Win Forms
Dce2 Introduccion Win FormsDce2 Introduccion Win Forms
Dce2 Introduccion Win Forms
 
Windows.forms.ejercicios
Windows.forms.ejerciciosWindows.forms.ejercicios
Windows.forms.ejercicios
 
Vbnet2010 ejerciciosdeconsola
Vbnet2010 ejerciciosdeconsolaVbnet2010 ejerciciosdeconsola
Vbnet2010 ejerciciosdeconsola
 
Guía básica de Visual Basic 6.0
Guía básica de Visual Basic 6.0Guía básica de Visual Basic 6.0
Guía básica de Visual Basic 6.0
 
Programando en microsoft visual studio 2008
Programando en microsoft visual studio 2008Programando en microsoft visual studio 2008
Programando en microsoft visual studio 2008
 
Instructivo dia 3_curso_flex
Instructivo dia 3_curso_flexInstructivo dia 3_curso_flex
Instructivo dia 3_curso_flex
 

Similar a Taller1 generación codigopersistencia

Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monettiangelinamonetti1
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7jcfarit
 
Manual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a pasoManual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a pasoatak
 
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 Ambar Larrazabal
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemasunefa
 
Base de datos desde vb 6.0
Base de datos desde vb 6.0Base de datos desde vb 6.0
Base de datos desde vb 6.0WendyMendez30
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemasunefa
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarEduardo Méndez
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarJuan Hoyos
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarblasty2
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programarblasty2
 
Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraMariaphlb
 
SISTEMA PARA EL SEGUIMIENTO DE SEMILLEROS DE INVESTIGACION
SISTEMA PARA EL SEGUIMIENTO DE SEMILLEROS DE INVESTIGACION SISTEMA PARA EL SEGUIMIENTO DE SEMILLEROS DE INVESTIGACION
SISTEMA PARA EL SEGUIMIENTO DE SEMILLEROS DE INVESTIGACION ingdianabaquero
 

Similar a Taller1 generación codigopersistencia (20)

Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monetti
 
Linq to sql 7
Linq to sql 7Linq to sql 7
Linq to sql 7
 
Manual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a pasoManual Visual Basic .NET SQL Server paso a paso
Manual Visual Basic .NET SQL Server paso a paso
 
Tutorial net beans
Tutorial net beansTutorial net beans
Tutorial net beans
 
Conexión de bd -
Conexión de bd - Conexión de bd -
Conexión de bd -
 
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0 CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
CONEXION A BASE DE DATOS - VISUAL BASIC 6.0
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
 
Base de datos desde vb 6.0
Base de datos desde vb 6.0Base de datos desde vb 6.0
Base de datos desde vb 6.0
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Tutorial aprendiendo a programar
Tutorial aprendiendo a programarTutorial aprendiendo a programar
Tutorial aprendiendo a programar
 
Mvc
MvcMvc
Mvc
 
Programacion2
Programacion2Programacion2
Programacion2
 
Conexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María ParraConexión de visual basic a bases de datos. María Parra
Conexión de visual basic a bases de datos. María Parra
 
Base de datos
Base de datosBase de datos
Base de datos
 
S7 1200 lab view
S7 1200  lab viewS7 1200  lab view
S7 1200 lab view
 
Manual AutoCAD Civil 3D - Iniciando Trabajos
Manual AutoCAD Civil 3D - Iniciando TrabajosManual AutoCAD Civil 3D - Iniciando Trabajos
Manual AutoCAD Civil 3D - Iniciando Trabajos
 
SISTEMA PARA EL SEGUIMIENTO DE SEMILLEROS DE INVESTIGACION
SISTEMA PARA EL SEGUIMIENTO DE SEMILLEROS DE INVESTIGACION SISTEMA PARA EL SEGUIMIENTO DE SEMILLEROS DE INVESTIGACION
SISTEMA PARA EL SEGUIMIENTO DE SEMILLEROS DE INVESTIGACION
 

Más de Victor Aravena

Personajes y comerciantes del mercado municipal
Personajes y comerciantes del mercado municipalPersonajes y comerciantes del mercado municipal
Personajes y comerciantes del mercado municipalVictor Aravena
 
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...Victor Aravena
 
Introdución Typo3 6.2
Introdución Typo3 6.2Introdución Typo3 6.2
Introdución Typo3 6.2Victor Aravena
 
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+Victor Aravena
 
Estrategia e Implementación de Sistema Sidra en Chile!!!
Estrategia e Implementación de Sistema Sidra en Chile!!!Estrategia e Implementación de Sistema Sidra en Chile!!!
Estrategia e Implementación de Sistema Sidra en Chile!!!Victor Aravena
 
1. tutorial unity3d introducción
1.  tutorial unity3d introducción1.  tutorial unity3d introducción
1. tutorial unity3d introducciónVictor Aravena
 
2. tutorial unity3d-disparo
2.  tutorial unity3d-disparo2.  tutorial unity3d-disparo
2. tutorial unity3d-disparoVictor Aravena
 
6. revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
6.  revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame6.  revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
6. revisión y modificación del juego -“space blaster”- Construct 5 - VideoGameVictor Aravena
 
4. elementos apoyotaller-tutorialguiabasica 2014
4.  elementos apoyotaller-tutorialguiabasica 20144.  elementos apoyotaller-tutorialguiabasica 2014
4. elementos apoyotaller-tutorialguiabasica 2014Victor Aravena
 
3. tutorialguiabasico 2014
3.  tutorialguiabasico 20143.  tutorialguiabasico 2014
3. tutorialguiabasico 2014Victor Aravena
 
2. principales elementos
2.  principales elementos2.  principales elementos
2. principales elementosVictor Aravena
 
1. instalaciondeconstruct2 2014
1.  instalaciondeconstruct2 20141.  instalaciondeconstruct2 2014
1. instalaciondeconstruct2 2014Victor Aravena
 
5. taller tutorial-guiabasica 2014
5.  taller tutorial-guiabasica 20145.  taller tutorial-guiabasica 2014
5. taller tutorial-guiabasica 2014Victor Aravena
 
1. tutorial unity3d introducción
1.  tutorial unity3d introducción1.  tutorial unity3d introducción
1. tutorial unity3d introducciónVictor Aravena
 
2. tutorial unity3d-disparo
2.  tutorial unity3d-disparo2.  tutorial unity3d-disparo
2. tutorial unity3d-disparoVictor Aravena
 
Acm ioi-olimpiada informática - universidad frontera 2013
Acm ioi-olimpiada informática - universidad frontera 2013Acm ioi-olimpiada informática - universidad frontera 2013
Acm ioi-olimpiada informática - universidad frontera 2013Victor Aravena
 
Curso veranovideojuegos 2014
Curso veranovideojuegos 2014Curso veranovideojuegos 2014
Curso veranovideojuegos 2014Victor Aravena
 
Factorial again! Olimpiada Informática Media IOI- ACM
Factorial again! Olimpiada  Informática Media IOI- ACMFactorial again! Olimpiada  Informática Media IOI- ACM
Factorial again! Olimpiada Informática Media IOI- ACMVictor Aravena
 
Formulario de implementación de componentes de software transaccional de amb...
Formulario de implementación de  componentes de software transaccional de amb...Formulario de implementación de  componentes de software transaccional de amb...
Formulario de implementación de componentes de software transaccional de amb...Victor Aravena
 

Más de Victor Aravena (20)

Personajes y comerciantes del mercado municipal
Personajes y comerciantes del mercado municipalPersonajes y comerciantes del mercado municipal
Personajes y comerciantes del mercado municipal
 
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
Presentación CISTI 2016 "Distinciones Conceptuales para la Trazabilidad de l...
 
Introdución Typo3 6.2
Introdución Typo3 6.2Introdución Typo3 6.2
Introdución Typo3 6.2
 
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
Insertar Elemento de Contenido PHP en Typo3 6.0+ 6.2+
 
Estrategia e Implementación de Sistema Sidra en Chile!!!
Estrategia e Implementación de Sistema Sidra en Chile!!!Estrategia e Implementación de Sistema Sidra en Chile!!!
Estrategia e Implementación de Sistema Sidra en Chile!!!
 
1. tutorial unity3d introducción
1.  tutorial unity3d introducción1.  tutorial unity3d introducción
1. tutorial unity3d introducción
 
2. tutorial unity3d-disparo
2.  tutorial unity3d-disparo2.  tutorial unity3d-disparo
2. tutorial unity3d-disparo
 
6. revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
6.  revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame6.  revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
6. revisión y modificación del juego -“space blaster”- Construct 5 - VideoGame
 
4. elementos apoyotaller-tutorialguiabasica 2014
4.  elementos apoyotaller-tutorialguiabasica 20144.  elementos apoyotaller-tutorialguiabasica 2014
4. elementos apoyotaller-tutorialguiabasica 2014
 
3. tutorialguiabasico 2014
3.  tutorialguiabasico 20143.  tutorialguiabasico 2014
3. tutorialguiabasico 2014
 
2. principales elementos
2.  principales elementos2.  principales elementos
2. principales elementos
 
1. instalaciondeconstruct2 2014
1.  instalaciondeconstruct2 20141.  instalaciondeconstruct2 2014
1. instalaciondeconstruct2 2014
 
5. taller tutorial-guiabasica 2014
5.  taller tutorial-guiabasica 20145.  taller tutorial-guiabasica 2014
5. taller tutorial-guiabasica 2014
 
1. tutorial unity3d introducción
1.  tutorial unity3d introducción1.  tutorial unity3d introducción
1. tutorial unity3d introducción
 
2. tutorial unity3d-disparo
2.  tutorial unity3d-disparo2.  tutorial unity3d-disparo
2. tutorial unity3d-disparo
 
Acm ioi-olimpiada informática - universidad frontera 2013
Acm ioi-olimpiada informática - universidad frontera 2013Acm ioi-olimpiada informática - universidad frontera 2013
Acm ioi-olimpiada informática - universidad frontera 2013
 
Curso veranovideojuegos 2014
Curso veranovideojuegos 2014Curso veranovideojuegos 2014
Curso veranovideojuegos 2014
 
Factorial again! Olimpiada Informática Media IOI- ACM
Factorial again! Olimpiada  Informática Media IOI- ACMFactorial again! Olimpiada  Informática Media IOI- ACM
Factorial again! Olimpiada Informática Media IOI- ACM
 
Formulario de implementación de componentes de software transaccional de amb...
Formulario de implementación de  componentes de software transaccional de amb...Formulario de implementación de  componentes de software transaccional de amb...
Formulario de implementación de componentes de software transaccional de amb...
 
Encuentro linux 2013
Encuentro linux 2013Encuentro linux 2013
Encuentro linux 2013
 

Taller1 generación codigopersistencia

  • 1. Facultad de Ingeniería, Ciencias y Administración Departamento de Ingeniería de Sistemas Centro de Estudios de Ingeniería de Software Magíster en Ingeniería Informática PRODUCCIÓN DE SOFTWARE VÍCTOR ARAVENA Septiembre 2013 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 2. OBJETIVOS  Modelar y diseñar sistema de registro transaccional web utilizando un modelo de construcción basado en capa MVC  Conocer y utilizar los principios de programación dirigido por Modelo  Utilizar patrones de diseño de software  Modelar y generar un componente de persistencia ORM  Implementar servicio web SOAP utilizando AXIS2  Diseñar un formulario web en Spring 3.0 2 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 3. PROCESO CONSTRUCCIÓN     Modelar un diagrama Entidad Relación Sincronizar un Diagrama de Clase ORM Configurar el motor de datos Generar el código de persistencia de Datos e integrar el código dentro de un proyecto en Eclipse  Implementar la lógica de negocio y servicio  Publicar los servicios web como protocolo SOAP (Axis2)  Implementar formulario web utilizando el patrón MVC en Spring 3.0 3 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 4. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Construir proyecto Visual Paradigm. Importante NO colocar tilde y ñ. 4 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 5. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Creamos un nuevo diagrama Entity Relationship Diagram ,al cual denominaremos taller1 5 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 6. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Arrastramos el objeto Entity y lo definiremos como contacto. Posteriormente seleccionamos el nuevo elemento y hacemos click derecho. En el menú emergente seleccionamos la alternativa Open Specification 6 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 7. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Seleccionamos la etiqueta Columns y posteriormente el botón add.  En el formulario de Column Specification agregaremos un campo con el nombre uid, de tipo integer, con valor length de 10 y seleccionaremos la opción incremente en ID generator. Documentamos y seleccionamos Include in Primary Key 7 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 8. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Repetimos el paso previo agregando dos nuevos atributos: Nombre y Apellido. Los valores se ilustran en las siguientes imágenes. 8 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 9. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Finalizamos agregando dos nuevos atributos: mail y teléfono. Los valores se ilustran en las siguientes imágenes. 9 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 10. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Como paso de verificación debería aparecer los siguientes valores en el formulario Entity Specification y en diagrama gráfico 10 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 11. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  El siguiente paso consiste en que nuestro modelo de E-R pueda generar un diagrama en el modelo de Clase. Seleccionamos cualquier parte blanca del diagrama, realizamos click derecho y en el menu emergente escogemos la opción Syncronize to Class Diagram. En el nuevo formulario emergente seleccionamos el botón ok. 11 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 12. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Seleccionar el botón OK el formulario que presenta el mapping E-R y Objeto.  Finalmente , en el diagrama de clase resultante ,modificamos el valor de package por defecto a orm 12 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 13. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  El siguiente paso es generar el esquema de datos en el motor de base de datos. Seleccionamos en cualquier punto del espacio en blanco del diagrama de Clase, realizamos click derecho y seleccionamos la opción ORM>Generate Database. 13 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 14. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Es necesario configurar los datos de conexión al motor de base de datos MySql. Debemos seleccionar el botón Database Option y en el formulario Database Configuration se debe ingresar los valores de conexión. Previamente debemos crear la base de datos ejemplotaller1. 14 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 15. PROCESO CONSTRUCCIÓN  Modelar un diagrama Entidad Relación  Finalmente seleccionamos el botón Ok en el formulario de Database Code Generation.  Verificamos la creación de la tabla. 15 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 16. PROCESO CONSTRUCCIÓN  Generar código de persistencia en lenguaje java  Pasos previos  Abrir IDE Eclipse  Verificar que se encuentre instalado Java JDK 1.7 e correctamente configurado en el menú Window>Preferences->Java->Installed JREs  Verificar que tomcat 7.0 se encuentre configurado en el menú Window->Preferences->Server> server runtime environments  Verificar que axis2 se encuentre configurado en el menú Window->Preferences-> Web Services-> Axis 2 Preferences -> Axis2 Runtime  En Eclipse debemos crear Dynamic Web proyect 16 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 17. PROCESO CONSTRUCCIÓN  Generar código de persistencia en lenguaje java  Seleccionamos como Dynamic web module version 2.5. En la sección de Configuration seleccionamos el botón Modify. En el formulario Project Facets seleccionamos la opción de Axis2. Finalmente seleccionamos el botón OK y el botón Finish. 17 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 18. PROCESO CONSTRUCCIÓN  Generar código de persistencia en lenguaje java  Volvemos a Visual Paradigm. Ahora se generará el código. Seleccionamos cual punto del espacio en blanco del diagrama de Clase, realizamos click derecho y seleccionamos la opción ORM>Generate Code. En el formulario Database Code Generation en el campo Output Path colocamos la ruta donde se encuentra el proyecto creado en eclipse. Los valores se muestran en el formulario.  18 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 19. PROCESO CONSTRUCCIÓN  Generar código de persistencia en lenguaje java  Seleccionamos el botón Ok y esperamos la confirmación. Finalmente volvemos al IDE Eclipse, actualizamos el proyecto. Para solucionar los problema de dependencia debemos copiar la carpeta lib dentro de del directorio WebContent->WEB-INF->Lib 19 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 20. PROCESO CONSTRUCCIÓN  Verificación  Para verificar el correcto funcionamiento debemos verificar los códigos y creación del siguiente archivos 20 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 21. PROCESO CONSTRUCCIÓN  Verificación  Archivo de Configuración de Hibernate 21 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 22. PROCESO CONSTRUCCIÓN  Verificación  El Archivo ormmapping.orm.Contacto.hbm.xml se encuentra la vinculación entre la clase Contacto y la tabla Contacto. 22 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 23. PROCESO CONSTRUCCIÓN  Crear un Registro  Editaremos el Archivo ormsample.CreateTaller1MagisterInformaticaDatase agregando el código marcado en color azul. Posteriormente ejecutamos como aplicación java. 23 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 24. PROCESO CONSTRUCCIÓN  Mostrar los Registros  Editaremos el Archivo ormsample.ListTaller1MagisterInformaticaData agregando el código marcado en color azul. Posteriormente ejecutamos como aplicación java. 24 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 25. PROCESO CONSTRUCCIÓN  Verificamos la creación de los registros  Ejecutamos los anteriores código y verificamos si el registro fue ingresado correctamente. 25 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 26. PROCESO CONSTRUCCIÓN  Creación de 2 servicio Web SOAP  Primero vamos a crear una clase dentro del directorio SRC y contenida en package webservice  Primero hacemos click derecho en la carpeta src, seleccionamos New->Class  En el formulario New Java Class ingresamos como package webservice y la clase la llamamos ServicioContacto  Finalmente seleccionamos el botón Finish. El resultado se muestra en la imagen ubicada debajo de este texto. 26 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 27. PROCESO CONSTRUCCIÓN  Creación de Clase ContactoVO  Primero vamos a crear una clase dentro del directorio SRC y contenida en package domain  Primero hacemos click derecho en la carpeta src, seleccionamos New->Class  En el formulario New Java Class ingresamos como package domain y la clase la llamamos ContactoVO  Finalmente seleccionamos el botón Finish. El resultado se muestra en la imagen ubicada debajo de este texto. 27 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 28. PROCESO CONSTRUCCIÓN  Creación de Clase ContactoVO  Se debe declarar cuatro atributos y generar los constructores y los métodos get-set mediante el asistente de eclipse package domain; public class ContactoVO { private String nombre; private String apellido; private String mail; private String telefono; //generar get and setter //generar constructor sin campo // generar constructor con campo } 28 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 29. PROCESO CONSTRUCCIÓN Construir método de agregar contacto en la Clase webservice.ServicioContacto Importar las clases que sugiere el IDE de eclipse. /** * Ingreso de Registro * @param oContactoVO * @return */ public String agregarContacto(domain.ContactoVO oContactoVO){ PersistentTransaction t; try { t= orm.Taller1MagisterInformaticaPersistentManager.instance().getSess ion().beginTransaction(); try { orm.Contacto lormContacto = orm.ContactoDAO.createContacto(); // Initialize the properties of the persistent object here lormContacto.setNombre(oContactoVO.getNombre()); lormContacto.setApellido(oContactoVO.getApellido()); lormContacto.setMail(oContactoVO.getMail()); lormContacto.setTelefono(oContactoVO.getTelefono()); System.out.println("Ingreso Exitoso"); orm.ContactoDAO.save(lormContacto); t.commit(); return "ingreso existoso"; } catch (Exception e) { t.rollback(); return "Error-Rollback"; } } catch (PersistentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); return "Error persistencia"; } } 29 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 30. PROCESO CONSTRUCCIÓN Analicemos el código anterior. Construiremos un método que luego publicaremos como servicio Web. Este método recibe un objeto de la Clase ContactoVO y devolverá un valor string con el resultado de la operación del proceso. Internamente este método agregará un nuevo registro de contacto a la base de datos mediante el uso de la capa de persistencia. public String agregarContacto(domain.ContactoVO oContactoVO Primero, iniciaremos la gestión de transacción (PersistentTransaction t ) de datos. Asimismo, gestionamos la primera excepción (try/cath) en caso de no poder iniciar la gestión de transacción y mostraremos el mensaje de error. PersistentTransaction t; try{ t= orm.Taller1MagisterInformaticaPersistentManager.instance().getSession().beginTransaction(); … } } catch (PersistentException e1) { e1.printStackTrace(); return "Error persistencia"; 30 } Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 31. PROCESO CONSTRUCCIÓN El siguiente paso es solicitar a la capa de persistencia DAO (ContactoDAO) que no entregue un objeto no inicializado (clave de identificación y atributos se encuentran sin valor) de la clase Contacto. Finalizamos gestionando la excepción, en caso de obtener un error. try { orm.Contacto lormContacto = orm.ContactoDAO.createContacto(); …. } catch (Exception e) { t.rollback(); return "Error-Rollback"; } Posteriormente, por cada uno de atributos obligatorios de la Clase orm.Contacto , ingresaremos su respectivo valor utilizando los métodos set lormContacto.setNombre(oContactoVO.getNombre()); lormContacto.setApellido(oContactoVO.getApellido()); lormContacto.setMail(oContactoVO.getMail()); lormContacto.setTelefono(oContactoVO.getTelefono()); System.out.println("Ingreso Exitoso"); 31 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 32. PROCESO CONSTRUCCIÓN Finalmente entregamos el objeto de la clase orm.Conctato a la capa de persistencia (orm.ContactoDAO.save() ) para que sea grabado en el motor de base de datos. La capa de persistencia se encargará de generar el sql respectivo. orm.ContactoDAO.save(lormContacto); Finalmente finalizamos la transacción y devolvemos el mensaje de éxito t.commit(); return "ingreso existoso"; 32 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 33. PROCESO CONSTRUCCIÓN Construir método de mostrar contacto en la Clase webservice.ServicioContacto Importar las clases que sugiere el IDE de eclipse. /** * Retorna un listado de objeto de la clase ContactoVO * @return List<domain.ContactoVO> */ public List<domain.ContactoVO> mostrarContacto(){ List<domain.ContactoVO> contactos = new ArrayList<domain.ContactoVO>(); orm.Contacto[] ormContactos; try { ormContactos = orm.ContactoDAO.listContactoByQuery(null, null); int length = ormContactos.length; for (int i = 0; i < length; i++) { System.out.println(ormContactos[i]); contactos.add(new domain.ContactoVO(ormContactos[i].getNombre(), ormContactos[i].getApellido(), ormContactos[i].getMail(), ormContactos[i].getTelefono())); } return contactos; } catch (PersistentException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } } 33 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 34. PROCESO CONSTRUCCIÓN  Creación de Servicio Web SOAP (UDDI, WSDL, SOAP)  Click derecho sobre la clase webservice.ServicioContacto  Seleccionar la opción de Webservice->Create Webservice 34 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 35. PROCESO CONSTRUCCIÓN  Creación de Servicio Web SOAP (UDDI, WSDL, SOAP)  Seleccionamos la opción webservice runtime y seleccionamos la opción Axis2  Seleccionamos el botón NEXT en el formulario Web Service 35 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 36. PROCESO CONSTRUCCIÓN  Creación de Servicio Web SOAP (UDDI, WSDL, SOAP)  Seleccionamos la opción generate a default services.xml file  Finalmente seleccionamos el botón finish 36 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 37. PROCESO CONSTRUCCIÓN  Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)  Realizamos click derecho en el nombre del proyecto.  Seleccionamos Run As -> Run on Server y en formulario Run On Server seleccionamos Finish 37 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 38. PROCESO CONSTRUCCIÓN  Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)  Realizamos click derecho en el nombre del proyecto.  Seleccionamos Run As -> Run on Server y en formulario Run On Server seleccionamos Finish 38 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 39. PROCESO CONSTRUCCIÓN  Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)  Seleccionamos el menu Service 39 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 40. PROCESO CONSTRUCCIÓN  Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)  Seleccionamos el menu Service 40 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 41. PROCESO CONSTRUCCIÓN  Verificar Servicio Web SOAP (UDDI, WSDL, SOAP)  Seleccionamos el ServicioContacto y podemos ver el xml WSDL  http://localhost:8080/WebServiceTaller1/services/ServicioContacto?wsdl 41 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 42. PROCESO CONSTRUCCIÓN  Crearemos un Cliente Java  Crearemos un cliente en java seleccionando la opción New->Java -> Dynamic Web Project 42 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 43. PROCESO CONSTRUCCIÓN  Crearemos un Cliente Java  Realizamos click derecho en la carpeta src, seleccionamos la opción New->Other  Buscamos Web Service Client 43 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 44. PROCESO CONSTRUCCIÓN  Crearemos un Cliente Java  Copiamos la URL de WS http://localhost:8080/WebService Taller1/services/ServicioContacto ?wsdl  Dentro de la sección de Configuration->Web Service Runtime se debe seleccionar Apache Axis2  Seleccionamos el botón Finish 44 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 45. PROCESO CONSTRUCCIÓN  Crearemos un Cliente Java con método void Main dentro del package webservice 45 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 46. PROCESO CONSTRUCCIÓN Nos conectaremos al Cliente del WS package webservice; import java.rmi.RemoteException; import org.apache.axis2.AxisFault; import webservice.ServicioContactoStub.AgregarContacto; import webservice.ServicioContactoStub.AgregarContactoResponse; import webservice.ServicioContactoStub.ContactoVO; import webservice.ServicioContactoStub.MostrarContacto; import webservice.ServicioContactoStub.MostrarContactoResponse; public class Cliente { public static void main(String[] args) throws AxisFault, RemoteException { // TODO Auto-generated method stub ServicioContactoStub oStub = new ServicioContactoStub(); // AGREGA ContactoVO oContactoVO = new ContactoVO(); oContactoVO.setNombre("Monica"); oContactoVO.setApellido("Pereira"); oContactoVO.setMail("correo@gmail.com"); oContactoVO.setTelefono("11111111"); oAgregarContacto.setOContactoVO(oContactoVO); AgregarContactoResponse objResponse = oStub.agregarContacto(oAgregarContacto); System.out.println("Resultado "+objResponse.get_return()); //Muestra Contacto MostrarContacto oMostrarContacto = new MostrarContacto(); MostrarContactoResponse objResponde = oStub.mostrarContacto(oMostrarContacto); ContactoVO[] contactos= objResponde.get_return(); int length = contactos.length; for (int i = 0; i < length; i++) { System.out.println(contactos[i]); System.out.println("Nombre "+contactos[i].getNombre()); System.out.println("Apellido "+contactos[i].getApellido()); System.out.println("Mail "+contactos[i].getMail()); System.out.println("Telefono "+contactos[i].getTelefono()); } } } AgregarContacto oAgregarContacto = new AgregarContacto(); 46 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 47. PROCESO CONSTRUCCIÓN  Verificaremos el funcionamiento ejecutando el código como una aplicación java 47 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 48. PROCESO CONSTRUCCIÓN  Implementar formulario web utilizando el patrón MVC en Spring 3.0          Descargar del campus virtual el archivo war SpringMVCMagister.war Importar a eclipse como proyecto Revisar el archivo web.xml Revisar el archivo spring-servlet.xml Verificar archivos jsp Verificar clases en spring3.controller y spring3.form Revisar patrón idiomático Revisar conector a Servicio Web Verificar Funcionamiento 48 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 49. PROCESO CONSTRUCCIÓN  Trabajo – – – – – – agregar validaciones en el servicio de agregar contacto. permitir filtrar búsqueda en el servicio de mostrar contacto Crear el servicio para eliminar contacto Crear el servicio para modificar contacto probar software servicio web mediante la aplicación soapui Seleccionar 4 servicios web http://www.webservicex.net/ws/default.aspx y construir su cliente en java – agregar tres atributos a registro de contacto y incluir en la vistas – agregar control de idioma a los jsp faltantes y botonera 49 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software
  • 50. Facultad de Ingeniería, Ciencias y Administración Departamento de Ingeniería de Sistemas Centro de Estudios de Ingeniería de Software Magíster en Ingeniería Informática PRODUCCIÓN DE SOFTWARE VÍCTOR ARAVENA Septiembre 2013 Magíster en Ingeniería Informática-Especialidad en Ingeniería de Software