Taller1 generación codigopersistencia
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Taller1 generación codigopersistencia

  • 424 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
424
On Slideshare
424
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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