Mostrando entradas con la etiqueta SPRING 3. Mostrar todas las entradas
Mostrando entradas con la etiqueta SPRING 3. Mostrar todas las entradas

domingo, 28 de abril de 2013

MANEJO WEBLOGIC SHARED LIBRARIES PARA SPRING 3.

El empaquetado de las librerías en JAVA normalmente se realiza de la siguiente manera:

1. Introduciendo los JARs dentro del WEB-INF/lib de la aplicación.
2. Referenciando la ubicación de los JARs a una ruta externa y especifica del servidor de aplicaciones.

Ambas modalidades son aceptadas pero a medida que el número de aplicaciones aumenta se debe de realizar mejoras en cuanto al manejo del número de librerías debido a que muchos de los frameworks que son manejados e integrados requieren de un gran número de JARs diferenciados por versión y muchas veces se puede perder el control de dichas versiones y a la vez se llegar a la sobrecarga del servidor de aplicaciones debido al gran tamaño de los EARs desplegados ya que se insiste en tener los todos JARs embebidos en las aplicaciones.

Para solucionar esto se requiere detallar concepto de las Weblogic Shared Libraries que en si consiste en compartir librerías (grandes cantidades) con las aplicaciones desplegadas en el servidor (EARs y WARs). Esta característica es muy buena que nos permite referenciar entre aplicaciones las librerías desplegadas en el servidor y así no utilizarlas sin la necesidad de recargar las aplicaciones embebiendo todo en WEB-INF/lib.

En esta oportunidad mostraré un ejemplo completo de cómo:

1- Crear una Weblogic Shared Library (Utilizaremos el Framework Spring 3).
2- Desplegar una Weblogic Shared Library.
3- Configurar y referenciar una Weblogic Shared Library usando ECLIPSE y JDEVELOPER.
4- Probar la solución mediante una APP con SOAPUI.


Debido que el tutorial es bien extension he visto conveniente mejor adjuntar el tutorial para que se aprecio mejor el detalle paso a paso de cada configuración:

- Para DESCARGAR el "Tutorial paso a paso", dar click: AQUÍ
- Para DESCARGAR las 3 version es de "Shared Libraries" (WARs) para Spring 3, dar click: Lib_Spring 3.0.5, Lib_Spring 3.1, Lib_Spring 3.2.2


 

jueves, 5 de abril de 2012

INTEGRACION SPRING 3 + MONGODB + SERVLET + MAVEN

Hola en esta oportunidad mostrare una integración bien interesante se trata de la integración de Spring 3 con un Motor de datos No-Relacional osea Orientado a Objeto llamado MongoBD y todo administrado con el estándar maven .

Explicando un poco podemos decir que al maneja BD relacionales como Oracle, SQLServer, MySql, DB2 dentro de un App Web independientemente del lenguaje que te tenga la aplicación, uno sacrifica mucho tiempo al momento de realizar el Mapping de los Objetos (Beans) a sentencias SQL o JOINs para uno traer los datos respectivos. Una solución a esto es usar un Framework ORM que facilite este mapping y haga de tu persistencia que luzca como un seudo manejo orientado a objetos. Pero en si, si se desea ganar ese tiempo perdido en el mapping se lograría la usar Bases de datos no relacionales como MongoDB siguiendo la tendencia del NoSql que tan bien les ha ido a grandes como: Twitter, Facebook, etc.

Lo ORM relacionado a los CRUD y QUERYs de persistencia, nos ayuda a ya no tener que estar ejecutando SQL sino que de frente orientar todo a un pseudo manejo orientado a OBJETOS ya que tu programación si es que ya esta orientada a objetos es ilógico que lo tengas de transformar a: NO OBJETOS (DB Estructural) para guardar persistir en BD. Para eso son los ORM nos brindan una capa de mapping automática para poder persistir mas fácilmente COMO DEBE DE SER.

Al Integrar con BD Orientadas a Objetos aumentamos la rapidez de nuestros aplicativos, ya que nos olvidamos en si de la capa de ORM (Mapping) sino que de frente persistiremos nuestros objetos cargados.

Iniciaremos el post explicando un poco como descargar e instalar MongoDB en un ambiente WINDOWS XP:

1. DESCARGAR [MONDODB]: MongoDB., que es el servidor de BD.

2. DESCARGAR [MONGOVUE]: MongoVue., que es la herramienta por excelencia para administrar MongoDB .

INSTALACION MONGODB:
Luego de descargar el zipeado de MONGODB .

PASO #0: Configurar variables de entorno que apunten al directorio BIN en la ruta
del zipeado descargado de MONGODB .

DENTRO DE [PATH] EN VARIABLES DE ENTORNO APUNTAR:
C:\JAVA\MONGODB\mongodb_win32_v1.6.5\bin

PASO #1:
C:\> mkdir "C:\JAVA\MONGODB"

PASO #2:
C:\> cd "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\bin"
C:\JAVA\MONGODB\mongodb_win32_v1.6.5\bin> mongod


PASO #3: CREAR DIRECTORIOS:

C:\> mkdir "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\data"
C:\> mkdir "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\data\db"
C:\> mkdir "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\logs"
C:\> mkdir "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\conf"


PASO #4: INICIAR EL SERVICIO [MongoDB]:

mongod --logpath "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\logs\log.txt" --dbpath "C:\JAVA\MONGODB\mongodb_win32_v1.6.5\data" --install


PASO #5: INICIAR EL BD:

- OPCION #1 [DIRECTA]: C:\>net start "MongoDB"
- OPCION #2 [ADMNISTRADOR SERVICIOS]: C:\>services.msc , luego buscar el servicio "MongoDB" e iniciarlo.

PASO #6: PROBAR CONEXION DESDE CONSOLA:

C:\> mongo
> 10+10
6
> db
test
> db.foo.insert( { a : 1 } )
> db.foo.find(){ _id : ..., a : 1 }
> show dbs
...
> show collections
...
>exit
bye


PASO #[EXTRA]:

- 'REPARAR' SERVICIO [MongoDB]: mongod --repair
- 'ELIMINAR' SERVICIO [MongoDB]: mongod --remove

Ya tenemos instalados MongoDb ahora requerimos lo siguiente:

- Eclipse v3.6 (Plugin Maven).
- Tomcat 6 (Instalado).
- Maven (Ya configurado).


1. Iniciamos el cliente MONGOVUE y nos conectamos a la BD:



2. El Dummy al ser cargado en Eclipse y desplegado en Tomcat mostrara la siguiente interfaz:


3. Al procesar el APP se ejecutara el Servlet: ValidaMongoDbServlet, que probara los escenarios comunes que se pueden dar al trabajar con procesos transaccionales (CRUD y QUERYs), pero esta vez no apoyándonos en un ORM sino que persistiendo en un BD orientada a objetos [MongoDB]. Los procesos a testear son los siguientes:

- registrarUsuario
- loginUsuario
- actualizarUsuario
- obtenerUsuario
- obtenerListaUsuarios
- eliminarUsuario



Finalmente, veremos que el Dummy ha creado el esquema: DB_PLANTILLA en MongoDB y la Colleccion (Tabla): TB_USUARIOS, donde se registraron 2 registros que en el transcurso del Dummy se han creado y modificado. Lo intersante es que MongoDB al reliaza un persistencia de un Objeto aninado (AGREGACION o COMPOSICION), este lo guarda de forma directa en su propio registro de BD, esto se prueba apreciar mediante la herramienta cliente en la relacion USUARIO - PRODUCTO que hemos probado.




Para un mejor entendimiento del manejo de este Framework, puedes descargar el proyecto 'Eclipse Mavenizado' completo: AQUI.

jueves, 8 de marzo de 2012

INTEGRACIÓN - SPRING 3 + HIBERNATE 3 + SERVLET + MAVEN

Que tal compañeros regreso a postear luego de algún tiempo y en esta oportunidad hablare y mostrare otra forma de cómo integrar el Framework HIBERNATE.

Si hablamos un poco de este Framework es uno de los Frameworks orientados a persistencia mas utilizados por las diferentes ventajas que nos brinda.

El ejemplo posteado esta principalmente orientado a mostrar la correcta integración de dicho Framework HIBERNATE 3, al ser integrado con otro framework SPRING 3. Para fines del Dummy la ejecución se realizara por medio de un SERVLET y la arquitectura del APP será construida mediante MAVEN.


Este proyecto demo esta orientado a Web y fue desarrollado en la IDE Spring Suite v2.5 que es en si un ECLIPSE con varios PLUGINs adicionales y la ejecución del proyecto en si esta controlado con MAVEN y soportado en la BD DB_PLANTILLA en MYSQL Script dentro del Resources .

EJECUCION:

La ejecución de los ejemplos se desencadenaran mediante la ejecución del SERVLET: ValidaHibernateServlet . Estos son los siguientes:

- obtenerUsuarioForma01
- obtenerListaUsuarios2
- obtenerListaUsuarios3
- obtenerObjetoUsuarios
- registarUsuarioProducto


Finalmente, se puede comentar que el Dummy muestra las diferentes formas de como manejar HIBERNATE ya en lo que respecta al manejo de Sesiones y el uso del popular Generic DAO .

Para descargar el ejemplo completo descargarlo de: AQUÌ.

lunes, 27 de febrero de 2012

INTEGRACIÓN: SPRING 3 + MYBATIS 3 + JAXWS 2.1.3 + MAVEN

En esta oportunidad postearé sobre una muy Buena integración basada en 3 FRAMEWORKs de últimos y conocidos:

- - SPRING 3 = Manejo de sesiones, factory, services.
- - MYBATIS 3.0.5 = Persistencia y Mapping.
- - JAXWS 2.1.3 = Servicio Web.

Adicionalmente, para la construcción del proyecto nos apoyaremos en MAVEN, para la generación de LOGs usaremos log4j y la base de datos esta en ORACLE 11g.

El Dummy preparado para ver el efecto de la integración es un WebService que tiene exponer datos de USUARIO para la consulta respectiva. Este WebService lo creo en base a una lógica de tipo TOP DOWN, osea generar el Servicio Web en base a un WSDL ya creado. Ese WSDL lo cree a mano en base a los estándares para WSDL y XSD existentes.







Las OPERACIONES soportadas por el WebService son:

1. consultaUsuarioForma_01:
INPUT:
Primitivos: codigo, dni
OUTPUT: Cadena concatenada con datos de usuario filtrado.

2. consultaUsuarioForma_02:
INPUT:
Primitivos: codigo, dni
OUTPUT: Objeto Usuario ya cargado y filtrado.

3. consultaUsuarioForma_03:
INPUT:
Objeto Usuario seteado.
OUTPUT: Objeto Usuario ya cargado y filtrado.

4. consultaUsuarioForma_04:
INPUT:
Objeto Usuario seteado.
OUTPUT: Lista de Objetos Usuario.


Lo bueno es que el JAXWS te brinda una mayor facilidad para el manejo de objetos y lista de objetos embebidos en dicho WebService que otros Framework como AXIS 1 y 2.

Descripción detallada del DUMMY:

- DummyWS\src\main\webapp\wsdl\DummyWS.wsdl : Interfaz en base a la cual se ha generado el proyecto J2EE.

- DummyWS\pom.xml: Archivo de configuracion de MAVEN. Aquí se declaran las DEPENDENCIAS, PLUGINs, etc.

- DummyWS\src\main\resources\pe\com\javaman\dummy\conexion\jdbc.properties: Archivo de configuración de los parámetros del Motor de Datos ORACLE.

- DummyWS\src\main\resources\pe\com\javaman\dummy\conexion\mybatis-config.xml: Archivo de configuración de MYBATIS. Aquí se configura los Alias a los objetos mapeados y las rutas respectivas de dichos objetos.

- DummyWS\src\main\resources\pe\com\javaman\dummy\mapping\Usuario.xml: Archivo de Mapping MYBATIS en base al Alias definidos y los parámetros de la tabla, Query o Procedure de base de datos.

- DummyWS\src\main\resources\Spring\applicationContext.xml: Spring aquí matriculamos los otros archivos de configuración manejados por Spring.

- DummyWS\src\main\resources\Spring\applicationDatasource.xml: Aquí amarramos la conexión a BD para que sea soportada por Spring.

- DummyWS\src\main\resources\Spring\applicationEntityBean.xml: Aquí matriculamos los objetos (Beans), que serán controlados por Spring.

- DummyWS\src\main\resources\Spring\applicationService.xml: Aquí matriculamos Servicios, Daos, Factory, Template, etc. Este es el Archivo de configuración más importante a mi parecer y donde usualmente aparecen los errores al no configurarlo bien.

- DummyWS\src\main\resources\log4j.properties: Archivo de configuración de LOG4J. Aquí definimos los niveles de salida en archive para INFO, DEBUG, ERROR.
- DummyWS\src\main\resources\Script_SQL.txt: String de creación de BD y objetos.

- DummyWS\src\main\java\pe\com\java\org\dummyws\DummySOAPService.java: Clase publica principal donde se definen las operaciones del WebService.

- DummyWS\src\main\java\pe\com\java\org\dummyws\service\UsuarioService.java: Clase Service donde se definen las operaciones del WebService.

- DummyWS\src\main\java\pe\com\java\org\dummyws\service\impl\UsuarioServiceImpl.java: Clase donde se implementa la clase UsuarioService.java.

- DummyWS\src\main\java\pe\com\java\org\dummyws\dao\UsuarioDao.java: Clase DAO donde se define la implementación de las operaciones de WebService.

- DummyWS\src\main\java\pe\com\java\org\dummyws\dao\impl\UsuarioDaoImpl.java: Clase DAO que implementa la clase UsuarioDao.java. Aquí se accede a la persistencia por medio de MYBATIS.

Para poder probar dicho Dummy es requerido manejar la IDE: Spring Suite v2.5 o un Eclipse Helios con el Plugin de MAVEN .


Para mayor detalle descargar el Dummy completo pulsar: Aquí

sábado, 20 de agosto de 2011

DEMO SPRING SECURITY 3.0.3 [BASE DE DATOS] + MVC

Hola en esta oportunidad hablare un poco sobre el tema: 'Spring Security' específicamente amarrado no a la memoria sino en BD. En si Spring Security es un subproyecto del framework Spring, que nos brinda una facilidad para gestionar la seguridad de nuestras aplicaciones Java J2EE. Las ventajas que nos brinda este Framework son:

- Seguridad a nivel de URL.
- Seguridad a nivel de BD (ROLES, GRUPOS).
- Facilidad para separar la lógica de nuestras aplicaciones del control de la seguridad, utilizando filtros.
- Seguridad a nivel de Interfaz mediante Security Tags.


En la demo preparada vamos a ver, con un ejemplo que muestra la configuración de Spring Security para controlar el acceso a los recursos de una aplicación, por medio de la asignación de grupos de usuarios a nivel de Base de Datos, los cuales se podrán modificar desde dicha base de datos. También, la forma de cómo controlar lo mostrado por Spring Security por medio de la Interfaz. También, parte del demo esta basado en Spring MVN en lo relacionado a la navegación del aplicativo.

El Script preparado esta adaptado a MySQL, pero se podría también ser adaptado a otros motores de datos como ORACLE, SQL SERVER, etc. Lo que si deben manejar las mismas tablas con los mismos nombres, campos, amarres y referencias. Dicho Script se encuentra en la ruta:

DemoSpringSecurity_MVC\src\main\resources\Script\ScriptSpringSecurity.sql

Las características del demo preparado son: Esta basado en JAVA J2EE y consta del manejo de las siguientes tecnologías y herramientas:

- Spring Suite v2.5
- SPRING SECURITY 3.0.3
- SPRING 3.0.3
- SPRING MVC 3.0.3
- MAVEN 2.2
- MySQL 5.0
- JSP 1.2 ( con XHTML 1.0)
- Include.
- JSTL 1.2
- etc


Cabe recalcar el manejo de los Tags importantes que posee Spring Security en dicho demo los cuales son:

- [security:authentication property="principal.username" /] = Permite el la visualización del usuario logueado en el sistema.

-[a href="[c:url value="/j_spring_security_logout" /]" ] = Permite ejecutar un Link para cerrar la sesión de Spring Security.

- [security:authorize ifAllGranted] = Aplicado al usuario con todos los roles.
- [security:authorize ifAnyGranted] = Aplicado al usuario con algún rol especifico.
- [security:authorize ifNotGranted] = Aplicado al usuario con sin ningún tipo de rol.

Dentro del archivo: spring-security.xml, para poder trabajar con BD se debe de realizar la configuración siguiente:

[!-- **** SEGURIDAD: 'MANAGER DE AUTENTICACION' **** --]
[security:authentication-manager alias="authenticationManager" ]
[security:authentication-provider user-service-ref="userService" /]
[/security:authentication-manager]

[!-- **** BEAN 'JDBCDAOIMPL' **** --]
[beans:bean id="userService" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl" ]
[beans:property name="dataSource" ref="seguridadDataSource" /]
[beans:property name="enableGroups" value="true" /]
[beans:property name="enableAuthorities" value="false" /]
[/beans:bean]

[!-- **** BEAN 'DATASOURCE' **** --]
[beans:bean id="seguridadDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" ]
[beans:property name="driverClassName" value="com.mysql.jdbc.Driver" /]
[beans:property name="url" value="jdbc:mysql://localhost:3306/DB_SPRING_SECURITY" /]
[beans:property name="username" value="root" /]
[beans:property name="password" value="root" /]
[/beans:bean]


En esta configuración lo resaltante es justamente la selección de las dos formas de trabajo con BD:

[beans:property name="enableGroups" value="true" /] = Para habilitar el manejo a nivel de GRUPOS.

[beans:property name="enableAuthorities" value="false" /] = Para habilitar el manejo a nivel de ROLES.


Por otro lado los GRUPOS conocidos son:
- ROLE_ADMIN: Grupo de Administradores.
- ROLE_USER: Grupo de Usuarios.

Pero se pueden registrar en BD otros grupos en mi caso registre:

- ROLE_SUPERVISOR = Grupo de Supervisores.

Y se configuran en: spring-security.xml.

Las tablas de BD utilizadas de forma STANDAR son:

- USERS
- GROUPS
- GROUP_MEMBERS
- AUTHORITIES
- GROUP_AUTHORITIES


Luego de su configuración se puede probar este Query para ver los amarres respectivos:

SELECT U.USERNAME, U.PASSWORD, U.ENABLED,
GA.AUTHORITY, GM.GROUP_ID
FROM USERS U,
GROUP_AUTHORITIES GA,
GROUP_MEMBERS GM
WHERE U.USERNAME = GM.USERNAME
AND GA.GROUP_ID = GM.GROUP_ID;


La Navegación y redireccionamiento se puede controlado desde el mismo archivo de configuración: spring-security.xml, o hacerle referencia a una clase controladora (que es la forma que en este caso estamos controlado), llamada:

DemoSpringSecurity_MVC\src\main\java\org\java\security\controller\LoginController.java


La Configuración de Privilegios Inicial 'Por GRUPO' aplicada es:

I. RGUERRA:
1- - GRUPO: [ ROLE_ADMIN ]
2- - ESTADO: [ ACTIVADO ]
3- - PROVILEGIO: [ listado, informacion ]

II. RLOZA:
1- - GRUPO: [ ROLE_USER ]
2- - ESTADO: [ ACTIVADO ]
3- - PROVILEGIO: [ listado, informacion ]

III. CCOTRINA:
1- - GRUPO: [ ROLE_SUPERVISOR ]
2- - ESTADO: [ ACTIVADO ]
3- - PROVILEGIO: [ listado ]


El 'NO ACCESO' de algún sitio debido a 'PRIVILEGIOS', redireccionara de forma AUTOMÁTICA a: [accesoRestringido] .

0. Validación Login:

1.Login [RGuerra]:

2.MenuPrincipal [RGuerra]:

3.Listado [RGuerra]:

4.Informacion [RGuerra]:

1.Login [RLoza]:

2.MenuPrincipal [RLoza]:

3.Informacion [RLoza]:

4.Informacion [RLoza]:

1.Login [CCotrina]:

2.MenuPrincipal [CCotrina]:

3.Listado [CCotrina]:

4.Informacion [CCotrina_Protegida]:

Si se activa la configuración deshabilitada para el Grupo: ROLE_SUPERVISOR se mostrara:

5.Informacion [CCotrina]:


Para descargar el demo completo pulsar Aquí

Saludos.

jueves, 11 de agosto de 2011

INTEGRACIÓN SPRING 3.0 + STRUTS 1.3

Hola en esta oportunidad mostrare un muy buen proyecto demo, que muestra el manejo integrado de estos dos muy buenos Framework JAVA.

El proyecto demo preparado esta basado en JAVA J2EE y consta del manejo de las siguientes tecnologías y herramientas:

- Spring Suite v2.5
- STRUST 1.3
- SPRING 3.0
- SPRING JDBC
- MAVEN 2.2
- MySQL 5.0
- JSP 1.2 ( con XHTML 1.0)
- Include.
- Internacionalización
- DisplayTags
- Log4j,
- etc

El demo preparado consta en si de un mantenimiento completo (CRUD) , desde el Login que genera la sesión, pasando por los típicos validators Struts, el motor de datos y la inyección de dependencias va por parte de Spring y la capa de persistencia es controlada por Spring JDBC.

En resumen:

- STRUST: CAPA VISTA.
- SPRING: CAPA NEGOCIO.
- SPRING JDBC: CAPA PERSISTECIA.

El demo esta bien detallado en lo que respecta al manejo por el lado de STRUT 1.3: Action, Form, MappingDispatchAction, ActionForward, ActionRedirect, HttpSession, ActionErrors (Parametrizado), Internacionalizacion, etc.

Y por el lado de SPRING 3.0: Inyección de dependencia, integración con Log4j y MySql, mapeo de Beans, JdbcTemplate, ParameterizedRowMapper, etc.









Para poder hacer funcionar el aplicativo será necesario que manejes una IDE con soporte para MAVEN, de recomendación ECLIPSE y en especial Spring Suite v2.5.

Sepa necesario que te descargues las librerías (JARs) requeridas por el aplicativo mediante MAVEN a tu repositorio local (En el POM.xml están especificadas todas) . Se pueden ayudar el tuto:
Manejo Maven desde STS

Para descargar el demo pulsar Aquí

Saludos.

domingo, 28 de diciembre de 2008

Integrando Spring 3 + Hibernate 3 + JSF + MAVEN

Hola a todos, hace ya algun tiempo que ya no posteo nada, ya que he
estado bien ocupado ultimamente, por eso motivo regreso aqui para compartirles
una aplicación J2EE demo donde muestro la integración que he realizado de los Frameworks: Spring 3 + Hibernate 3 + JSF + MAVEN.

El entorno en la que he trabajo es similar al del demo que postee
hace ya algun tiempo:

La aplicaciòn demo esta dividida en 2 carpetas:

Demo_Spring_Hibernate_Jsf: Que contiene todo el Proyecto Web en las carpetas 'src' y 'WebContent'. ( Las cuales las reemplazaras en un proyecto dinamico que crearas desde Eclipse ).

La aplicacion muestra un simple login en donde se genera una sesion de usuario que redirecciona hacia una interfaz de bienvenida, pero lo realmente interesante es la arquitectura segmentada, que se esta manejando para realizar dicho proceso.

Para descargar el demo pulsar: AQUI..

Para descargar el PDF "SIMILITUD: HQL vs CRITERIA" pulsar: AQUI..