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 parte 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( GlobalNames.SPRING_CONFIG_FILE_LOCATION); 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 una referencia a los objetos declarados, a partir de su nombre

14 Es equivalente a Declaración de Beans (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" /> <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 (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 (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 Beans de la capa modelo de MiniBank (spring-config.xml) <!-- Hibernate Session Factory --> <bean id="sessionfactory class= "org.springframework.orm.hibernate3.annotation.annotationsessionfactorybean"... />... <!-- ======================== Business Objects ======================== --> <!-- DAOs. --> <bean id="accountdao" class="es.udc.pojo.minibank.model.account.accountdaohibernate" p:sessionfactory-ref="sessionfactory" /> <bean id="accountoperationdao" class= "es.udc.pojo.minibank.model.accountoperation.accountoperationdaohibernate" p:sessionfactory-ref="sessionfactory" /> <!-- Service layer. --> <bean id="accountservice" class="es.udc.pojo.minibank.model.accountservice.accountserviceimpl" p:accountdao-ref="accountdao" p:accountoperationdao-ref="accountoperationdao" />

18 Beans de la capa modelo de MiniBank Declaramos los siguientes beans Un bean para cada DAO Hibernate Un bean para la implementación de la fachada Un bean para la SesionFactory (que usan los DAOs de Hibernate) Dependencias entre beans La fachada usa los DAOs Los DAOs usan la SesionFactory Utilizamos la DI de Spring basada en métodos set para resolver las dependencias entre beans

19 AccountServiceImpl.java public class AccountServiceImpl implements AccountService { private AccountDao accountdao; private AccountOperationDao accountoperationdao; public void setaccountdao(accountdao accountdao) { this.accountdao = accountdao; } public void setaccountoperationdao( AccountOperationDao accountoperationdao) { this.accountoperationdao = accountoperationdao; } }...

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

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

22 Beans: Inyección de Dependencias accountdao AccountDaoHibernate - sessionfactory : SessionFactory accountservice + métodos set AccountServiceImpl - accountdao : AccountDao - accountoperationdao : AccountOperationDao sessionfactory + métodos set accountoperationdao AccountOperationDaoHibernate - sessionfactory : SessionFactory + métodos set

23 Ámbito de los Beans El ámbito de un bean se especifica a través del atributo scope de la etiqueta bean 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

24 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 (listas, conjuntos, mapas) Autoinyección (autowiring) Por nombre: Busca un bean con el mismo id que la propiedad Por tipo: Busca un bean con el mismo tipo 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 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 Etc.

25 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

26 Excepciones de Persistencia (y 2) 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, por tanto se oculta a las capas superiores Son excepciones unchecked Para que Spring realice la conversión entre las excepciones nativas y la jerarquía propia es necesario declarar el siguiente bean: <bean class= "org.springframework.dao.annotation.persistenceexceptiontranslationpostprocessor"/>

27 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 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)

28 DataSources JDBC <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" /> DriverManagerDataSource: Devuelve una nueva conexión a la BD cada vez que se le pide una Es decir, no implementa la estrategia pool de conexiones (conceptualmente similar al SimpleDataSource estudiado en el apartado 3.1) Debe indicársele como 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 Útil para tests de integración

29 DataSources 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 JDNI 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/zzz, 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

30 DataSources 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

31 Integración con Hibernate 3 (1) Los DAOs implementados con Hibernate necesitan un objeto de tipo org.hibernate.sesionfactory 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:hibernate.cfg.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 hibernate.cfg.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

32 Integración con Hibernate 3 (y 2) Como ya hemos visto con anterioridad el bean sesionfactory se inyecta en los DAOs <bean id="accountdao" class="es.udc.pojo.minibank.model.account.accountdaohibernate" p:sessionfactory-ref="sessionfactory" /> <bean id="accountoperationdao" class="es.udc.pojo.minibank.model.accountoperation.accountoperationdaohibernate" p:sessionfactory-ref="sessionfactory" />

33 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 que simplifica la declaración de las transacciones

34 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 SesionFactory 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 SesionFactory obtiene la sesión Hibernate A partir de la sesión Hibernate obtiene el objeto Transaction

35 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();

36 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 Para utilizar los valores por defecto puede ser null Los métodos commit y rollback se utilizan para hacer un commit o un rollback de la transacción que se les pasa

37 AOP: Gestión de Transacciones (1) public class AccountServiceImpl implements AccountService { static { ApplicationContext context =...; transactionmanager = (PlatformTransactionManager) context.getbean("transactionmanager"); } private static PlatformTransactionManager transactionmanager; private AccountDao accountdao; private AccountOperationDao accountoperationdao; public void setaccountdao(accountdao accountdao) { this.accountdao = accountdao; } public void setaccountoperationdao( AccountOperationDao accountoperationdao) { this.accountoperationdao = accountoperationdao; }

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

39 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); } catch (RuntimeException e) { transactionmanager.rollback(transactionstatus); throw e; } catch (InstanceNotFoundException e) { transactionmanager.commit(transactionstatus); throw e; } transactionmanager.commit(transactionstatus); Finalizar transacción }

40 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); accountdao.update(account);

41 AOP: Gestión de Transacciones (5) /* Register account operation. */ accountoperationdao.create(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 }... }

42 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 utilizado El gestor de transacciones puede declararse en el archivo de configuración de Spring como un bean y obtenerlo a través del método getbean después de instanciar el contenedor 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

43 AOP: Gestión de Transacciones (y 7) Declarativamente es posible indicar El gestor de transacciones a utilizar Que los métodos createaccount, removeaccount 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

44 AccountServiceImpl.java public class AccountServiceImpl implements AccountService { private AccountDao accountdao; private AccountOperationDao accountoperationdao; public void setaccountdao(accountdao accountdao) { this.accountdao = accountdao; } public void setaccountoperationdao( AccountOperationDao accountoperationdao) { this.accountoperationdao = accountoperationdao; } public Account createaccount(account account) {... = true) public Account findaccount(long accountid) throws InstanceNotFoundException {... } public void addtoaccount(long accountid, double amount) throws InstanceNotFoundException {... }

45 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); accountdao.update(account); } /* Register account operation. */ accountoperationdao.create(new AccountOperation(account, Calendar.getInstance(), AccountOperation.Type.WITHDRAW, amount));

46 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 {... }

47 AccountServiceImpl.java (y = true) public List<AccountOperationInfo> findaccountoperationsbydate( Long accountid, Calendar startdate, Calendar enddate, int startindex, int count) throws InstanceNotFoundException {... } private List<AccountOperationInfo> toaccountoperationinfos( List<AccountOperation> accountoperations) {... } }

48 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

49 (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

50 (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 phamton reads ISOLATION_READ_COMMITED: Pueden ocurrir nonrepeatable reads y phamton reads ISOLATION_REPETEABLE_READ: Pueden ocurrir phamton 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

51 (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 las fachadas del modelo (servicios) 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

52 Implementación de Fachadas (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.sesionfactory 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

53 Implementación de Fachadas (y 2) Para indicar la transaccionalidad de los casos de uso utilizamos la sobre la clase de implementación de la Fachada Se declara un gestor de transacciones que delega en el gestor de transacciones de Hibernate Se le inyecta el mismo SesionFactory 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 que se recupera vía JNDI (proporcionado por el contenedor de aplicaciones) La implementación de las Fachadas es independiente del software utilizado para el acceso a datos (en nuestro caso Hibernate)

Tema 4: Uso de Spring en la Capa Modelo

Tema 4: Uso de Spring en la Capa Modelo Tema 4: Uso de Spring en la Capa Modelo Índice Introducción a Spring Declaración y Configuración de beans Excepciones de Persistencia Declaración de DataSources Integración con Hibernate 4 Gestión de Transacciones

Más detalles

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

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

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

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

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

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

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype

Patrones Creacionales Builder. Patrones Creacionales Abstract Factory. Patrones Creacionales Singleton. Patrones Creacionales Prototype Temario Patrones de Diseño de Software Fundamentos de Ingeniería de SW Jocelyn Simmonds GOF: Patrones Creacionales Patrones Estructurales ILI-236 (JS) Patrones II 1 / 31 ILI-236 (JS) Patrones II 2 / 31

Más detalles

Enterprise JavaBeans

Enterprise JavaBeans Enterprise Java Beans y JBoss Enterprise JavaBeans Es una de las API que forman parte del estándar de construcción de aplicaciones empresariales J2EE (ahora JEE 5.0) de Oracle Corporation (inicialmente

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

Ingeniería del Software Arquitectura Física en 3 niveles

Ingeniería del Software Arquitectura Física en 3 niveles Introducción En este laboratorio desplegaremos en 3 niveles físicos una aplicación que verifica si una cuenta y un password son correctos, basada en la que fue presentada en el laboratorio Separación entre

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

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

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

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 4 Herencia y Polimorfismo Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Herencia

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

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

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

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEB CON DOCUMENTUM

ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEB CON DOCUMENTUM ATLAS MANUAL DE USUARIO DEL ARQUETIPO WEB CON DOCUMENTUM Versión 1.4 Área de Aplicaciones Especiales y Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Manual de usuario

Más detalles

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión

Más detalles

Notación UML para modelado Orientado a Objetos

Notación UML para modelado Orientado a Objetos 1 Notación UML para modelado Orientado a Objetos 2 Notación UML para modelado Orientado a Objetos Índice 1.1. Qué es UML?.. 3 1.2. Por qué interesa UML en la asignatura de Programación Orientada a Objetos?3

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

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

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,

Más detalles

Manual de puesta en Cluster del Servidor de Firma de la plataforma @Firma 4.0.

Manual de puesta en Cluster del Servidor de Firma de la plataforma @Firma 4.0. Manual de puesta en Cluster del Servidor de Firma de la plataforma @Firma 4.0. TELVENT INTERACTIVA 1 TI-20-1074-CLU-001.doc CONTROL DE COMPROBACIÓN Y APROBACIÓN Documento nº: TI-20-1074-CLU-001 Revisión:

Más detalles

ANOTACIONES PARA LA PRESENTACIÓN

ANOTACIONES PARA LA PRESENTACIÓN DIAPOSITIVA Nº2 Cada vez más gente tiene horario de oficinas y necesitan comer en el trabajo, o bien porque no les da tiempo de ir a casa o bien porque no tienen tiempo o habilidades para gestionar su

Más detalles

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1)

JAVA ENTERPRISE EDITION (J2EE) ARQUITECTURA TECNOLOGÍAS (1/2) (L1) TECNOLOGÍAS (1/2) (L1) EJB ( Enterprise Java Beans ) JSP ( Java Server Pages ) JNDI ( Java Naming and Directory Interface ) JDBC ( Java Data Base Connectivity ) Java Mail JSF ( Java Server Faces ) TECNOLOGÍAS

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS GUIA PROGRAMACIÓN ORIENTADA A OBJETOS 1. Por qué la P.O.O? R= A medida que se van desarrollando los lenguajes, se va desarrollando también la posibilidad de resolver problemas más complejos. En la evolución

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

Uso de excepciones en Java

Uso de excepciones en Java Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que

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 Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando

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

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS

ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS ATLAS MANUAL DE INTEGRACIÓN Cliente del Servicio de SMS Versión 1.0 Arquitectura de Software Hoja de Control Título Documento de Referencia Responsable Servicio de SMS Cliente NORMATIVA ATLAS Arquitectura

Más detalles

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts 2. 2010-2011 Depto. Ciencia de la Computación e IA

Especialista Universitario Java Enterprise. Struts. Sesión 4: Introducción a Struts 2. 2010-2011 Depto. Ciencia de la Computación e IA Struts Sesión 4: Introducción a Struts 2 Indice Motivación De Struts 1.x a Struts 2 Acciones Actionforms Taglibs Internacionalización Validación Conceptos nuevos en Struts 2 2 Por qué era necesario Struts

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

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

TEMA 7: DIAGRAMAS EN UML

TEMA 7: DIAGRAMAS EN UML TEMA 7: DIAGRAMAS EN UML Diagramas en UML El bloque de construcción básico de UML es un Diagrama Introducción a UML 2 1 Modelo de Casos de Uso (MCU) Todos los casos de uso constituyen el MCU que describe

Más detalles

ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2

ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2 ATLAS PERSISTENCIA DE SESIONES EN BASE DE DATOS CON WEBLOGIC 9.2 Versión 1.0 Área de Integración y Arquitectura de Aplicaciones Hoja de Control Título con Weblogic 9.2 Documento de Referencia Responsable

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

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz

Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1. Gerardo Lecaros Felipe Díaz Proyecto ELO-330 Administración Salas del Departamento de Electrónica RC1 Gerardo Lecaros Felipe Díaz Problemática Petición de salas de forma tradicional Solución J2EE Java 2 Platform, Enterprise Edition

Más detalles

Data Source. Lic. Esteban Calabria 2007

Data Source. Lic. Esteban Calabria 2007 Data Source Lic. Esteban Calabria 2007 Layer Data Source Los sistemas raramente viven aislados del mundo. La responsabilidad de la capa Data Source es manejar la comunicación del nuestro sistema con otros.

Más detalles

ATLAS MANUAL DE USUARIO SERVICIO DE TRAZAS

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

Más detalles

2.2.- Paradigmas de la POO

2.2.- Paradigmas de la POO 2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier

Más detalles

SISTEMAS OPERATIVOS AVANZADOS

SISTEMAS OPERATIVOS AVANZADOS SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3

Más detalles

POLIMORFISMO "una interfaz, múltiples métodos".

POLIMORFISMO una interfaz, múltiples métodos. "una interfaz, múltiples métodos". 20/02/2007 Polimorfismo 2 Indice Definición y caracteristicas Objetivos. SOBRRESCRITURA-SOBRECARGA SOBRECARGA Clases y métodos abstractos INTERFACES (herencia múltiple)

Más detalles

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA José Luis Pastrana Brincones (pastrana@lcc.uma.es) Dpto. Lenguajes y Ciencias de la Computación. Universidad de Málaga

Más detalles

1. Definición. Open Source. Escalable. Alto desempeño. Arquitectura Modular. Producto de licencia de código abierto sin coste adicional.

1. Definición. Open Source. Escalable. Alto desempeño. Arquitectura Modular. Producto de licencia de código abierto sin coste adicional. 1. Definición JBoss es un proyecto de código abierto, con el que se consigue un servidor de aplicaciones basado en J2EE, e implementado al 100% en Java. Por lo tanto al estar basado en Java, JBoss puede

Más detalles

Administración Local Soluciones

Administración Local Soluciones SISTEMA INTEGRADO DE GESTIÓN DE EXPEDIENTES MODULAR (SIGM) MANUAL DE CONFIGURACIÓN DE LA CONSULTA DE DOCUMENTOS POR CÓDIGO SEGURO DE VERIFICACIÓN (CSV) SIGM v3 Administración Local Soluciones Control de

Más detalles

Uso de HIBERNATE en una aplicación WEB DESARROLLO DE APLICACIONES PARA LA WEB II

Uso de HIBERNATE en una aplicación WEB DESARROLLO DE APLICACIONES PARA LA WEB II INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE CÓMPUTO Uso de HIBERNATE en una aplicación WEB DESARROLLO DE APLICACIONES PARA LA WEB II BELEN HURTADO ORTIZ 2008630140 USANDO HIBERNATE EN UNA APLICACIÓN

Más detalles

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por

Más detalles

9. Objetos y clases. 9.1. Clases

9. Objetos y clases. 9.1. Clases Programación orientada a objetos con Java 103 9. Objetos y clases Objetivos: a) Presentar el concepto de objeto, clase, atributo, método e instancia b) Interpretar el código fuente de una aplicación Java

Más detalles

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para

Más detalles

Implementación CAPÍTULO 4

Implementación CAPÍTULO 4 Implementación CAPÍTULO 4 55 CAPÍTULO 4 Implementación En este capítulo se especifican los detalles del desarrollo, las herramientas utilizadas y los diagramas de paquetes. Todas las clases fueron programadas

Más detalles

FRAMEWORK 2 Creación de Servicios Web

FRAMEWORK 2 Creación de Servicios Web Creación de Versión 1.1 Área de Aplicaciones Especiales y Arquitectura de Software Página 1 de 21 Hoja de Control Título Documento Referencia Responsable de Creación de Área de Aplicaciones Especiales

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)

Patrones de Diseño. Patrón estructural Composite. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de Diseño Patrón estructural Composite Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Propósito Componer objetos en estructuras arbóreas para representar jerarquías todo-parte.

Más detalles

Universidad ORT - Arquitectura de Software. Requisitos

Universidad ORT - Arquitectura de Software. Requisitos Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación

Más detalles

JAVATO: UN FRAMEWORK DE DESARROLLO JAVA LIBRE

JAVATO: UN FRAMEWORK DE DESARROLLO JAVA LIBRE JAVATO: UN FRAMEWORK DE DESARROLLO JAVA LIBRE Jefe de Servicio de Integración de Aplicaciones Corporativas Dirección General de Informática (Comunidad Autónoma Región de Murcia) Técnico Responsable Dirección

Más detalles

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL

Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Índice 1 Introducción... 5 1.1 Perfil de la aplicación... 5 1.2 Requisitos técnicos... 5 2 Manual de usuario... 7 2.1 Instalación del certificado...

Más detalles

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts

Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts Temario Desarrollo de Aplicaciones Web con JAVA: J2EE y Struts Abril 2007 1. Introducción Se describe a continuación de forma detallada el programa del curso Desarrollo de Aplicaciones Web con Java: J2EE

Más detalles

Introducción a Visual Studio.Net

Introducción a Visual Studio.Net Introducción a Visual Studio.Net Visual Studio es un conjunto completo de herramientas de desarrollo para la generación de aplicaciones Web ASP.NET, Servicios Web XML, aplicaciones de escritorio y aplicaciones

Más detalles

Sesiones en PHP. Área de Ingeniería Telemática

Sesiones en PHP. Área de Ingeniería Telemática Sesiones en PHP Contenido Estado de la conexión con el navegador Cookies Sesiones Sesiones en PHP 2 Estado de la conexión con el navegador Cuando el usuario solicita una página que es en verdad un PHP

Más detalles

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos Conceptos ELO329: Diseño y Programación Orientados a Objetos 1 Paradigmas de Programación Historia: Los computadores parten cableados por hardware, Luego se introduce la programación en binario, Se desarrolla

Más detalles

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Java RMI. Sistemas Distribuidos Rodrigo Santamaría + Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en

Más detalles

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT

INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT INSTALACIÓN DE ORACLE 8i (8.1.7) SOBRE NT Versión 1. Mayo de 2001 Luis Vinuesa Martínez. Departamento de Informática Universidad de Oviedo vinuesa@correo.uniovi.es www.di.uniovi.es/~vinuesa ÍNDICE. Introducción...

Más detalles

Java 7.0 Advanced Application Developer

Java 7.0 Advanced Application Developer DESCRIPCIÓN La arquitectura de software es un conjunto de elementos y estructuras interrelacionados entre sí que componen a un sistema informático: define qué elementos tiene una aplicación, cómo se relacionan

Más detalles

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases

Diagramas del UML. A continuación se describirán los diagramas más comunes del UML y los conceptos que representan: Diagrama de Clases El UML está compuesto por diversos elementos gráficos que se combinan para conformar diagramas. Debido a que el UML es un lenguaje, cuenta con reglas para combinar tales elementos. La finalidad de los

Más detalles

Integración Capa Web de pojo-miniportal (1)

Integración Capa Web de pojo-miniportal (1) Integración Capa Web de pojo-miniportal (1) 1. Cambiar tipo de proyecto maven de "JAR" a "WAR" y actualizar la versión de Tapestry (5.0.18) en las dependencias 2. Añadir configuración del plugin de Jetty

Más detalles

JAVA EE 5. Arquitectura, conceptos y ejemplos.

JAVA EE 5. Arquitectura, conceptos y ejemplos. JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones

Más detalles

Análisis y diseño del sistema CAPÍTULO 3

Análisis y diseño del sistema CAPÍTULO 3 Análisis y diseño del sistema CAPÍTULO 3 36 CAPÍTULO 3 Análisis y diseño del sistema En este capítulo se pretende realizar un análisis detallado de los requerimientos del software a desarrollar para la

Más detalles

Inside. Gestión de Expedientes y Documentos Electrónicos

Inside. Gestión de Expedientes y Documentos Electrónicos Inside Gestión de Expedientes y Documentos Electrónicos Documento de Integración Sistemas Desarrollo Versión 1.0 Fecha de revisión 25/02/2013 Realizado por Sistemas Desarrollo Inside v_1.0 / 1 ÍNDICE 1

Más detalles

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS AUTORÍA JOSEFA PÉREZ DOMÍNGUEZ TEMÁTICA NUEVAS TECNOLOGIAS ETAPA CICLOS FORMATIVOS DE GRADO SUPERIOR DE INFORMÁTICA Resumen En esta publicación se

Más detalles

%& %)& '$!%*+ $, %%%&$ %%

%& %)& '$!%*+ $, %%%&$ %% OBJETIVO!!"#$$ %& '(%"#% (% %& %)& '$!%*+ $, %%%&$ %% REQUERIMIENTOS SOFTWARE VERSIÓN LINK Java Development Kit (JDK) 6 http://java.sun.com NetBeans 6.1 http://www.netbeans.org MySQL 5.0 http://dev.mysql.com/

Más detalles

procesamientodedatosconjava modalidadteleformación 210horas completamentegratuito

procesamientodedatosconjava modalidadteleformación 210horas completamentegratuito curso: procesamientodedatosconjava modalidadteleformación 210horas completamentegratuito +información a/a Zully Montelongo Teléfono: 91 532 93 65 Móvil: 696 42 95 89 Correo electrónico: fcontinua3@viaformacion.com

Más detalles

1. Visión general de RMI

1. Visión general de RMI 1. Visión general de RMI Java RMI permite al programador ejecutar métodos de objetos remotos utilizando la misma semántica que si fueran invocaciones locales (Véase Figura 1). Máquina Local (Cliente) Máquina

Más detalles

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes VAST: Manual de usuario Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes Índice general Índice general 2 1. Introducción 4 2. Representación intermedia del AST 5 2.1. Funcionamiento del VAST

Más detalles

Desarrollo de Servicios Web con JBuilder

Desarrollo de Servicios Web con JBuilder Artículos técnicos Grupo Danysoft: Desarrollo de Servicios Web con JBuilder Segunda parte Oscar Cristobal Ruiz Departamento Java Equipo Grupo Danysoft Enero 2003 - (902) 123146 www.danysoft.com Desarrollo

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

Herramienta de Gestión Integral de E-Business

Herramienta de Gestión Integral de E-Business Herramienta de Gestión Integral de E-Business Ingeniería técnica de informática de sistemas Autor: David López Martín Tutor: Antoni Oller Arcas Índice Introducción Metodología Análisis Diseño Planificación

Más detalles

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro

Esta extensión está obsoleta a partir de PHP 5.5.0, y será eliminada en el futuro USAR MYSQL EN PHP PHP tiene una librería de funciones nativas para conectarse a las base de datos MySQL. Por un lado reconoce la librería mysql y por otro mysqli. Se recomienda el uso de mysqli dado que

Más detalles

Manual de usuario de Solmicro BI. Página 1

Manual de usuario de Solmicro BI. Página 1 Manual de usuario de Solmicro BI Página 1 Índice 1. Estructura general del sistema, 2. Estructura de presentación de la información, 3. Acceso a Solmicro BI y los diferentes cuadros de mando, 4. Partes

Más detalles

EDICIÓN Y FORMATO (II)

EDICIÓN Y FORMATO (II) EDICIÓN Y FORMATO (II) 1. INTRODUCCIÓN Writer dispone de una serie de barras de herramientas predeterminadas, en las que se encuentran botones de acceso directo a comandos específicos que se activan con

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech Resumen Todo documento XBRL contiene cierta información semántica que se representa

Más detalles

Dirección General de Educación Superior Tecnológica

Dirección General de Educación Superior Tecnológica Dirección General de Educación Superior Tecnológica 1. Datos Generales de la asignatura Nombre de la asignatura: Clave de la asignatura: Créditos (Ht-Hp_ créditos): Carrera: Aplicaciones Web DEM-1203 2-4-6

Más detalles

A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo OCW 2013

A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo OCW 2013 3.3: Realización de diagramas de secuencia: capas software y patrones GRASP A. Goñi, J. Ibáñez, J. Iturrioz, J.A. Vadillo OCW 2013 3.3.- Cómo realizar los diagramas de 30 secuencia a partir de los flujos

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

Descripción de Arquitectura Repositorio de metadatos de componentes de software

Descripción de Arquitectura Repositorio de metadatos de componentes de software Descripción de Arquitectura Repositorio de metadatos de componentes de software 1. Introducción. 1.1. Propósito. 1.2. Alcance. 1.3. Definiciones. 1.4 Contexto. 1.5. Referencia. 2. Objetivos y restricciones

Más detalles

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1. Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;

Más detalles

Añadir un tipo nuevo

Añadir un tipo nuevo Crear un nuevo tipo de contenido 1. Introducción Una de las más importantes ampliaciones de funcionalidad que podemos realizar en OpenCms es crear un nuevo tipo de contenido estructurado. Por defecto,

Más detalles

Framework 2 Manual de usuario del Servicio de envío de SMS

Framework 2 Manual de usuario del Servicio de envío de SMS Manual de usuario del Servicio de envío de SMS Versión 1.0 Área de Aplicaciones Especiales y Arquitectura de Software 1 Hoja de Control Título Documento de Referencia Framework 2: Servicio de envío de

Más detalles

Guía basada en conceptos de usabilidad web

Guía basada en conceptos de usabilidad web Diseño de páginas de internet: Guía basada en conceptos de usabilidad web José Mario Serrano Objetivo. Hacer una revisión de la compatibilidad del sitio y algunos aspectos relacionados a la usabilidad.

Más detalles

Manual del Protocolo XML-RPC de Mensajería Negocios

Manual del Protocolo XML-RPC de Mensajería Negocios Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...

Más detalles

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos: Tutorial de UML Introducción: El Lenguaje de Modelamiento Unificado (UML - Unified Modeling Language) es un lenguaje gráfico para visualizar, especificar y documentar cada una de las partes que comprende

Más detalles

Clases abstractas e interfaces

Clases abstractas e interfaces Clases abstractas e interfaces Clases abstractas Una clase abstracta es una clase que no se puede instanciar se usa únicamente para definir subclases Cuándo es una clase abstracta? En cuanto uno de sus

Más detalles