El documento describe los conceptos clave de Java EE 5 y su arquitectura para el desarrollo de aplicaciones, comparándola con la anterior versión J2EE. Explica cómo Java EE 5 simplifica el desarrollo mediante el uso de POJOs, persistencia automática y la eliminación de intermediarios innecesarios gracias a frameworks como JSF, EJB 3.0 y Seam. También presenta un ejemplo de caso de uso para registrar un nuevo hotel y sus componentes clave como la entidad Hotel, el EJB de sesión y la pantalla de edición.
JBossAS: Desarrollo con Java Server FacesAitor Acedo
JBossAS: Desarrollo con Java Server Faces es un curso en español para introducir la tecnología JSF en el desarrollo de interfaces en aplicaciones web y realizar despliegues en el servidor JBoss AS 4.0.5
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Rodolfo Finochietti
La nueva versión de Visual Studio incorpora funcionalidades, algunas de las cuales veremos en esta sesión, haciendo hincapié en el desarrollo Web. También veremos las nuevas características de ASP.NET MVC 4 que ayudan a desarrollar sitios Web de alta performance.
Estudio sobre PHP uno de los lenguajes de programación del lado del servidor y de scripting más usado a nivel mundial. Comparativa con otros lenguajes y casos de éxito de su uso.
A la hora de desarrollar aplicaciones con Xamarin.Forms el rendimiento suele ser un factor a tener en cuenta. En Xamarin.Forms, ¿sabes el ciclo de vida de un Layout?, ¿qué opciones de Layout son más óptimas?, ¿cómo afectan los Bindings al rendimiento y como tratarlos?, ¿qué debemos hacer para optimizar el trabajo con imágenes?, ¿ListView o CollectionView?, ¿y qué ocurre con Shell? A estas y otras preguntas habituales de rendimiento daremos solución, con datos y pruebas en forma de sencillos consejos a tener en cuenta a la hora de desarrollar una aplicación con Xamarin.Forms.
Beautiful plot of 10,500 sqm, located close to Pinoso.
The plot is located on southeast and is planted with almond trees and the plot has a very good accessible road and only 4km from the village of Pinoso.
The Valley of Pinoso is extremely popular and there are so many opportunities here.
We take all the concerns out of your hands.
We can arrange all necessary permits and applications for you to build.
Do you have any questions, please feel free to contact us.
Located about 45 minutes from Alicante, airport and the coast.
JBossAS: Desarrollo con Java Server FacesAitor Acedo
JBossAS: Desarrollo con Java Server Faces es un curso en español para introducir la tecnología JSF en el desarrollo de interfaces en aplicaciones web y realizar despliegues en el servidor JBoss AS 4.0.5
Nuevas características para Desarrollo Web en Visual Studio 2012 y ASP.NET MVC 4Rodolfo Finochietti
La nueva versión de Visual Studio incorpora funcionalidades, algunas de las cuales veremos en esta sesión, haciendo hincapié en el desarrollo Web. También veremos las nuevas características de ASP.NET MVC 4 que ayudan a desarrollar sitios Web de alta performance.
Estudio sobre PHP uno de los lenguajes de programación del lado del servidor y de scripting más usado a nivel mundial. Comparativa con otros lenguajes y casos de éxito de su uso.
A la hora de desarrollar aplicaciones con Xamarin.Forms el rendimiento suele ser un factor a tener en cuenta. En Xamarin.Forms, ¿sabes el ciclo de vida de un Layout?, ¿qué opciones de Layout son más óptimas?, ¿cómo afectan los Bindings al rendimiento y como tratarlos?, ¿qué debemos hacer para optimizar el trabajo con imágenes?, ¿ListView o CollectionView?, ¿y qué ocurre con Shell? A estas y otras preguntas habituales de rendimiento daremos solución, con datos y pruebas en forma de sencillos consejos a tener en cuenta a la hora de desarrollar una aplicación con Xamarin.Forms.
Beautiful plot of 10,500 sqm, located close to Pinoso.
The plot is located on southeast and is planted with almond trees and the plot has a very good accessible road and only 4km from the village of Pinoso.
The Valley of Pinoso is extremely popular and there are so many opportunities here.
We take all the concerns out of your hands.
We can arrange all necessary permits and applications for you to build.
Do you have any questions, please feel free to contact us.
Located about 45 minutes from Alicante, airport and the coast.
Jornada ISACA-CV: Presentación TIC (1 de 3)Santiago Bonet
Presentación sobre: TIC, Uso de las TIC en España, Innovación, difusión, cambio, Innovación en TIC, Profesional TIC y Brecha digital, realizada en la Jornada ISACA-CV 'Aplicación de las tecnologías Web 2.0 / Redes Sociales y Software Libre a la Estrategia Empresarial' (19-ene-2010)
DoubleTrade Sharing es una plataforma diseñada para facilitar el trabajo en colaboracion dentro de una obra. Permite compartir archivos de manera sencilla y eficaz, con total seguridad y sin limite de tamaño.
Es la mejor manera de coordinar equipos de manera eficiente. Ademas se puede contratar por proyecto o de forma indefinida.
Presentación de eMobc, framework para el desarrollo de aplicaciones móviles multiplataforma usando XML (embML), en BetaBeers Madrid (29 Noviembre 2012)
Entity Framework 4.0 y ASP.NET MVC 2 con VS2010 - JUTI XI - 2010Desarrollos NEA
En la JUTI XI 2010 (Jornadas Universitarias Tecnológicas sobre Informática) dimos un introducción de como trabajar con Entity Framework 4.0, ASP.NET MVC 2.0 con Visual Studio 2010
Webinar oracle adf12c… descubre todo su potencialatSistemas
Oracle ADF 12c nace con el objetivo de fusionar las anteriores dos vertientes de ADF 11g, ofreciendo de esta forma una elevada productividad y a su vez un aumento de la flexibilidad, tanto en los componentes declarativos como en los propios objetos del framework.
¿Cuáles son sus principales características?.
Con esta nueva versión, ADF evoluciona en muchos aspectos, como por ejemplo en su integración con Maven y GIT, con versiones actualizadas de librerías core como JSF y con un gran soporte REST en la capa ADF Business Components. Así mismo, esta nueva versión incorpora grandes mejoras a nivel de IDE y correctivos generales del framework.
Desde atSistemas, ofrecemos una experiencia real en desarrollo ADF 12c y en cómo abordar la actualización, que afecta no solo a las aplicaciones, sino también a la forma de desarrollar las mismas. Incluso, internamente, hemos construido algunas soluciones sobre Oracle ADF 12c, como ADF Smart Monitor, nuestra herramienta de monitorización y auditoría de aplicaciones ADF que ofrece información relevante a los equipos sobre la calidad de sus desarrollos.
En este video, obtendrás una visión detallada sobre Novedades en JDK y JSF, Nuevos componentes, Mejoras y novedades en JDeveloper, Mejoras y novedades en ADF, etc.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Es un diagrama para La asistencia técnica o apoyo técnico es brindada por las compañías para que sus clientes puedan hacer uso de sus productos o servicios de la manera en que fueron puestos a la venta.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
JAVA EE5
1. 1
Java EE 5 (sucesor de J2EE):Java EE 5 (sucesor de J2EE):
el reto de volver a empezarel reto de volver a empezar
MarMaríía Consuelo Frankya Consuelo Franky
Abril de 2007Abril de 2007
CincoSOFT Ltda.CincoSOFT Ltda.
ConsueloFranky@cincosoft.comConsueloFranky@cincosoft.com
http://www.cincosoft.comhttp://www.cincosoft.com
2. 2
IntroducciIntroduccióónn
• Java EE 5 reemplazó a J2EE hace menos de 1 año: cambio
profundo de modelo conceptual, arquitectura y estrategia de
desarrollo
• Aplicaciones Java EE 5 son mucho más concisas y eficientes:
reducen el código a la tercera parte
• El reto es volver a aprender a hacer aplicaciones de una
manera completamente distinta
• Objetivo de la conferencia: visión general del desarrollo de
aplicaciones Java EE 5 con sus ventajas y dificultades
3. 3
ContenidoContenido
A: Arquitectura de una aplicación Java EE 5
B: Concepto y programación de un caso de uso
C: Facilidades para el desarrollo de aplicaciones Java EE 5
D: Elementos JSF para pantallas
E: Meta-framework para acelerar el desarrollo en Java EE 5
(experiencia CincoSOFT)
5. 5
•Maneja
interacción
con usuario
•Despliegue
HTML
•Validación
sintáctica
PresentaciPresentacióónn
Cliente conCliente con
navegador Webnavegador Web
•Invoca
servicios
•Validación
sintáctica
•Adapta
respuestas
a interfaz
usuario
•Maneja
excepciones
AplicaciAplicacióónn
ServidorServidor WebWeb
•Realiza
servicios
sobre
objetos del
dominio
•Implanta
reglas del
negocio
•Estado de
sesión
-usuario
•Control
transacción
ServiciosServicios
Servidor de ComponentesServidor de Componentes
•Servicios
básicos de
persistencia
de objetos
del dominio
•Transforma-
ción Objeto-
Relacional
•Soporte
transacción
PersistenciaPersistencia
Servidor BDServidor BD
•Modela
entidades
del negocio
y sus reglas
básicas
•Validación
semántica
DominioDominio
Niveles de una arquitecturaNiveles de una arquitectura multimulti--nivelnivel
6. 6
Elementos del estElementos del estáándar Java EE 5ndar Java EE 5
Múltiples frameworks
Framework:
• librería
• reglas de uso
• soporta 1 aspecto
del desarrollo
8. 8
Pantallas se contruyen con componentes gráficos
que reaccionan a eventos:
son componentes de alto nivel que encapsulan elementos
HTML y tienen comportamiento asociado
como reacción a eventos (por ej: oprimir un botón) invocan
directamente métodos de clases java ("backing beans")
Aspectos de validación de los datos del usuario:
Validación automática asociada a cada componente gráfico
Cuando la validación falla se vuelve a mostrar la pantalla junto
con los mensajes de error
Procesamiento de eventos solo cuando la validación es
exitosa
Nivel web basado en JSFNivel web basado en JSF
9. 9
Framework JSF
Navegador
Cliente
PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia
servlet Faces
Servidor Web Servidor BDServidor de
componentes
DominioDominio
JSP
pantallazo1
HTML
1
JSP
pantallazo2
Backing
Bean 2
VISTAS
MODELO
CONTROLADOR
Backing
Bean 1
BD
rela-
cional
HTML
2
EJB
sesión
A
EJB
entidad
C
10. 10
Concepto de EJB de entidad
modela una entidad de negocio persistente
Concepto de EJB de sesión
componente de negocio: implementa los servicios ofrecidos
por la aplicación
Simplificación de Java EE 5 respecto a J2EE
clases simples para implementar entidades y componentes de
negocio:
• se regresa a un POJO: “Plain Old Java Objects”
descriptores desaparecen (pero ahora hay @anotaciones no
obligatorias)
• más trabajo para el Contenedor, menos para el desarrollador
persistencia automática: desaparece SQL burocrático
ahora sí se programa en términos de objetos (entidades) y no en
términos de tablas de la BD
• código se reduce a la tercera parte (y más robusto)
Niveles de Servicio y DominioNiveles de Servicio y Dominio
basados en EJBs 3.0basados en EJBs 3.0
11. 11
J2EE:J2EE:
Arquitectura MVC de una aplicaciArquitectura MVC de una aplicacióónn
Navegador
Cliente
PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia
Servidor Web Servidor BDServidor de componentes
DominioDominio
VISTAS
MODELO
CONTROLADOR
BD
rela-
cional
servlet controlador
EJB sesión
A
EJB entidad
C
StateMachine
javaBean 1
javaBean
2
WebProxy
EJB controlador
ScreenFlow-
Manager
JSP
pantallazo1
JSP
pantallazo2
JSP
template
HTML
1
RequestProcessor
HTML
2
MainServlet
DAO
Model
DAO
Value
BD
12. 12
Java EE 5:Java EE 5:
Arquitectura de una aplicaciArquitectura de una aplicacióónn
utilizando frameworks JSF, EJB 3.0 y Seamutilizando frameworks JSF, EJB 3.0 y Seam
Navegador Cliente
JSP
N. AplicaciN. Aplicacióón (Web)n (Web)
ejb
aplicación
N. ServiciosN. Servicios N. PersistenciaN. Persistencia
Servidor Web Servidor de BD
N. PresentaciN. Presentacióónn
Servidor de componentes
BD
relacional
HTML
JSP
entidades
Convenciones: interacción HTTP invocación acceso BD uso de atributos
de entidades (get y set)
servlet
JSF
servlet
Seam
ejb
Seam
ejb
aplicación
entity
manager
forward
frameworks
13. 13
Seam logra que las entidades estén asociadas
directamente a las pantallas
las pantallas muestran valores de atributos de entidades
el usuario modifica o suministra valores para estos atributos
Procesamiento de eventos de pantallas es realizado
directamente por los componentes EJB de sesión
Se eliminan intermediarios => muchos patrones se
vuelven innecesarios
Portabilidad de Seam a cualquier servidor que soporte JSF y
EJB 3.0
Acople entre niveles utilizando elAcople entre niveles utilizando el
framework JBoss Seamframework JBoss Seam
15. 15
J2EE:J2EE:
Arquitectura para soportar un caso de usoArquitectura para soportar un caso de uso
Navegador
Cliente
PresentaciPresentacióónn AplicaciAplicacióónn ServiciosServicios PersistenciaPersistencia
Servidor Web Servidor BDServidor de
componentes
DominioDominio
VISTAS MODELO
BD
rela-
cional
JSP
pantallazo1
JSP
pantallazo2
JSP
template
servlet controlador
CONTROLADOR
WebProxy
EJB sesión
A
DAO
EJB controlador
StateMachine
XxxEjbHandler
XxxModel
ScreenFlow-
Manager
XxxFlow-
Handler
HTML
1
RequestProcessor
HTML
2
MainServlet
RequestToEventTrans
XxxRequest-
Handler
XxxValue
EJB entidad
C
DAO
16. 16
Java EE 5:Java EE 5:
Arquitectura para soportar un caso de usoArquitectura para soportar un caso de uso
Navegador Cliente
JSP 2
N. AplicaciN. Aplicacióón (Web)n (Web) N. ServiciosN. Servicios N. PersistenciaN. Persistencia
Servidor Web Servidor de BD
N. PresentaciN. Presentacióónn
Servidor de componentes
BD
relacional
HTML
JSP 1
Entidades
(compartidas por los casos de uso)
Convenciones: interacción HTTP invocación acceso BD uso de atributos
de entidades (get y set)
Ejb para el
caso de uso
forward
Frameworks JSF, EJB 3.0 y Seam
17. 17
pantalla P
Concepto de un caso de usoConcepto de un caso de uso
Es un conjunto de servicios sobre entidades de negocio,
implementado por un ejb de sesión y por un conjunto de
pantallas desde donde se solicitan estos servicios
ejb de sesión
entidad A
entidad B
pantalla Q pantalla Rcampos de
pantallas
asociados a
atributos de
entidades y
del ejb
botones de
pantallas que
invocan servicios
del ejb
entidades
compartidas por
todos los casos de
uso
los servicios del ejb
consultan y modifican
las entidades
18. 18
Un ejb de sesión que soporta un caso de uso puede exponerse
como Web service ofreciendo públicamente un subconjunto
de sus servicios
ejb de sesión
Web service
entidad A
entidad B
19. 19
AplicaciAplicacióón =n =
entidades + ejbs + web services + pantallasentidades + ejbs + web services + pantallas
caso de uso 1 caso de uso 2
Web service 1 Web service 2
ejb sesión
caso uso 1
entidad A
entidad B
entidad C
entidad D
entidades de negocio
ejb sesión
caso uso 1
ejb sesión
20. 20
Flujo de negocio paraFlujo de negocio para
un nuevo caso de usoun nuevo caso de uso
Caso de uso “inscribir nuevo hotel”
invocar servicio newHotel() para iniciar conversacion creando
nuevo objeto Hotel vacio
mostrar pantalla "editHotel" que muestra el objeto Hotel para que
el usuario de valor a sus atributos
invocar servicio verifyNewHotel() para validar el objeto Hotel:
• si hay errores de validacion volver a mostrar la pantalla "editHotel”
• si no hay errores mostrar la pantalla "confirmHotel" para pedir al
usuario su confirmacion o cancelación
cuando el usuario confirma:
• invocar servicio confirm() para agregar el nuevo Hotel a la BD y
cerrar la conversacion
• mostrar la pantalla "main" del sistema, la cual mostrará un mensaje
de confirmacion
cuando el usuario cancela:
• invocar servicio cancel() para cerrar conversacion
• mostrar pantalla "main"
22. 22
pages.xml: reglas de navegación entre
pantallas
desde cualquier pantalla con la acción newHotel se solicita ir
a la pantalla editHotel de entrada al caso de uso
en la pantalla editHotel el usuario suministra los datos del
nuevo hotel e invoca la acción verifyNewHotel; después va
a la pantalla confirmHotel solo si el nuevo hotel es válido
<!-- reglas desde cualquier pantalla -->
<page view-id="*">
...
<navigation from-action="#{hotelInscription.newHotel}">
<redirect view-id=
"/pages/hotels/hotelInscription/editHotel.xhtml"/>
</navigation>
</page>
<!-- reglas desde pantalla editHotel -->
<page view-id="/pages/hotels/hotelInscription/editHotel.xhtml"
conversation-required="true">
<navigation from-action="#{hotelInscription.verifyNewHotel}">
<rule if="#{hotelInscription.hotelValid}">
<redirect view-id=
"/pages/hotels/hotelInscription/confirmHotel.xhtml"/>
</rule>
</navigation>
</page>
23. 23
Ejb de sesiEjb de sesióón para el caso de uson para el caso de uso
Atributos:
atributos que representan los frameworks de control
atributos que son entidades
atributo que indica el resultado de validar la nueva entidad Hotel
inyección/extracción de atributos
@Stateful
@Name("hotelInscription")
public class HotelInscriptionAction
implements HotelInscription {
@PersistenceContext
private EntityManager em;
@In
private FacesMessages facesMessages;
@In(required=false)
@Out(required=false)
private Hotel hotel;
private boolean hotelValid;
public boolean isHotelValid(){
return hotelValid;
}
@Destroy @Remove
public void destroy() {}
24. 24
Servicios:
servicios que inician o terminan conversación de inscribir un hotel
servicio que valida el nuevo hotel
servicio que ingresa el nuevo hotel a la BD
@Begin
public void newHotel() {
hotel = new Hotel();
}
public void verifyNewHotel() {
if ( ! hotel.getCountry().equals("USA") ) {
facesMessages.add
("Only accepts hotels in USA ");
return;
}
if ( ! hotel.getZip().matches("^d*$") ) {
facesMessages.add("Zipcode must be numeric");
return;
}
hotelValid = true;
}
@End
public void confirm() {
em.persist(hotel);
facesMessages.add("Thank you, your inscription"
+ " of #{hotel.name} has id #{hotel.id}");
}
@End
public void cancel(){}
}
25. 25
Entidades que participanEntidades que participan
en el caso de usoen el caso de uso
entidad maestra Hotel
@Entity
@Name("hotel")
@Scope(CONVERSATION)
@Table(name="Lodge")
public class Hotel implements Serializable {
private Long id;
private String name;
...
private List<Atraction> atractions
= new ArrayList<Atraction>();
public Hotel() {}
@Id @GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
• Observar:
– atributo de relación con otra entidad (detalles)
– anotación indicando el atributo llave
26. 26
@NotNull
@Length (min = 1, max = 50, message =
"name is required and must be at most {max} characters long")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
...
@OneToMany(mappedBy="hotel", cascade=CascadeType.ALL)
@OrderBy("description asc")
public List<Atraction> getAtractions() {
return atractions;
}
public void setAtractions(List<Atraction> atractions) {
this.atractions = atractions;
}
}
• Observar:
– anotación de validación de un atributo
– anotación de relación con otra entidad
30. 30
C:C:
Facilidades para el desarrollo deFacilidades para el desarrollo de
aplicaciones Java EE 5aplicaciones Java EE 5
31. 31
Variables en contextos Seam:Variables en contextos Seam:
inyecciinyeccióón y extraccin y extraccióón (biyeccin (biyeccióón)n)
hotel
booking
hotels
atractions
hotelSearching
hotelInscription
hotelBooking
out
in
entidad
lista de
entidades
ejb de
sesión
Convenciones
Biyección: asociación dinámica, contextual y bidireccional entre
las variables de los contextos y los atributos de los componentes
33. 33
Tipos de contextos en Seam:
StatelessContext: variables sin estado (como ejbs sin estado); en
realidad es un no contexto
EventContext: equivale al request context, asociado a pedido JSF
PageContext: estado asociado a una pantalla mostrada
ConversationContext: unidad de trabajo para el usuario, puede
durar varios pedidos
SessionContext: asociada a toda la sesión de un usuario
BusinessContext: asociado a un proceso de negocio que puede
involucrar múltiples interaccionees con múltiples usuarios
ApplicationContext: asociado al estado global del servidor
34. 34
Servicios de persistenciaServicios de persistencia
del EntityManager (framework EJB3.0)del EntityManager (framework EJB3.0)
Invocados desde los ejb de sesión
Obtener la referencia al EntityManager por inyección:
@PersistenceContext
private EntityManager em;
insert en la BD una nueva entidad :
em.persist(hotel); // el objeto adquiere PK
select en la BD una entidad existente, conociendo su PK:
Hotel hotel = (Hotel)em.find(Hotel.class, hotelId);
select en la BD una entidad existente, cancelando posibles
modificaciones en memoria:
em.refresh(hotel);
update diferido en la BD con modificaciones de una entidad
existente (se difiere hasta el commit de la transacción):
hotel.setName("Hotel Rey");
em.merge(hotel);
delete en la BD de una entidad existente:
em.remove(hotel);
35. 35
createQuery(): consulta o actualización en la BD según
diversos criterios (EJB QL):
select una entidad:
Hotel hotel = (Hotel)em.createQuery
("from Hotel h where h.name=:name and h.city=:city")
.setParameter("name", "Hotel Rey")
.setParameter("city", "Bogota")
.getSingleResult();
select una lista de entidades:
List<Hotel> theList = em.createQuery
("from Hotel h where h.city = :city")
.setParameter("city", ”Bogota")
.getResultList();
update una o varias entidades:
em.createQuery
("update Hotel h set h.city = :city")
.setParameter("city", "Bogota")
.executeUpdate();
delete una o varias entidades:
em.createQuery
("delete from Hotel h where h.city = :city")
.setParameter("city", ”Bogota")
.executeUpdate();
36. 36
Otras facilidades importantesOtras facilidades importantes
Facilidades de Log proporcionadas por Seam
permite mostrar banderas que combinan texto parametrizado y
variables de contextos:
log.info("Cancel booking: #0 for #{user.username}",
booking.getId());
Seguridad por roles
por anotaciones se puede proteger un ejb o un servicio particular
para que solo pueda ser invocado por un rol particular
Cada botón de una pantalla se puede habilitar o mostrar solo para
un rol particular
Internacionalización: se pueden lograr las siguientes
características:
el usuario escoge el idioma de su preferencia
existe idioma por defecto según localización del usuario
los letreros de las pantallas salen en el idioma vigente
los mensajes de errores de validación salen en el idioma vigente
38. 38
PantallasPantallas ““faceletsfacelets””
construidas con templates y <div>construidas con templates y <div>
Concepto de template:
pantalla base que define estructura común de las pantallas reales
contiene partes fijas y partes que deben ser redefinidas por cada pantalla
ejemplo de estructura de pantalla:
banner
contentsidebar
footer
39. 39
Ejemplo de template: template.xhtml
<!-- librerias de etiquetas -->
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:t="http://myfaces.apache.org/tomahawk">
<!-- referencia al archivo que define estilos de los div -->
<head>
<meta http-equiv="Content-Type"
content="text/html;charset=iso-8859-1" />
<title>Hotels reservation system</title>
<link href="../css/screen.css" rel="stylesheet" type="text/css"/>
</head>
40. 40
<body>
<!-- div que define la estructura global de toda pantalla -->
<div id="document" >
<!-- toda pantalla tiene un banner fijo -->
<div id="headerMenu">
<div id="titleMenu"><h4>CincoSOFT framework</h4></div>
<div id="statusMenu">
<t:jscookMenu layout="hbr" theme="ThemeIE">
<t:navigationMenuItems value="#{login.menu}" />
</t:jscookMenu>
</div>
</div>
<!-- toda pantalla tiene un contenido variable: las partes
sidebar y content deben ser definidos por c/pantalla real-->
<div id="container">
<div id="sidebar" style=" width : 150px;">
<ui:insert name="sidebar"/>
</div>
<div id="content" style="width : 500px;">
<ui:insert name="content"/>
<ui:include src="footer.xhtml" />
</div>
</div>
</div>
</body>
</html>
41. 41
Pantalla real que se basa en el template:
la etiqueta más externa <ui:composition> indica que se usa un template
la etiqueta <ui:define> redefine partes variables del template
se diseña con <div> que tienen estilos asociados
ejemplo: password.xhtml :
<!-- librerias de etiquetas e indicacion del template utilizado -->
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:s="http://jboss.com/products/seam/taglib"
template="../common/template.xhtml">
<!-- definicion de la parte content -->
<ui:define name="content">
<div class="section"> <h1>Change Your Password</h1></div>
<div class="section">
...
</div>
</ui:define>
<!-- definicion de la parte content -->
<ui:define name="sidebar">
<h1>changePassword use case</h1>
</ui:define>
</ui:composition>
42. 42
Elementos avanzados de JSFElementos avanzados de JSF
Menú jerárquico dinámico: etiqueta <t:jscookMenu>
47. 47
E:E:
MetaMeta--framework para acelerar elframework para acelerar el
desarrollo en Java EE 5desarrollo en Java EE 5
(experiencia CincoSOFT)(experiencia CincoSOFT)
48. 48
Su control se apoya en frameworks: JSF, EJB3.0, Seam
Debe contener un módulo de seguridad:
basado en roles JEE para autenticación y autorización
entidades y casos de uso para: cambiar password, manejar perfiles
de seguridad (basados en roles), manejo de usuarios e inscripción en
perfiles ,...
Debe contener los descriptores correctamente configurados
Debe disponer de un menú jerárquico que se carga de la BD
según perfil del usuario
Sus fuentes deben estar organizados por módulos y dentro
de cada módulo por casos de uso
inicialmente nace solo con el módulo de seguridad
Debe disponer de un ANT para compilación, empaque y
despliegue
Debe manejar logs
El esqueleto de una aplicaciEl esqueleto de una aplicacióón Java EE 5n Java EE 5
49. 49
Genera el esqueleto de una aplicación Java EE 5
se apoya en frameworks estándares JEE5:
JSF: implementado por Apache Myfaces
EJB 3.0: implementado por el servidor JBoss; en el futuro debe
operar también con otros servidores (BEA, IBM WebSphere, …)
JBoss Seam: acopla JSF y EJB 3.0
JBoss jBPM: workflow
otros: Log4j, Quartz, Jasper, ….
Además ofrece generadores de esqueletos para agregar a la
aplicación:
una nueva Entidad
un nuevo EJB
un nuevo Web-Service
una nueva pantalla
un nuevo Caso de Uso
un nuevo Módulo
El Meta-Framework de CincoSOFT no amarra a la aplicación a
utilizar permanentemente el Meta-Framework
el código generado es claro y documentado
organizado según el estándar: por módulos y casos de uso
indica secciones que deben ser llenadas por el programador
MetaMeta--framework de CincoSOFTframework de CincoSOFT
50. 50
Esqueleto inicial de una aplicaciEsqueleto inicial de una aplicacióón Java EE 5n Java EE 5
generado por el Metagenerado por el Meta--framework de CincoSOFTframework de CincoSOFT
Navegador Cliente
N. AplicaciN. Aplicacióón (Web)n (Web) N. ServiciosN. Servicios N. PersistenciaN. Persistencia
Servidor Web Servidor de BD
N. PresentaciN. Presentacióónn
Servidor de componentes
BD
relacional
HTML
password.xhtml
Module, Usecase, Service,
Profile, ProfileService,
User, UserProfile,
Menu
Convenciones: interacción HTTP invocación acceso BD uso de atributos
de entidades (get y set)
Ejb ChangePassword
forward Frameworks JSF, EJB 3.0 y Seam
acople mediante descriptores generados por
el meta-framework CincoSOFT
users.xhtml
profiles.xhtml
Ejb UserGestion
Ejb ProfileGestion
ENTIDADES
51. 51
ConclusionesConclusiones
Atractivos de Java EE 5:
Conciso y eficiente; reduce código a la tercera parte
Desaparece JDBC (código burocrático SQL) y varios patrones
Integración de múltiples frameworks que ofrecen muchas
facilidades: persistencia, seguridad, logs, internacionalización,
BPM, testing, ...
Pantallas con elementos ricos de interfaz y relativa facilidad de
uso: múltiples implementaciones de JSF por Apache MyFaces,
Oracle ADF, …
Dificultades planteadas por Java EE 5:
comenzar de nuevo ….
Pérdida del control a un nivel fino de detalle porque los
frameworks actúan como cajas negras => dificultad de depurar
Actualmente no es soportado por todos los proveedores de la
tecnología Java
Utilidad de un meta-framework
disminuir sustancialmente la curva de aprendizaje
acelera el proceso de desarrollo
52. 52
ReferenciasReferencias
Libros sobre Java EE 5:
• “JavaServer Faces: The Complete Reference”, Mc Graw Hill,
2007.
• “Pro EJB 3: Java Persistence API”, Apress, 2006.
Fuentes en internet:
• http://java.sun.com/javaee/5/docs/tutorial/doc : "The Java EE 5
Tutorial " es el tutorial oficial de Sun (versiones HTML y PDF)
• http://labs.jboss.com/portal/jbossseam/docs:
Manuales de referencia de JBoss Seam
• http://java.sun.com/javaee/technologies/javaee5.jsp: “Get Started
with the Java EE 5 SDK": son tutoriales y demos para comenzar
• http://java.sun.com/reference/blueprints: Patrones y guías para el
desarrollo de aplicaciones Java EE en general