3.4 Implementación de los Casos de Uso con Spring

Tamaño: px
Comenzar la demostración a partir de la página:

Download "3.4 Implementación de los Casos de Uso con Spring"

Transcripción

1 3.4 Implementación de los Casos de Uso con Spring

2 Índice Introducción a Spring Declaración y Configuración de beans Excepciones de Persistencia Declaración de DataSources Integración con Hibernate 3 Gestión de Transacciones

3 Qué es Spring? (1) Framework de código abierto creado por Rod Johnson Motivación: Facilitar el desarrollo de aplicaciones Java EE, promoviendo buenas prácticas de diseño y programación Simplifica el uso de muchas de las APIs de Java EE Dispone de alternativas a algunas de las APIs de Java EE Internamente se apoyan en APIs de Java EE de más bajo nivel Facilita el uso de patrones de diseño ampliamente reconocidos dentro de la industria del desarrollo de software (Factory, Abstract Factory, Builder, Decorator, Service Locator, etc.) Soporte para capa modelo e interfaz Web Es modular: es posible usar algunos de los módulos sin comprometerse con el uso del resto

4 Qué es Spring? (y 2) Nosotros utilizaremos el soporte de Spring para implementar casos de uso a nivel de capa modelo Alternativa al uso de los Session Bean de EJB Puede actuar como una capa de integración entre diferentes APIs (JDBC, JNDI, etc.) y frameworks En nuestro caso entre Tapestry e Hibernate

5 Conceptos Básicos en Spring Inyección de dependencias (Dependency Injection, DI) Programación orientada a aspectos (Aspect-Oriented Programming, AOP)

6 Inyección de Dependencias Tradicionalmente cada objeto es responsable de obtener sus propias referencias a los objetos con los que colabora Cuando se aplica la Inyección de dependencias (DI), alguna entidad externa es la responsable de proporcionar a un objeto sus dependencias cuando se crea el objeto (las dependencias se inyectan en el objeto) Ventajas Pérdida de acoplamiento entre los objetos Si un objeto conoce sus dependencias a través de interfaces, es posible cambiar la implementación de esas dependencias transparentemente para el objeto que las contiene

7 Programación Orientada a Aspectos (AOP) Técnica de programación que promueve la separación de funcionalidades AOP: Algunos servicios son utilizados repetidas veces en diferentes componentes de un sistema, cuya responsabilidad principal es otra E.g. servicios de logging o gestión de transacciones y seguridad Se conocen como aspectos transversales ("cross cutting concerns ) Un framework de AOP hace posible modularizar estos aspectos o servicios y aplicarlos declarativamente a los componentes que los precisen Cada aspecto se implementa en un único punto Declarativamente se especifican los métodos que el framework tiene que interceptar para aplicarles el o los aspectos que el desarrollador desea Cada componente debe preocuparse únicamente de su funcionalidad principal sin preocuparse de los servicios del sistema que precise

8 Módulos/Paquetes (1) DAO Spring JDBC Transaction management ORM Hibernate JPA JDO TopLink OJB ibatis AOP Spring AOP Integración AspectJ JEE JMX JMS JCA Remotig EJBs Web Spring Web MVC Framework Integration Struts WebWork Tapestry JSF Rich View Support JSPs Velocity FreeMarker PDF Jasper Reports Excel Spring Portlet MVC Core IoC Container

9 Módulos/Paquetes (2) Core Constituye la parte fundamental del framework y proporciona la característica de Inyección de Dependencias (DI) / Inversión de Control (IoC) Proporciona una implementación sofisticada del patrón Factoría que permite desacoplar la configuración y especificación de dependencias de la lógica de la aplicación DAO Proporciona una capa de abstracción sobre JDBC que elimina la necesidad de codificar y analizar los códigos de error específicos de cada BBDD También proporciona una manera de gestionar transacciones tanto programática como declarativamente, no sólo para clases que implementen ciertas interfaces, sino para cualquier objeto Java (POJO)

10 Módulos/Paquetes (y 3) ORM Proporciona capas de integración para las APIs de mapeadores objeto-relacionales más populares: Hibernate, JPA, JDO, ibatis Utilizando este paquete es posible utilizar cualquiera de estos mapeadores objeto-relacionales en combinación con las demás características que ofrece Spring (como por ejemplo con la gestión declarativa de transacciones) AOP Proporciona una implementación del paradigma de la programación orientada a aspectos (conforme a la AOP Alliance), que es utilizada, transparentemente para el programador, por otros paquetes de Spring, pero que también puede ser usada directamente

11 El Contenedor (1) El contenedor de IoC es el núcleo del sistema Responsable de la creación y configuración de los Beans Nota: Un bean, en el contexto de Spring, es un POJO que es creado y manejado por el contenedor de IoC La interfaz BeanFactory o su hija ApplicationContext representan la interfaz del contenedor Spring proporciona varias implementaciones

12 El Contenedor (2) Instanciación try { ApplicationContext ctx = new ClassPathXmlApplicationContext( new String[] {SPRING_CONFIG_FILE, SPRING_CONFIG_TEST_FILE); AccountService accountservice = (AccountService) ctx.getbean("accountservice");... catch (Exception e) { e.printstacktrace();

13 El Contenedor (y 3) ClassPathXmlApplicationContext Permite declarar los objetos que componen la aplicación, y las dependencias entre ellos en XML A partir de los metadatos de configuración en XML es capaz de crear y configurar los objetos que componen la aplicación A través del método getbean es posible obtener referencias a los objetos declarados, a partir de su nombre

14 Declaración de Beans en XML (1) <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource" p:driverclassname="com.mysql.jdbc.driver" p:url="jdbc:mysql://localhost/pojo" p:username="pojo" p:password="pojo" /> <bean id="accountservice" class="es.udc.pojo.minibank.model.accountservice.accountserviceimpl" p:accountdao-ref="accountdao" p:accountoperationdao-ref="accountoperationdao" /> Es equivalente a <bean id="datasource" class="org.springframework.jdbc.datasource.drivermanagerdatasource" > <property name="driverclassname" value="com.mysql.jdbc.driver" /> <property name="url" value="jdbc:mysql://localhost/pojo" /> <property name="username" value="pojo" /> <property name="password" value="pojo" /> </bean> <bean id="accountservice" class="es.udc.pojo.minibank.model.accountservice.accountserviceimpl" <property name="accountdao" ref="accountdao" /> <property name="accountoperationdao" ref="accountoperationdao" /> </bean>

15 Declaración de Beans en XML (2) Se declaran con la etiqueta bean Parámetros básicos id: Nombre o identificador del bean class: Clase de implementación del bean Inyección de dependencias basada en setters Permite inyectar valores u otros beans (a través de referencias), invocando al método set correspondiente del bean sobre el que se está realizando la inyección Se indica el nombre de la propiedad que se desea inyectar y el valor que se le desea proporcionar

16 Declaración de Beans en XML (y 3) Inyección de dependencias basada en setters (cont) Es posible especificarlas A través de un elemento anidado property, que acepta los siguientes atributos name: Nombre de la propiedad donde se desea inyectar el valor value: Para inyectar un valor constante ref: Para inyectar otro bean a partir de su nombre Con sintaxis abreviada (utilizando el espacio de nombres p) a través de los atributos p:nombrepropiedad: Para inyectar un valor constante en la propiedad indicada p:nombrepropiedad-ref: Para inyectar otro bean a partir de su nombre en la propiedad indicada El bean se crea a partir de su constructor vacío y a continuación se invocan los métodos set con los valores adecuados

17 Declaración de Beans Usando Anotaciones public class AccountDaoHibernate extends GenericDaoHibernate<Account, Long> implements AccountDao public class AccountOperationDaoHibernate extends GenericDaoHibernate<AccountOperation, Long> implements AccountOperationDao public class AccountServiceImpl implements AccountService {...

18 Declaración de Beans Usando Anotaciones (2) Spring proporciona un mecanismo para detectar automáticamente clases anotadas y registrarlas como beans en el ApplicationContext Se puede utilizar la anotación sobre cualquier clase, o para anotar clases en las capas de persistencia, servicios y vista respectivamente La documentación de Spring aconseja utilizar las especializaciones porque otros frameworks o herramientas pueden aplicarles semántica especial y el propio Spring puede añadírsela en futuras versiones Si la anotación contiene el atributo name, entonces el valor de ese atributo será el que dé nombre al bean; en otro caso, se le dará el mismo nombre que la clase pero empezando por minúscula

19 Declaración de Beans Usando Anotaciones (y 3) Spring proporciona un mecanismo para detectar automáticamente clases anotadas y registrarlas como beans en el ApplicationContext (cont) Además debe utilizarse el tag component-scan en el fichero de configuración de Spring indicando en el atributo base-package el o los paquetes (separados por comas) que incluyen las clases anotadas (puede ser un paquete padre, no es necesario que sean los paquetes que contienen las clases directamente) <beans xmlns=" xmlns:context=" xsi:schemalocation="... ">... <context:component-scan base-package="es.udc.pojo.minibank.model"/>... </beans>

20 Auto-inyección de Dependencias El contenedor de Spring es capaz de auto-inyectar dependencias entre beans según diferentes criterios Por tipo: Busca un bean con el mismo tipo que la propiedad Por nombre: Busca un bean con el mismo id que la propiedad Por constructor: Busca uno o más beans cuyos tipos coincidan con los parámetros de uno de los constructores de ese bean Cuando se usan metadatos de configuración en XML, la autoinyección de dependencias se especifica a través del atributo autowire de la etiqueta <bean/> También es posible realizar auto-inyección de dependencias utilizando la Ventajas La cantidad de configuración necesaria puede verse reducida significativamente, y también las necesidades de cambios en dicha configuración según avanza el desarrollo Desventajas Las relaciones entre los beans dejan de estar documentadas explícitamente Si hay varios beans con el mismo tipo no puede utilizarse la autoinyección por tipo (que es la que suele utilizarse)

21 Auto-Inyección de Dependencias Usando Anotaciones public class AccountServiceImpl implements AccountService private AccountDao private AccountOperationDao accountoperationdao;...

22 Auto-Inyección de Dependencias Usando Anotaciones (y 2) La puede ser aplicada a setters, pero también a métodos con nombres arbitrarios y múltiples argumentos, a constructores y a propiedades Por defecto la auto-inyección se realiza por tipo y si no hay ningún bean que la satisfaga entonces se produce un error Para poder utilizar esta anotación es necesario especificar la etiqueta annotation-config en el fichero de configuración de Spring <beans xmlns=" xmlns:context=" xsi:schemalocation="... ">... <context:annotation-config/>... </beans>

23 Beans de la capa modelo de MiniBank (pojo-minibank-spring-config.xml) <?xml version="1.0" encoding="utf-8"?> <beans xmlns=" xmlns:xsi=" xmlns:context=" xsi:schemalocation="..."> <!-- Enable usage --> <context:annotation-config/> <!-- Enable component scanning for defining beans with annotations. --> <context:component-scan base-package="es.udc.pojo.minibank.model"/>... <!-- Hibernate Session Factory --> <bean id="sessionfactory" class="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean"... />... </beans>

24 public class AccountServiceImpl implements AccountService private AccountDao private AccountOperationDao accountoperationdao;...

25 AccountDaoHibernate.java y public class AccountDaoHibernate extends GenericDaoHibernate<Account, Long> implements AccountDao public class AccountOperationDaoHibernate extends GenericDaoHibernate<AccountOperation, Long> implements AccountOperationDao {...

26 GenericDaoHibernate.java public class GenericDaoHibernate<E, PK extends Serializable> implements GenericDao<E, PK> { private SessionFactory public void setsessionfactory(sessionfactory sessionfactory) { this.sessionfactory = sessionfactory;...

27 Beans de la capa modelo de MiniBank Declaración: Se declaran los siguientes beans de usuario mediante anotaciones Un bean para cada DAO de Hibernate Un bean para la implementación del servicio Se declara un bean en XML para la SessionFactory (que usan los DAOs de Hibernate) Inyección de dependencias Las dependencias entre los beans se auto-inyectan mediante anotaciones La implementación del servicio usa los DAOs Se inyectan directamente sobre las propiedades privadas que los referencian y por tanto no son necesarios los setters Los DAOs usan la SessionFactory Se inyecta en GenericDaoHibernate sobre el setter correspondiente (el setter es necesario ya que es invocado desde las clases de prueba)

28 Beans: Inyección de Dependencias accountdao AccountDaoHibernate - sessionfactory : SessionFactory accountservice AccountServiceImpl - accountdao : AccountDao - accountoperationdao : AccountOperationDao sessionfactory accountoperationdao AccountOperationDaoHibernate - sessionfactory : SessionFactory

29 Ámbito de los Beans El ámbito de un bean se especifica a través del atributo scope de la etiqueta bean o a través de la (según se use configuración XML o basada en anotaciones) Algunos posibles valores son: singleton (valor por defecto) El contenedor usa siempre la misma instancia (ya sea cuando se le pide a través de la API o cuando necesita inyectarlo) prototype Indica que el contenedor debe crear una nueva instancia del bean cada vez que se precise una Puede ser necesario, por ejemplo, si el bean tiene estado OJO con los beans de tipo singleton con dependencias con beans de tipo prototype

30 Más sobre Declaración de Beans Otras funcionalidades que ofrece Spring Instanciación de beans a partir de factorías Inyección de dependencias a través de constructores Los valores o referencias a otros beans se inyectan a través de los argumentos de un constructor Inyección de propiedades multivaluadas (arrays, listas, conjuntos, mapas) Inicialización y liberación de recursos de un bean a través de métodos que deben ser invocados justo después de haberse creado y justo antes de ser destruido, respectivamente...

31 Excepciones de Persistencia (1) En JDBC se lanza la excepción java.sql.sqlexception cuando se produce cualquier tipo de error en el acceso a los datos Problema: Hay que capturarla siempre y analizarla para saber de qué tipo de error se trata Algunos frameworks (e.g. Hibernate) ofrecen una jerarquía de excepciones más descriptiva (una excepción diferente para cada tipo de error) Ventaja: Permite diferenciar entre qué tipos de errores capturar Problema: Son específicas del framework utilizado para realizar la persistencia de los datos

32 Excepciones de Persistencia (2) public class GenericDaoHibernate<E, PK extends Serializable> implements GenericDao<E, PK> {... protected DataAccessException converthibernateaccessexception( HibernateException e) { return SessionFactoryUtils.convertHibernateAccessException(e); public void save(e entity) { try { getsession().saveorupdate(entity); catch (HibernateException e) { throw converthibernateaccessexception(e);...

33 Excepciones de Persistencia public class AccountDaoHibernate extends GenericDaoHibernate<Account, Long> implements AccountDao public List<Account> findbyuserid(long userid, int startindex, int count) { try { return getsession().createquery( "SELECT a FROM Account a WHERE a.userid = :userid " + "ORDER BY a.accountid"). setparameter("userid", userid). setfirstresult(startindex). setmaxresults(count).list(); catch (HibernateException e) { throw converthibernateaccessexception(e);

34 Excepciones de Persistencia (y 4) Spring proporciona una jerarquía de excepciones de acceso a datos (heredan de DataAccessException) que resuelve ambos problemas Cada excepción representa un error concreto No son específicas del framework de persistencia de datos utilizado, que por tanto se oculta a las capas superiores Son excepciones unchecked Spring proporciona mecanismos para realizar la conversión entre las excepciones nativas del framework de persistencia utilizado y la jerarquía propia El método converthibernateaccessexception de la clase SessionFactoryUtils realiza esta conversión para el caso de Hibernate Se ha creado un método protegido en el DAO genérico para realizar la conversión En todos los métodos de los DAOs (incluidos los del DAO genérico) se captura HibernateException y se lanza hacia las capas superiores el resultado de convertirla a una excepción de la jerarquía de DataAccessException

35 DataSources Independientemente del framework de persistencia utilizado probablemente se necesitará configurar una referencia a un DataSource Spring proporciona, entre otras, las siguientes opciones para configurar un bean de tipo DataSource DataSources definidos directamente sobre un driver JDBC SingleConnectionDataSource DriverMangerDataSource DataSources que son localizados vía JNDI Cualquier contenedor Java EE puede poner accesible vía JNDI un DataSource (que normalmente implementará pool de conexiones)

36 SingleConnectionDataSource Cuando se crea, solicita una conexión a la base de datos El método getconnection siempre devuelve esa conexión (o un proxy) Este DataSource sólo es válido para entornos single-thread Es usual especificar suppressclose="true" para que devuelva un proxy de la conexión cuyo método close (el del proxy) no cierra la conexión Un DataSource con estas características es suficiente y eficiente para los tests de integración Suficiente: llega con disponer de una conexión Eficiente: la conexión a la base de datos sólo se pide cuando se crea el DataSource Además, hay que indicar también las siguientes propiedades El nombre de la clase del driver JDBC La URL de conexión a la BD El usuario para conectarse a la BD La contraseña del usuario indicado <bean id="datasource" class="org.springframework.jdbc.datasource.singleconnectiondatasource" p:driverclassname="com.mysql.jdbc.driver" p:url="jdbc:mysql://localhost/pojotest" p:username="pojo" p:password="pojo" p:suppressclose="true" />

37 DriverMangerDataSource Implementación simple de la interfaz DataSource No implementa pool de conexiones El método getconnection devuelve una conexión nueva cada vez que es invocado Válido para entornos multi-thread Un DataSource con estas características es suficientemente eficiente y seguro para probar una aplicación Web a nivel de usuario Hay que indicar las siguientes propiedades El nombre de la clase del driver JDBC La URL de conexión a la BD El usuario para conectarse a la BD La contraseña del usuario indicado Es el que usamos con el plugin de Jetty para Maven (src/main/jetty/jetty-env.xml)

38 Acceso a DataSources mediante JNDI (1) JNDI (Java Naming and Directory Interface) Familia de paquetes javax.naming (Java SE) Es una API que abstrae el acceso a un servicio de nombres y directorios (e.g. LDAP) Es posible registrar objetos mediante un nombre jerárquico Los servidores de aplicaciones Java EE exponen diversos objetos mediante JNDI Los servidores de aplicaciones Java EE proporcionan implementaciones de DataSource Cada objeto DataSource es accesible a partir de un nombre JNDI de la forma java:comp/env/xxx/yyy, donde XXX suele (recomendado) ser "jdbc" e YYY el nombre de un DataSource concreto Habitualmente estos objetos DataSource implementan la estrategia de pool de conexiones Requiere configuración en el servidor (driver, URL, usuario, contraseña, parámetros específicos al pool, etc.) Ej.: En Tomcat se definen en conf/server.xml

39 Acceso a DataSources mediante JNDI (y 2) <bean id="datasource" class="org.springframework.jndi.jndiobjectfactorybean" p:jndiname="jdbc/pojo-examples-ds" p:resourceref="true" /> El atributo jndiname se utiliza para indicar el nombre del recurso accesible vía JNDI Si la aplicación está ejecutándose dentro de un servidor de aplicaciones Java EE El valor del atributo resourceref debe ser true El nombre indicado en jndiname es relativo al contexto java:comp/env/ JndiObjectFactoryBean implementa org.springframework.beans.factory.factorybean Los beans que implementan esta interfaz se definen igual que el resto de beans, pero cuando se referencian desde otros beans no se inyecta una instancia de ese tipo sino el objeto que devuelve su método getobject El método getobject de JndiObjectFactoryBean devuelve el objeto asociado al nombre JNDI especificado en la configuración

40 Integración con Hibernate 3 (1) Los DAOs implementados con Hibernate necesitan un objeto de tipo org.hibernate.sessionfactory del que obtener la sesión actual Como veremos más adelante, el gestor de transacciones de Hibernate también precisa un objeto de ese tipo La siguiente declaración permite definir un bean para obtener un SessionFactory que utiliza las anotaciones de Hibernate en las entidades <bean id="sessionfactory" class="org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean" p:datasource-ref="datasource" p:configlocation="classpath:/pojo-minibank-hibernate-config.xml"/> datasource: indica el nombre de un bean de tipo DataSource (para obtener las conexiones a la BD) configlocation: Indica donde está el fichero de configuración de Hibernate (fichero llamado pojo-minibank-hibernateconfig.xml localizado en el classpath de ejecución) AnnotationSessionFactoryBean es un FactoryBean (igual que la clase JndiObjectFactoryBean explicada en la transparencia anterior) cuyo método getobject devuelve una instancia que implementa SessionFactory

41 Integración con Hibernate 3 (y 2) Como ya hemos visto con anterioridad el bean sessionfactory se inyecta en el DAO genérico public class GenericDaoHibernate<E, PK extends Serializable> implements GenericDao<E, PK> { private SessionFactory public void setsessionfactory(sessionfactory sessionfactory) { this.sessionfactory = sessionfactory;...

42 Transacciones Spring no gestiona directamente las transacciones, sino que lo hace a través de una abstracción (patrón Strategy) Interfaz org.springframework.transaction.platformtransactionmanager Se puede trabajar con las transacciones independientemente de la implementación del gestor de transacciones concreto que se esté utilizando Spring proporciona una serie de gestores de transacciones que delegan la responsabilidad de la gestión de las transacciones a implementaciones específicas de la plataforma utilizada Se puede trabajar con transacciones a través de la API Java de Spring, pero también se pueden definir de forma declarativa haciendo uso del framework AOP de Spring, que incluye una implementación del aspecto de transaccionalidad Es posible hacerlo mediante XML o mediante anotaciones Java Utilizaremos la opción de las anotaciones porque simplifica la declaración de las transacciones

43 Transacciones con Hibernate 3 Si la capa de persistencia del modelo está implementada con Hibernate, entonces el gestor de transacciones a utilizar es el siguiente <bean id="transactionmanager class="org.springframework.orm.hibernate3.hibernatetransactionmanager" p:sessionfactory-ref="sessionfactory" /> Es preciso inyectarle un objeto SessionFactory de Hibernate Ya hemos declarado uno para utilizar en los DAOs HibernateTransactionManager delega la gestión de las transacciones a un objeto org.hibernate.transaction A partir del objeto SessionFactory obtiene la sesión Hibernate A partir de la sesión Hibernate obtiene el objeto Transaction

44 API Transacciones (1) public interface PlatformTransactionManager { TransactionStatus gettransaction(transactiondefinition definition) throws TransactionException; void commit(transactionstatus status) throws TransactionException; void rollback(transactionstatus status) throws TransactionException; public interface TransactionStatus { boolean isnewtransaction(); void setrollbackonly(); boolean isrollbackonly();

45 API Transacciones (y 2) Un gestor de transacciones implementa la interfaz PlatformTransactionManager TransactionException es una excepción unchecked El método gettransaction devuelve un objeto de tipo TransactionStatus en función de un parámetro de tipo TransactionDefinition TransactionStatus representa una transacción Puede ser la transacción actual o una nueva TransactionDefinition es una interfaz a través de la cual se pueden especificar las características de la transacción que se quiere obtener (propagación, nivel de aislamiento, timeout, propiedad read-only) La subinterfaz TransactionAttribute permite, además, especificar la lista de excepciones que provocan o no un rollback Si se pasa null en gettransaction, se utilizan los valores por defecto Los métodos commit y rollback se utilizan para hacer un commit o un rollback de la transacción que se les pasa

46 AOP: Gestión de Transacciones public class AccountServiceImpl implements AccountService private PlatformTransactionManager private AccountDao private AccountOperationDao accountoperationdao;

47 AOP: Gestión de Transacciones (2) public Account createaccount(account account) { TransactionStatus transactionstatus = transactionmanager.gettransaction(null); Iniciar transacción try { accountdao.save(account); catch (RuntimeException e) { transactionmanager.rollback(transactionstatus); throw e; transactionmanager.commit(transactionstatus); Finalizar transacción return account;

48 AOP: Gestión de Transacciones (3) public void removeaccount(long accountid) throws InstanceNotFoundException { TransactionStatus transactionstatus = transactionmanager.gettransaction(null); Iniciar transacción try { accountdao.remove(accountid); accountoperationdao.removebyaccountid(accountid); catch (RuntimeException e) { transactionmanager.rollback(transactionstatus); throw e; catch (InstanceNotFoundException e) { transactionmanager.commit(transactionstatus); throw e; transactionmanager.commit(transactionstatus); Finalizar transacción

49 AOP: Gestión de Transacciones (4) public void withdrawfromaccount(long accountid, double amount) throws InstanceNotFoundException, InsufficientBalanceException { TransactionStatus transactionstatus = transactionmanager.gettransaction(null); Iniciar transacción try { /* Find account. */ Account account = accountdao.find(accountid); /* Modify balance. */ double currentbalance = account.getbalance(); if (currentbalance < amount) { throw new InsufficientBalanceException(accountId, currentbalance,amount); account.setbalance(currentbalance - amount);

50 AOP: Gestión de Transacciones (5) /* Register account operation. */ accountoperationdao.save(new AccountOperation(account, Calendar.getInstance(), AccountOperation.Type.WITHDRAW, amount)); catch (RuntimeException e) { transactionmanager.rollback(transactionstatus); throw e; catch (InstanceNotFoundException e) { transactionmanager.commit(transactionstatus); throw e; catch (InsufficientBalanceException e) { transactionmanager.commit(transactionstatus); throw e; transactionmanager.commit(transactionstatus); Finalizar transacción...

51 AOP: Gestión de Transacciones (6) El código para todos los casos de uso transaccionales es similar: Iniciar la transacción (con las propiedades adecuadas) a partir del gestor de transacciones utilizad Ejecutar la lógica propia del caso de uso Finalizar transacción (commit o rollback) en función de si se ha producido alguna excepción o no y de su tipo El código común para la gestión de las transacciones puede eliminarse de la implementación de todos los casos de uso que lo precisen, y declarativamente decir cuándo debe ejecutarse

52 AOP: Gestión de Transacciones (y 7) Declarativamente es posible indicar El gestor de transacciones a utilizar Que los métodos createaccount, removeaccount, withdrawfromaccount y todos los demás de la clase AccountServiceImpl son transaccionales Spring intercepta las invocaciones a los métodos declarados como transaccionales: [Antes de que se ejecute el método] Ejecuta el código necesario para comenzar la transacción Declarativamente pueden indicarse parámetros como, por ejemplo, el nivel de aislamiento deseado para la transacción [Después de que se ejecute el método] Ejecuta el código necesario para finalizar la transacción (ya sea con un commit o un rollback) Pueden indicarse qué excepciones deben provocar un rollback y cuales no

53 public class AccountServiceImpl implements AccountService private AccountDao private AccountOperationDao accountoperationdao; public Account createaccount(account account) = true) public Account findaccount(long accountid) throws InstanceNotFoundException {... public void addtoaccount(long accountid, double amount) throws InstanceNotFoundException {...

54 AccountServiceImpl.java (2) public void withdrawfromaccount(long accountid, double amount) throws InstanceNotFoundException, InsufficientBalanceException { /* Find account. */ Account account = accountdao.find(accountid); /* Modify balance. */ double currentbalance = account.getbalance(); if (currentbalance < amount) { throw new InsufficientBalanceException(accountId, currentbalance,amount); account.setbalance(currentbalance - amount); /* Register account operation. */ accountoperationdao.save(new AccountOperation(account, Calendar.getInstance(), AccountOperation.Type.WITHDRAW, amount));

55 AccountServiceImpl.java = true) public AccountBlock findaccountsbyuserid(long userid, int startindex, int count) {... public void removeaccount(long accountid) throws InstanceNotFoundException {... public void transfer(long sourceaccountid, Long destinationaccountid, double amount) throws InstanceNotFoundException, InsufficientBalanceException = true) public int getnumberofaccountoperations(long accountid, Calendar startdate, Calendar enddate) throws InstanceNotFoundException = true) public List<AccountOperation> findaccountoperationsbydate( Long accountid, Calendar startdate, Calendar enddate, int startindex, int count) throws InstanceNotFoundException {...

56 Transacciones con Anotaciones Si se desean utilizar anotaciones para declarar las transacciones, el gestor de transacciones a utilizar se declara a través de la etiqueta annotation-driven, perteneciente al espacio de nombres tx <tx:annotation-driven transaction-manager="transactionmanager" /> El valor del atributo transaction-manager indica el nombre del bean que debe ser utilizado como gestor de transacciones Este atributo es opcional, y si no está presente toma el valor por defecto transactionmanager Por tanto en nuestro caso podríamos no haberlo especificado

57 (1) Puede utilizarse para anotar una clase o un método concreto En una clase se aplica a todos los métodos que contiene En un método sobrescribe el comportamiento especificado para la clase a la que pertenece Propiedades: propagation: PROPAGATION_REQUIRED (valor por defecto): El método debe ejecutarse dentro de una transacción; si ya existe una, se ejecuta en esa, y si no, se crea una nueva PROPAGATION_MANDATORY: Igual que el anterior pero la transacción debe existir (si no se lanza una excepción) PROPAGATION_REQUIRES_NEW: El método debe ejecutarse dentro de una transacción nueva (si ya existe una se suspende mientras) PROPAGATION_NESTED: El método debe ejecutarse en una transacción anidada si ya existe una transacción en progreso. Si no existe se comporta igual que PROPAGATION_REQUIRED PROPAGATION_NEVER: El método no debe ejecutarse dentro de una transacción (si existe una en progreso se lanza una excepción) PROPAGATION_NOT_SUPPORTED: Igual que el anterior pero si existe una transacción se suspende en vez de lanzar una excepción PROPAGATION_SUPPORTS: No es necesario que el método se ejecute dentro de una transacción pero si ya existe una se ejecuta dentro de ella

58 (2) Propiedades (cont.): isolation: Nivel de aislamiento (por defecto el de la plataforma) ISOLATION_DEFAULT: El de la plataforma ISOLATION_READ_UNCOMMITED: Pueden ocurrir dirty reads, non-repeatable reads y phanton reads ISOLATION_READ_COMMITED: Pueden ocurrir nonrepeatable reads y phamton reads ISOLATION_REPETEABLE_READ: Pueden ocurrir phanton reads ISOLATION_SERIALIZABLE: Elimina todos los problemas de concurrencia readonly: Lectura/escritura (defecto) o solo lectura Importante indicarlo para poder hacer optimizaciones!! timeout: Timeout de la transacción (por defecto el de la plataforma) Si el timeout expira entonces se hace un rollback de la transacción

59 (y 3) Por defecto cualquier excepción de tipo unchecked (hija de RuntimeException) provocará un rollback, y cualquier excepción checked (hija de Exception) no Es posible modificar este comportamiento a través de propiedades de la rollbackfor/rollbackforclassname: Array de clases/nombres de excepciones que deben causar un rollback "es.udc.exception2") norollbackfor/norollbackforclassname: Array de clases/nombres de excepciones que no deben causar un rollback La utilizaremos en los servicios del modelo para declarar la transaccionalidad de sus métodos Es posible anotar la interfaz que declara las operaciones del servicio, pero es más recomendable anotar la clase de implementación del servicio

60 Invocación de casos de uso Clase Paquete es.udc.pojo.minibank.test.experiments.spring Ilustra cómo obtener una referencia a un servicio implementado con Spring y llamar a un caso de uso... try { /* Get service object. */ ApplicationContext ctx = new ClassPathXmlApplicationContext( new String[] {SPRING_CONFIG_FILE, SPRING_CONFIG_TEST_FILE); AccountService accountservice = (AccountService) ctx.getbean("accountservice"); accountservice.withdrawfromaccount(accountid, amount); catch (InstanceNotFoundException e) { e.printstacktrace(); catch (InsufficientBalanceException e) { e.printstacktrace();...

61 Implementación de Servicios (1) Los casos de uso se implementan en términos de DAOs (tal como se vio en el apartado 3.2) En los DAOs se inyecta un objeto de tipo org.hibernate.sessionfactory proporcionado por Spring Los DAOs se inyectan en la clase de implementación de la Fachada Se utiliza un mecanismo proporcionado por Spring para convertir las excepciones de persistencia nativas a una jerarquía propia, independiente del framework utilizado para la persistencia

62 Implementación de Servicios (y 2) Para indicar la transaccionalidad de los casos de uso utilizamos la sobre la clase de implementación del Servicio Se declara un gestor de transacciones que delega en el gestor de transacciones de Hibernate Se le inyecta el mismo SessionFactory que el creado para inyectar en los DAOs, para que pueda acceder a través de él al gestor de transacciones de Hibernate Se le inyecta un DataSource La implementación de los Servicios es independiente del software utilizado para el acceso a datos (en nuestro caso Hibernate)

3.4 Implementación de los Casos de Uso con Spring

3.4 Implementación de los Casos de Uso con Spring 3.4 Implementación de los Casos de Uso con Spring Índice Introducción a Spring Declaración y Configuración de beans Excepciones de Persistencia Declaración de DataSources Integración con Hibernate 3 Gestión

Más detalles

Experto Universitario Java Enterprise Spring

Experto Universitario Java Enterprise Spring Experto Universitario Java Enterprise Spring Sesión 1: Spring core Puntos a tratar Introducción. Spring vs. JavaEE estándar El contenedor de beans (Spring core) Trabajo con beans Definir beans Instanciar

Más detalles

COMPONENTES Y CONTENEDORES. Ingeniería de Software II

COMPONENTES Y CONTENEDORES. Ingeniería de Software II COMPONENTES Y CONTENEDORES Ingeniería de Software II Motivación Los componentes son paquetes de software o módulos que encapsulan un conjunto de funciones similares. Estos componentes viven dentro de un

Más detalles

Temario curso Desarrollo de Aplicaciones Empresariales con Spring Framework Core 4

Temario curso Desarrollo de Aplicaciones Empresariales con Spring Framework Core 4 Temario curso Desarrollo de Aplicaciones Empresariales con Spring Framework Core 4 I. Generales El temario comprende las siguientes tecnologías. 1. Introducción a Spring Framework 2. Spring Core 3. Spring

Más detalles

Alternativa a Spring

Alternativa a Spring Universidad de San Carlos de Guatemala Facultad de Ingeniería Análisis y Diseño de Sistemas 2 Ing. Pedro Pablo Hernández Aux. Víctor Orozco Alternativa a Spring Henry Giovanni Barrientos García 200413044

Más detalles

Arquitectura de aplicaciones

Arquitectura de aplicaciones Arquitectura de aplicaciones Arquitectura en capas API API dic-08 alb@uniovi.es 2 Layers y Tiers Layer: capa arquitectónica de la aplicación software Presentación, lógica, persistencia Tier: capa física

Más detalles

Desarrollador de Aplicaciones Web con Java

Desarrollador de Aplicaciones Web con Java Desarrollador de Aplicaciones Web con Java El presente programa integral tiene como finalidad el uso de la tecnología Java para el desarrollo de aplicaciones Web empresariales. En los tres módulos se utilizan

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Enterprise JavaBeans 3. Aplicaciones Distribuidas

Enterprise JavaBeans 3. Aplicaciones Distribuidas Enterprise JavaBeans 3 Aplicaciones Distribuidas Contenido Introducción Motivación Características básicas Servicios integrados en EJB 3 Ejemplo Hola Mundo Inyección de dependencia Tipos de EJB 3 Conclusiones

Más detalles

Quées EJB? (1) EJB (Enterprise JavaBean) es una tecnología J2EE para la implementación de la capa modelo de una aplicación

Quées EJB? (1) EJB (Enterprise JavaBean) es una tecnología J2EE para la implementación de la capa modelo de una aplicación Introducción a EJB Quées EJB? (1) EJB (Enterprise JavaBean) es una tecnología J2EE para la implementación de la capa modelo de una aplicación Soporte para persistencia Soporte para implementación de fachadas

Más detalles

UNIVERSIDAD DE PIURA

UNIVERSIDAD DE PIURA ESPECIALIZACIÓN EN DESARROLLO DE APLICACIONES EMPRESARIALES CON JAVA EE Ofrecer al alumno los conocimientos necesarios para la construcción de sistemas informáticos bajo una arquitectura cliente servidor

Más detalles

Guía del Curso Analista Programador Java: Business Apps Expert

Guía del Curso Analista Programador Java: Business Apps Expert Guía del Curso Analista Programador Java: Business Apps Expert Modalidad de realización del curso: Número de Horas: Titulación: Online 600 Horas Diploma acreditativo con las horas del curso OBJETIVOS UML

Más detalles

Experto Universitario Java Enterprise Spring

Experto Universitario Java Enterprise Spring Spring Sesión 6: Acceso remoto. Pruebas Indice Spring para acceso remoto Spring vs. EJB Comparación de los protocolos disponibles Acceso remoto con HttpInvoker Pruebas Acceso remoto. Pruebas 2012-2013

Más detalles

Curso de Spring Framework

Curso de Spring Framework Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1 Spring es un proyecto de código abierto (open source), originalmente creado por Rod Johnson y descrito en su

Más detalles

Ejercicios de tratamiento de errores

Ejercicios de tratamiento de errores Índice 1 Captura de excepciones (0.5 puntos)...2 2 Lanzamiento de excepciones (0.5 puntos)... 2 3 Excepciones como tipos genéricos en la aplicación filmotecas(0.5 puntos)...4 4 Excepciones anidadas en

Más detalles

ATLAS MANUAL DE USUARIO SERVICIO DE AUDITORIA

ATLAS MANUAL DE USUARIO SERVICIO DE AUDITORIA ATLAS MANUAL DE USUARIO SERVICIO DE AUDITORIA Versión 1.3 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de Usuario Servicio

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona

Más detalles

Tema 5. Plataforma Java EE

Tema 5. Plataforma Java EE Tema 5. Plataforma Java EE SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs septiembre 2011 FJRP, FMBR 2008-2011 ccia SCS 5.1 Introducción a Java EE Java EE (Java Enterprise

Más detalles

Curso de JavaServer Faces

Curso de JavaServer Faces 1 Una JavaBean es una clase Java que sigue las siguientes convenciones: Constructor vacío Atributos de clase privados Por cada atributo, se crean los métodos getters y setters El Objetivo de los Managed

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

Tema 5. Plataforma Java EE

Tema 5. Plataforma Java EE Tema 5. Plataforma Java EE SCS Sistemas Cliente/Servidor 4 o informática http://ccia.ei.uvigo.es/docencia/scs enero 2009 FJRP, FMBR 2008/09 ccia SCS 5.1 Introducción a Java EE Java EE (Java Enterprise

Más detalles

Curso de Java EE Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1

Curso de Java EE Todos los Derechos Reservados Global Mentoring Experiencia y Conocimiento para tu Vida 1 1 Los Enterprise Java Beans (EJB) es código Java del lado del Servidor. Normalmente tienen la lógica de negocio de nuestra aplicación, y por lo tanto cubren el rol de la capa de servicio de nuestras aplicaciones

Más detalles

Curso JAVA EE 7 2016

Curso JAVA EE 7 2016 Curso JAVA EE 7 2016 Curso de Java EE 7 PC CARRIER 29 de marzo de 2016 Autor: Marc Revenga Esquinas Curso JAVA EE 7 2016 Curso de Java EE 7 Clase 1. Aplicaciones web Java EE. Configuración del servidor

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Acceso a bases de datos desde Java: JDBC

Acceso a bases de datos desde Java: JDBC Acceso a bases de datos desde Java: JDBC Jesús Arias Fisteus Aplicaciones Web (2016/17) Aplicaciones Web (2016/17) Acceso a bases de datos desde Java: JDBC 1 Parte I JDBC Aplicaciones Web (2016/17) Acceso

Más detalles

INGENIERIA TECNICA INFORMATICA DE SISTEMAS APLICACIÓN WEB DE UNA EMPRESA DE PRODUCTOS HORTOFRUTÍCOLAS. Realizado por. Juan José González Ruiz

INGENIERIA TECNICA INFORMATICA DE SISTEMAS APLICACIÓN WEB DE UNA EMPRESA DE PRODUCTOS HORTOFRUTÍCOLAS. Realizado por. Juan José González Ruiz ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA INGENIERIA TECNICA INFORMATICA DE SISTEMAS APLICACIÓN WEB DE UNA EMPRESA DE PRODUCTOS HORTOFRUTÍCOLAS

Más detalles

Curso de Java EE Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1

Curso de Java EE Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1 Todos los Derechos Reservados Global Mentoring 2012 Experiencia y Conocimiento para tu Vida 1 Vivimos en un mundo globalizado, donde la eficiencia y productividad de las empresas es un factor crucial para

Más detalles

Diseño Basado en Componentes. Curso 2008 / 09

Diseño Basado en Componentes. Curso 2008 / 09 Beneficios de OOP Diseño Basado en Componentes Ingeniería Informática Universidad Carlos III de Madrid Programación Orientada a Objetos (OOP) en VB.NET Diseño Basado en Componentes. Curso Conceptos orientados

Más detalles

5.6.3 Session Facade

5.6.3 Session Facade 5.6.3 Session Facade Session Facade (1) Intención Proporcionar una interfaz sencilla que soporta un conjunto de casos de uso relacionados Motivación La explicada en el tema 2: proporcionar una interfaz

Más detalles

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI

5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI 5.1 Introducción a las tecnologías de objetos distribuidos con Java RMI Contenidos Tutorial de Java RMI Caso de estudio: diseño e implementación de la capa modelo de MiniBank con Java RMI Arquitectura

Más detalles

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes

! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes Introducción Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Qué es la POO?! Un paradigma de programación! Un paradigma es una forma de afrontar

Más detalles

Tema 5: Modelo del dominio y persistencia de datos. Parte II: Modelo del dominio y Lógica de negocio

Tema 5: Modelo del dominio y persistencia de datos. Parte II: Modelo del dominio y Lógica de negocio Tema 5: Modelo del dominio y persistencia de datos! Parte II: Modelo del dominio y Lógica de negocio Capa de lógica de negocio Es el núcleo de nuestra aplicación, y lo que la hace distinta del resto Lo

Más detalles

Utilización Crystal Reports 2008 Usando Bussiness Object V4.0

Utilización Crystal Reports 2008 Usando Bussiness Object V4.0 Utilización Usando Bussiness Object V4.0 Versión 1.0 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de Usuario de Utilización

Más detalles

Mybatis: alternativa a Hibernate

Mybatis: alternativa a Hibernate Autentia Real Business Solutions Mybatis: alternativa a Hibernate v1.0 1 1 Agenda Qué es y cómo nos puede ayudar? Mybatis vs Hibernate vs JDBC Cómo funciona Técnicas básicas Integración con Maven y Spring

Más detalles

Introducción a Javato

Introducción a Javato Introducción a Javato Fº. Javier Pereñiguez Steria Iberica 20/02/2008 Índice Introducción Arquitectura Ejemplo arquitectura Plataforma Desarrollo Ejemplo de entorno de desarrollo Vías futuras Casos de

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

Curso de Spring Framework 4

Curso de Spring Framework 4 Curso de Spring Framework 4 Descripción: BST México ofrece esta capacitación efectiva en Spring, el cual es un poderoso framework de aplicaciones que nos ayuda a resolver muchos de los problemas y trabajo

Más detalles

Java EE 6: Desarrollo de componentes de negocio con JMS y EJBs

Java EE 6: Desarrollo de componentes de negocio con JMS y EJBs Oracle University Contact Us: 001-855-844-3881 Java EE 6: Desarrollo de componentes de negocio con JMS y EJBs Duration: 4 Days What you will learn Esta capacitación Java EE 6: Desarrollo de componentes

Más detalles

Introducción al Diseño con Patrones

Introducción al Diseño con Patrones Introducción al Diseño con Patrones Fernando Bellas Permuy Departamento de Tecnologías de la Información y las Comunicaciones (TIC) Universidad de A Coruña http://www.tic.udc.es/~fbellas fbellas@udc.es

Más detalles

Struts2. 8 de Febrero de STRUTS2

Struts2. 8 de Febrero de STRUTS2 Struts2 8 de Febrero de 2008 1 STRUTS2 Arquitectura de 5 capas Nombre de la capa Responsabilidad Implementación tecnológica Presentación Interfaz de usuario JSP/HTML/Javascript Swing, SWT, Eclipse RCP

Más detalles

Arquitecturas Avanzadas Flex / JEE. Carlos Rovira

Arquitecturas Avanzadas Flex / JEE. Carlos Rovira Arquitecturas Avanzadas Flex / JEE Carlos Rovira 1 Introducción Técnicas, metodologías y soluciones para facilitar el desarrollo de Rich Internet Applications (RIA) flexibles y escalables. RIAlity es una

Más detalles

TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos

TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos TEMA 5. Otras arquitecturas distribuidas III. Otros entornos de objetos distribuidos III. Otros entornos de objetos distribuidos 1. Problemas de CORBA 2. Java Enterprise Edition 1. EJB 2. Servidor de aplicaciones

Más detalles

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE Versión 1.3 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de Usuario del NORMATIVA

Más detalles

ATLAS MANUAL DE USUARIO DEL ARQUETIPO JAR

ATLAS MANUAL DE USUARIO DEL ARQUETIPO JAR ATLAS MANUAL DE USUARIO DEL ARQUETIPO JAR Versión 1.1 Área de Integración y Arquitectura de Aplicaciones Hoja de Control Título Documento de Referencia Responsable Manual de usuario del NORMATIVA ATLAS

Más detalles

Temario curso Desarrollo de Aplicaciones Empresariales con Spring Framework Core 4

Temario curso Desarrollo de Aplicaciones Empresariales con Spring Framework Core 4 Temario curso Desarrollo de Aplicaciones Empresariales con Spring Framework Core 4 I. Generales El temario comprende las siguientes tecnologías. 1. Introducción a Spring Framework 2. Spring Core 3. Spring

Más detalles

Servicio de Instrucción CURSO JAVA DEVELOPER. Sílabo Developer

Servicio de Instrucción CURSO JAVA DEVELOPER. Sílabo Developer Sílabo Developer I. DATOS GENERALES Año de vigencia : 2015 Número de sesiones : 16 (5 horas por sesión) N de Horas académicas : 80 Requisitos : - Conocimientos básicos de java (Programmer). II. FUNDAMENTACIÓN

Más detalles

Modulo 11. Clases y Objetos en Java

Modulo 11. Clases y Objetos en Java El siguiente texto es una traducción no oficial del documento publicado por el grupo JEDI, Introduction to Programming 1, no pretende en ningún momento reemplazar los contenidos generados por este grupo.

Más detalles

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios Diplomado Java Descripción El lenguaje de programación Java es uno de los más utilizados hoy en día. Su potencia, simplicidad, funcionalidad y capacidad hacen que este lenguaje sea una de las herramientas

Más detalles

Persistencia en Sistemas O.O.

Persistencia en Sistemas O.O. Persistencia en Sistemas O.O. Taller de Programación Instituto de Computación Facultad de Ingeniería Universidad de la República Contenido Conceptos básicos Definición y motivación de persistencia Mecanismo

Más detalles

Derechos de Acceso: COMPOSICION

Derechos de Acceso: COMPOSICION CLASES Una clase es un tipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearan a partir de la misma. class nombre_clase cuerpo de la clase Derechos de Acceso:

Más detalles

Spring AOP Versión 2.x

Spring AOP Versión 2.x Spring AOP Versión 2.x 4 de Abril de 2008 1 SPRING FRAMEWORK 2.X Spring -AOP 2 SPRING FRAMEWORK 2.X 3 SPRING FRAMEWORK 2.X Croscutting Concern Introducción AOP Con programación orientada a objetos las

Más detalles

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados

5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados 5.4 Caso de estudio: diseño e implementación de la capa modelo de MiniPortal con EJB. Tipos de EJBs y patrones usados Introducción Qué tipos de EJBs ilustra MiniPortal? Entity Beans CMP (UserProfile) SLSBs

Más detalles

Aplicaciones web construidas a base de componentes:

Aplicaciones web construidas a base de componentes: Java EE Aplicaciones Web/Sistemas Web Juan Pavón Mestras Dep. Ingeniería del Software e Inteligencia Artificial Facultad de Informática Universidad Complutense Madrid Material bajo licencia Creative Commons

Más detalles

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo

- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo - Introdución a Java - Breve historia de Java - Características del lenguaje Java - Estructura del JDK 1.6 - Documentación del API (JavaDoc) - Instalar y configurar el ambiente de desarrollo - La variable

Más detalles

PATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype

PATRONES DE DISEÑO DE CREACIÓN. Abstract Factory Builder Factory Method Prototype PATRONES DE DISEÑO DE CREACIÓN Abstract Factory Builder Factory Method Prototype Patrones de diseño de creación Abstraen el proceso de creación de instancias Encapsulan el conocimiento sobre las clases

Más detalles

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C.

Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C. CAPÍTULO 8 DELEGADOS 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Qué es un delegado? Para qué sirve? En qué circunstancias se recomienda implementar delegados? Qué es un método anónimo?

Más detalles

TEMA 54 La arquitectura JEE

TEMA 54 La arquitectura JEE TEMA 54 La arquitectura JEE Índice 1 Introducción... 2 1.1 Tecnología JAVA 3 1.2 Las plataformas Java 3 2 La plataforma JEE... 4 2.1 Modelo distribuido multicapa 4 2.2 Gestión de componentes basada en

Más detalles

TEMA 8. Agenda. Excepciones

TEMA 8. Agenda. Excepciones TEMA 8 Excepciones V1.0 28/05/06 Manuel Pereira González Agenda 1 Introducción Mecanismo para el control y gestión de errores basado en objetos llamados Excepciones Una Excepción es una condición anormal

Más detalles

Master en Java Certificación para Programadores

Master en Java Certificación para Programadores Javmasdeb Master en Java Certificación para Programadores Fabricante: Java Grupo: Desarrollo Subgrupo: Master Java Formación: Master Horas: 112 Introducción Java es un lenguaje de programación con el que

Más detalles

Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc.

Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc. Tutorial de C# Delegados y Eventos Por: Óscar López, M.Sc. olopez@uniandino.com.co DELEGADOS Delegados Son unos objetos que implícitamente extienden de System.Delegate y definen un tipo referencia soportado

Más detalles

PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE

PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE PROGRAMA JAVA SE (Standard Edition) MODALIDAD ONLINE JAVA SE (Standard Edition): El curso proporciona la base que necesita cualquier programador de Java, tanto en cuanto a las peculiaridades de la tecnología

Más detalles

Trabajo Final de Máster 19 de enero 2014. Ampliación de funcionalidades para KPAX. ANEXO: Descripción del servicio web Kpax

Trabajo Final de Máster 19 de enero 2014. Ampliación de funcionalidades para KPAX. ANEXO: Descripción del servicio web Kpax Trabajo Final de Máster 19 de enero 2014 Ampliación de funcionalidades para KPAX ANEXO: Descripción del servicio web Kpax Descripción del servicio web y su funcionalidad general La siguiente imagen es

Más detalles

Oracle 10g: Creación de Aplicaciones J2EE

Oracle 10g: Creación de Aplicaciones J2EE Oracle University Contacte con nosotros: 902 302 302 Oracle 10g: Creación de Aplicaciones J2EE Duración: 5 Días Lo que aprenderá Este curso enseña a los desarrolladores a crear aplicaciones J2EE mediante

Más detalles

Diseño e implementación de un framework de presentación

Diseño e implementación de un framework de presentación Diseño e implementación de un framework de presentación Para aplicaciones Web Thin Client en Java EE PFC Ingeniería Informática 2º Ciclo Alumno: Alejandro Marmelo Insua Consultor: Óscar Escudero Sánchez

Más detalles

03.04 Unity. Integración de Sistemas. Parte II. Diseño e implementación de aplicaciones Web con.net

03.04 Unity. Integración de Sistemas. Parte II. Diseño e implementación de aplicaciones Web con.net 03.04 Unity Integración de Sistemas Parte II. Diseño e implementación de aplicaciones Web con.net Contenido Conocer y saber utilizar el contenedor Unity Aprender a registrar tipos desde código y desde

Más detalles

Universidad Tecnológica Nacional FRC DIPLOMATURA SUPERIOR en Desarrollo bajo Plataforma Java EE

Universidad Tecnológica Nacional FRC DIPLOMATURA SUPERIOR en Desarrollo bajo Plataforma Java EE 1. PROPUESTA CURRICULAR 1.a) OBJETIVOS Universidad Tecnológica Nacional FRC DIPLOMATURA SUPERIOR en Desarrollo bajo Plataforma Java EE El curso "Desarrollo bajo Plataforma Java EE" ofrece a los estudiantes

Más detalles

Técnico Superior en Programación con Java SE Standard Edition

Técnico Superior en Programación con Java SE Standard Edition Código: M087_04 Técnico Superior en Programación con Java SE Standard Edition Modalidad: Distancia Duración: 120 horas Objetivos: Este pack de materiales formativos proporcionará al alumnado la base que

Más detalles

Tema 5 Corrección y Robustez Excepciones en Java

Tema 5 Corrección y Robustez Excepciones en Java Tema 5 Corrección y Robustez Excepciones en Java Parte II: Excepciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Introducción Excepciones comprobadas Caso de estudio Tratamiento

Más detalles

Curso: Programación con JAVA SE Estándar Edition.

Curso: Programación con JAVA SE Estándar Edition. Curso: Programación con JAVA SE Estándar Edition. Código: 1062 Familia Profesional: Programación. Acreditación: Formación reconocida a través de vías no formales Modalidad: Distancia Duración: 150 horas

Más detalles

Java Avanzado Facultad de Ingeniería. Escuela de computación.

Java Avanzado Facultad de Ingeniería. Escuela de computación. 2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 5 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas

Más detalles

Programa de Actualización Profesional Curso: Java Avanzado JEE7 Programa del Curso

Programa de Actualización Profesional Curso: Java Avanzado JEE7 Programa del Curso Objetivo: Transmitir conocimientos y desarrollar habilidades y aptitudes que permitan al asistente incorporar, en su ejercicio profesional, la utilización de buenas técnicas y nuevos paradigmas de desarrollo

Más detalles

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores

Programación Orientada a Objetos. Resumen de Temas Unidad 3: Constructores y destructores Programación Orientada a Objetos Resumen de Temas Unidad 3: Constructores y destructores 3.1 Conceptos de métodos constructor y destructor Java inicializa siempre con valores por defecto las variables

Más detalles

Spring. Índice. Introducción a Spring... 4. Qué es Spring?... 4. Estereotipos configurables... 5. Inyección de dependencias... 11

Spring. Índice. Introducción a Spring... 4. Qué es Spring?... 4. Estereotipos configurables... 5. Inyección de dependencias... 11 Índice 1 2 3 4 5 6 Introducción a 4 1.1 Qué es?. 4 1.2 Estereotipos configurables 5 1.3 Inyección de dependencias 11 1.4 Alternativas a las anotaciones para la configuración16 Ejercicios del contenedor

Más detalles

Tema 4. Excepciones en Java

Tema 4. Excepciones en Java Programación en Java Tema 4. Excepciones en Java Luis Rodríguez Baena Facultad de Informática Excepciones (I) Permiten la captura de errores en tiempo de ejecución. El control de excepciones permite extraer

Más detalles

Tema 1: Introducción a las Tecnologías Java

Tema 1: Introducción a las Tecnologías Java Tema 1: Introducción a las Tecnologías Java Índice Características de las aplicaciones empresariales Tecnologías Java Alternativas a las tecnologías Java XML Material de clase Características de las aplicaciones

Más detalles

Copyright 2010 Eurohelp

Copyright 2010 Eurohelp Copyright 2010 Eurohelp 1. INTRODUCCIÓN 3 2. ESTADO DEL ARTE 4 3. LOGLOPD 6 3.1 Intercepción a nivel datasource 8 3.2 Intercepción a nivel connectionpooldatasource 10 3.3 Personalización 11 4. INSTALACIÓN

Más detalles

JDBC. Aplicaciones Distribuidas

JDBC. Aplicaciones Distribuidas JDBC Aplicaciones Distribuidas Contenido Definición. Arquitectura. Driver. Conexión. Consultas. Transacciones. Pool de conexiones. Patrón DAO. 2 JDBC Java DataBase Connectivity API Java para ejecutar consultas

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta Excepciones... 5 Excepciones de uso frecuente... 8 Excepciones no comprobadas... 13 Excepciones comprobadas... 14 La clase Runtime Exception...

Más detalles

1 Índice... 1. 2 Introducción... 2. 2.1 Propósito... 2. 2.2 Alcance... 2. 3 Modelo Arquitectónico Inicial... 3

1 Índice... 1. 2 Introducción... 2. 2.1 Propósito... 2. 2.2 Alcance... 2. 3 Modelo Arquitectónico Inicial... 3 1 Índice 1 Índice... 1 2 Introducción... 2 2.1 Propósito... 2 2.2 Alcance... 2 3 Modelo Arquitectónico Inicial... 3 3.1 Diagrama de alto nivel de la arquitectura... 3 3.2 Vista de Casos de Uso... 5 3.2.1

Más detalles

Reutilización de software

Reutilización de software Reutilización de software A nivel de clase: Clases y algoritmos JGL A nivel de diseño Patrones de diseño A nivel de arquitectura Arquitectura J2EE 1 Aplicaciones Web Servidor Introducción a la arquitectura

Más detalles

Oracle Fusion Middleware 11g: Creación de Aplicaciones con ADF I

Oracle Fusion Middleware 11g: Creación de Aplicaciones con ADF I Oracle University Contact Us: +34916267792 Oracle Fusion Middleware 11g: Creación de Aplicaciones con ADF I Duration: 5 Days What you will learn Java EE es una plataforma estándar, sólida, escalable y

Más detalles

PROYECTO MOFM Presentación Pedro A. Leal Martínez Consultor: Óscar Escudero Sánchez

PROYECTO MOFM Presentación Pedro A. Leal Martínez Consultor: Óscar Escudero Sánchez PROYECTO MOFM Presentación Pedro A. Leal Martínez Consultor: Óscar Escudero Sánchez INTRODUCCIÓN. Objetivos. - En la realización de este Trabajo Final de Carrera se pretende realizar una aplicación web

Más detalles

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. diplomado

Centro de Capacitación en Tecnologías de la Información. Desarrollo de. diplomado Centro de Capacitación en Tecnologías de la Información Desarrollo de Objetivo Dotar al alumno de la metodología y los fundamentos de la programación en Java usando la plataforma J2SE (Java 2 Standard

Más detalles

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2007/08 Patrones de Diseño Patrón estructural Composite Técnicas de Programación - Curso 2007/08 Propósito Componer objetos en estructuras arbóreas para representar jerarquías todo-parte. Manipular todos los objetos

Más detalles

Tema 1: Introducción

Tema 1: Introducción Tema 1: Introducción Índice Características de las aplicaciones empresariales Diseño por Capas Arquitectura basada en Capas Típica Distribución de las capas Tecnologías Estándar JAVA Tecnologías JAVA por

Más detalles

ALTAS MANUAL DE USUARIO ENVÍO DE CORREOS ELECTRÓNICOS

ALTAS MANUAL DE USUARIO ENVÍO DE CORREOS ELECTRÓNICOS ALTAS MANUAL DE USUARIO ENVÍO DE CORREOS ELECTRÓNICOS Versión 1.0 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de Usuario

Más detalles

JAVA 7 Los fundamentos del lenguaje Java

JAVA 7 Los fundamentos del lenguaje Java Presentación 1. Historia 9 1.1 Por qué Java? 9 1.2 Objetivos del diseño de Java 10 1.3 Auge de Java 11 2. Características de Java 12 2.1 El lenguaje de programación Java 12 2.1.1 Sencillo 13 2.1.2 Orientado

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos

Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos Lección 2: Creando una Aplicación en Java 1. Estructura del archivo de una clase 2. Usando una clase 3. Definiendo clases fundamentos Objetivos Conocer: La forma en la cual está se está estructurado el

Más detalles

Especificaciones del driver JDBC

Especificaciones del driver JDBC BASE 100, S.A. www.base100.com Índice 1. INTRODUCCIÓN... 3 1.1 SINTAXIS DE LA URL... 3 1.2 REGISTRO DEL DRIVER... 3 2. ESTABLECIMIENTO DE LA CONEXIÓN... 4 2.1 OBSERVACIONES... 4 3. EJEMPLO... 5 Pág. 2

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

ATLAS MANUAL DE INTEGRACIÓN

ATLAS MANUAL DE INTEGRACIÓN ATLAS MANUAL DE INTEGRACIÓN Servicios de Firma AFC Certificado Versión 1.1 Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Servicios de Firma AFC Certificado NORMATIVA

Más detalles

Tutorial 1: Desarrollo de un plugin

Tutorial 1: Desarrollo de un plugin Tutorial 1: Desarrollo de un plugin En este tutorial introductorio se creará un plugin siguiendo una de las plantillas que ofrece Eclipse. Concretamente se extenderá una vista para mostrar cierta información

Más detalles

Tema 3. Plataforma Java EE

Tema 3. Plataforma Java EE Tema 3. Plataforma Java EE DAGSS Diseño de Arquitecturas de Grandes Sistemas Software 4 o Grado Ing. Informática http://ccia.ei.uvigo.es/docencia/dagss noviembre 2014 FJRP 2014 DAGS 3.1 Introducción a

Más detalles

3.3 Implementación de la Persistencia con Hibernate

3.3 Implementación de la Persistencia con Hibernate 3.3 Implementación de la Persistencia con Hibernate Índice Introducción Mapping objeto/relacional Anotación de entidades Modelado de relaciones Gestión de la Persistencia API de Persistencia de Hibernate

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra l.guerra@upm.es Curso INEM. Programación en Java Marzo 2011 Índice Previo Repaso y encapsulación Empaquetado Relaciones entre clases Herencia

Más detalles

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos

Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad

Más detalles

Evaluación de los aprendizajes Elabora un cuadro comparativo con las principales características del lenguaje de programación Java.

Evaluación de los aprendizajes Elabora un cuadro comparativo con las principales características del lenguaje de programación Java. NÚCLEO: Núcleo Sector Comercio y Servicios. SUBSECTOR: Informática y comunicación. Nombre del Módulo: Programación para Ambiente WEB total: 120 horas Objetivo General: Aplicar los conocimientos teóricos

Más detalles

FRAMEWORK 2 Recepción de SMS

FRAMEWORK 2 Recepción de SMS FRAMEWORK 2 Versión 1.1 Área de Integración y Arquitectura de Aplicaciones Hoja de Control Título Documento de Referencia Responsable FW2_MUS_Recepcion_SMS Área de Integración y Arquitectura de Aplicaciones

Más detalles