PDF de programación - J2EE Visión Arquitectónica

Imágen de pdf J2EE Visión Arquitectónica

J2EE Visión Arquitectónicagráfica de visualizaciones

Publicado el 19 de Octubre del 2019
93 visualizaciones desde el 19 de Octubre del 2019
965,1 KB
103 paginas
Creado hace 12a (17/10/2007)
J2EE

Visión Arquitectónica

Jose A. Espinosa



ÍNDICE

● ¿Qué es arquitectura?
● Plataforma Java
● ¿Qué es J2EE?
● APIs J2EE
● Contenedores J2EE
● Internacionalización
● Otras “tecnologías”
● Caso de estudio



Arquitectura

● La arquitectura de software, tiene que ver con el diseño y la
implementación de estructuras de software de alto nivel. Es
el resultado de ensamblar un cierto número de elementos
arquitectónicos de forma adecuada para satisfacer la mayor
funcionalidad y requerimientos de desempeño de un
sistema, así como requerimientos no funcionales, como la
confiabilidad, escalabilidad, portabilidad, y disponibilidad.
(Philippe Kruhten)

● Una Arquitectura Software, también denominada

Arquitectura lógica, consiste en un conjunto de patrones y
abstracciones coherentes que proporcionan el marco de
referencia necesario para guiar la construcción del software
para un sistema de información.

● La arquitectura software establece los fundamentos para

que analistas, diseñadores, programadores, etc. trabajen en
una línea común que permita alcanzar los objetivos y
necesidades del sistema de información.



El arquitecto

● ¿Qué hace un arquitecto software?

Un desarrollador se preocupa de qué hará
la aplicación cuando un usuario apriete
un botón, un arquitecto lo hace sobre
qué pasará cuando lo aprietan miles.



El arquitecto debe...

● Liderar el desarrollo para asegurar que

se siga la arquitectura

● Tomar todas las decisiones que afecten

a la arquitectura del sistema

● Comunicarse con desarrolladores y

diseñadores constantemente

● Vigilar activamente el cumplimiento de

los requisitos no funcionales



Requisitos de nivel de servicio
● Rendimiento
● Escalabilidad
● Fiabilidad
● Disponibilidad
● Ampliabilidad
● Mantenibilidad
● Gestionabilidad
● Seguridad



Plataforma Java



J2EE

● J2EE es una plataforma para desarrollar
aplicaciones distribuidas empresariales.

● J2EE consiste en:

– Plataforma
– Implementación de referencia
– Test de compatibilidad
– Planos de APM (Aplication Programming

Model)



J2EE APIs
● JSP
● JMS
● JNDI
● JTA
● JavaMail
● JAF

● J2SE
● JDBC
● RMI-JRMP
● Java IDL
● RMI-IIOP
● EJB
● Servlets



Componentes J2EE

● Aplicación Java
● Applets
● Servlets y JSP
● EJB



Componentes / API

● Cada componente ha de cumplir una

serie de APIs

J2SE JDBC JRMP JIDL RMI-IIOP

EJB

Servlets

JSP JMS JNDI

JTA JavaMail JAF

Aplicación

Applet

Servlets/jsp

EJB

x
x
x
x

x

x
x

x

x

x

x
x

x
x

x
x

x

x

x
x

x

x
x

x
x

x
x

x
x



J2SE

● Java Platform, Standard Edition o Java
SE (antes J2SE), es una colección de
APIs del lenguaje de programación Java
útiles para muchos programas de la
Plataforma Java.

● J2SE 1.4 (Merlin), Java Community

Process. JSR 59

● J2SE 5.0 (Tiger) = JSR 176 especificó
● Java SE 6 (Mustang) = JSR 270.



Librerías J2SE

● Generales
– java.lang
– java.io
– java.math
– java.net
– java.text
– java.util



Librerias J2SE (II)

● Propósito especial

– java.applets
– java.beans
– java.awt
– java.rmi
– java.security
– java.sql
– javax.rmi
– org.omg.CORBA
– javax.swing



JDBC

● Java Database Connectivity
● API que permite interactuar con fuentes

de datos, independientemente del
fabricante

● Conjunto de definiciones de acceso y

gestión de controladores



JDBC (ex.)

● Cargar Drivers
try{

Class.forName("nombreDelDriver").newInstance();
} catch (ClassNotFoundException cnfe) {
Cnfe.printstacktrace();
}
● Abrir conexión
Connection c = DriverManager (url, "usuario", "password");

● Cerrar conexión
if (¡c.isClosed())
c.close();



JDBC (ex2)

● Ejecutar sentencias SQL
Statement stmt = conn.createStatement();
try {
ResultSet rs = stmt.executeQuery( "SELECT * FROM MyTable" );
try {
while ( rs.next() ) {
int numColumns = rs.getMetaData().getColumnCount();
for ( int i = 1 ; i <= numColumns ; i++ ) {
System.out.println( "COLUMN " + i + " = " +
rs.getObject(i) );
}
}
} finally {
rs.close();
}
} finally {
stmt.close();
}



JDBC (transacciones)

● JDBC tiene soporte para transacciones

try {
con.setAutoCommit(false);
// run some SQL
stmt.executeUpdate("UPDATE INV SET OH = 10 WHERE ID = 5");
stmt.executeUpdate("INSERT INTO SHIP (QTY) VALUES (5)");
con.commit();
}
catch (SQLException e) {
con.rollback(); //undo the results of the transaction
}



JDBC (proc. almacenados)

● JDBC se puede usar para ejecutar

procedimientos almacenados

CallableStatment
cstmt = con.prepareCall("{call sp_interest(?,?)}");
cstmt.registerOutParameter(2, Types.FLOAT);
cstmt.setInt(1, accountID);
cstmt.setFloat(2, 2343.23);
cstmt.execute();
out.println("New Balance:" + cstmt.getFloat(2));



JDBC 2.0

● JDBC 1.0 – Mayo 1998
● JDBC 2.0 – 1999

– Mejora en la lectura de los resultsets
– Actualizaciones batch
– Soporte OODBMS
– BLOBS y CLOBS



JDBC 3.0
● JDBC 3.0 – 2002 (JSR-54)

– Savepoints en las transacciones
– Recuperación de claves autogeneradas
– Actualización BLOB y CLOB
– Multiples resultset abiertos
– Recuperación de metadatos de parámetros




Drivers JDBC

● Existen drivers para casi todas las BBDD

del mercado, los drivers pueden ser:
– Tipo 1, puente JDBC-ODBC
– Tipo 2, Driver de API Nativa
– Tipo 3, Driver de protocolo de red
– Tipo 4, Drivers de protocolo nativo
– Interno, driver JDBC embebido con el JRE
– URL JDBC, cadena de conexión



RMI-JRMP

● Java Remote Method Protocol
● Protocolo específico para Java
● Permite referencias objetos remotos
● Es un protocolo que corre sobre TCP/IP

bajo RMI.

● Se puede sustituir por IIOP o por otros

desarrollados por terceros.



Java IDL

● Tecnología de objetos distribuidos
● Basado en "Common Object Request

Brokerage Architecture" (CORBA)

● Permite intercomunicar sistemas escritos

en lenguajes distintos

● Proporciona un broker (ORB) Object

Request Broker

● idltojava para generar stubs y skeletons



Java IDL (ii)

● Comunicación CORBA:



RMI-IIOP

● IIOP (Internet Inter-Orb Protocol)
● Permite interoperar aplicaciones

diseñadas para RMI con otras CORBA.

● RMI no requiere declaracion de IDL
● Presente desde Java 1.3
● Pretende simplificar los desarrollos

CORBA



Servlet

● Un servlet es un objeto que se ejecuta en un

contenedor web

● Fue diseñado para servir páginas dinámicas

web

● Su nombre surge como contraposición a

applet.

● Un servlet es un objeto Java que implementa la
interfaz javax.servlet.Servlet o hereda
alguna de las clases más convenientes para un
protocolo específico (ej:
javax.servlet.HttpServlet).



Ejecución Servlet

● Cargar instancia
● Inicializar
● Servir peticiones (todo el tiempo)
● Destruir
● Descargar



Servlet (ex.)

● El servlet “Hola Mundo”

public class HelloWorldServlet extends HttpServlet {
protected void service (HttpServletRequest request,
HttpServletResponse response)

throws ServletException, IOException
{
ServletOutputStream out = response.getOutputStream();
out.println("<html><body><h1>Hello
}

World</h1></body></html>");

}



JSP

● Los servlets son muy tediosos para

generar código html

● Java Server Pages se diseñó para
generar la capa de presentación en
forma de scripts

● Se permite “embeber” código java dentro

de una página html o xhtml y que sea
interpretada dinámicamente

● Se puede sustituir el código Java por

etiquetas (TagLibs)



Ciclo de vida de un JSP



JSP (ex.)

<%@ page errorPage="myerror.jsp" %>
<%@ page import="com.foo.bar" %>
<html>
<head>
<% int serverInstanceVariable = 1;%>
<% int localStackBasedVariable = 1; %>
</head>
<body>
<table>
<tr>
<td><%=localStackBasedVariable%></td>
</tr>
</table>
</html>



JNDI

● Java Naming and Directory Interface
● API de acceso a servicios de nombre y

directorios en Java

● Pretende asociar nombres con objetos

para poder acceder a ellos de una
manera estandar
– Archivos
– Nombres DNS
– EJBs
– Bases de datos ...



Arquitectura JNDI



JNDI (ex.)

Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.fscontext.RefFSContextFactory");
Context ctx = new InitialContext(env);
Object obj = ctx.lookup (name);
try {
// Create the initial context
Context ctx = new InitialContext(env);
// Look up an object
Object obj = ctx.lookup(name);
// Print it
System.out.println(name + " is bound to: " + obj);
} catch (NamingException e) {
System.err.println("Problem looking up " + name + ": "
+ e);
}



Factorias JNDI

● Filesystem

– com.sun.jndi.fscontext.FSContextFactory
– com.sun.jndi.fscontext.RefFSContextFactory

● LDAP

– com.sun.jndi.ldap.LdapCtxFactory

● NDS

– com.novell.naming.service.nds.NdsInitialContextFa

ctory

● RMI registry

– com.sun.jndi.rmi.registry.RegistryContextFactory



JNDI (ex2)

● Recuperar una conexión de bbdd de un

servidor de aplicaciones

DataSource ds = null;

try
{
Context ctx = new InitialContext();
if(ctx == null) throw new Exception("JNDI Context could not be found.");
ds = (DataSource)ctx.lookup(“jdbc/MifuenteCoreDS”);
if(ds == null) throw new Exception("Datasource could not be found");
connection = ds.getConnection("user","pass");
connection.setAutoCommit(false);
}
catch(Exception e)
{
e.printStackTrace();
}



JMS

● Java Message Service es el API
encargada de mensajería y MOM
(message-oriented middleware)

● Mensaje = conjunto de datos enviados

desde un sistema a otro

● JMS es un API que sirve de
intermediario, como JDBC a
implementaciones de fabricantes
● JMS provider = driver mensajería



JTA
● Java Transaction API
● Define XA para Java (estandar del Open

Group para transacciones distribuidas)

● JTA permite usar transacciones

distribuidas trasp
  • Links de descarga
http://lwp-l.com/pdf16744

Comentarios de: J2EE Visión Arquitectónica (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad