domingo, 21 de agosto de 2011

REPOSITORIOS REMOTOS MAVEN

Muchas veces cuando queremos realizar una aplicación JAVA, ya por costumbre y buenas practicas utilizamos MAVEN para la construcción de nuestro aplicativo y por desgracia nos encontramos trabajando en una PC nueva o simplemente no tenemos nuestro repositorio MAVEN local cargado como para que el POM.xml obtenga las librerías automáticamente de ahí.

En estos casos dependemos de forma obligatorio de los repositorios MAVEN remotos y mientras nuestro aplicativos requiera de mas versiones especificas o si esta integrando varios Frameworks, etc , etc, la necesidad y búsqueda de las librerías será mas tediosa y bueno eso de estar haciéndolo de forma manual es incomodo, así mejor que MAVEN lo haga por ti. Debido a eso aquí les comparto unos TAGs de MAVEN que mapean varios repositorios remotos ya sean RELEASE o SNAPSHOTS , con los cuales se podrán bajar rápidamente todas las versiones de librerías posibles (Hasta el momento nunca me ha fallado).

Para fines de visualización en el BLOG he cambiado los símbolos de Mayor y Menor por los Corchetes”.

[!-- ********************************************** --]
[!-- **** REPOSITORIOS DEL PROYECTO **** --]
[!-- ********************************************** --]

[repositories]

[!-- ****** RELEASE ****** --]
[repository]
[id]atlassian[/id]
[url]http://maven.atlassian.com/repository/public[/url]
[releases] [enabled] true[/enabled] [/releases]
[snapshots] [enabled] false [/enabled] [/snapshots]
[/repository]

[repository]
[id]maven.org.repo2[/id]
[name]Repository of Maven.org[/name]
[url]http://search.maven.org/#search[/url]
[/repository]

[repository]
[id]search.maven.org[/id]
[name]Repository of Maven.org[/name]
[url]http://search.maven.org[/url]
[/repository]

[repository]
[id]itextpdf.com[/id]
[name]Maven Repository for iText[/name]
[url]http://maven.itextpdf.com[/url]
[/repository]

[repository]
[id]repository.jboss.com[/id]
[name]Jboss Repository for Maven[/name]
[url]http://repository.jboss.com[/url]
[/repository]

[repository]
[id]snapshots.jboss.org[/id]
[name]Jboss Snapshot Repository for Maven[/name]
[url]http://snapshots.jboss.org/maven2[/url]
[/repository]

[repository]
[id]java.net[/id]
[name]Repository of Java.net[/name]
[url]http://download.java.net/maven/1[/url]
[/repository]

[repository]
[id]deltaset.org[/id]
[name]Repository of Deltaset[/name]
[url]http://deltaset.googlecode.com/svn/maven2[/url]
[/repository]

[repository]
[id]prime.com[/id]
[name]Repository of PrimeFaces[/name]
[url]http://repository.prime.com.tr/org[/url]
[/repository]

[repository]
[id]com.springsource.repository.maven.milestone[/id]
[name]Spring Framework Maven Milestone Releases (Maven Central Format)[/name]
[url]http://maven.springframework.org/milestone[/url]
[/repository]

[repository]
[id]maven-repository2.dev.java.net[/id]
[name]Java.net Repository for Maven 2[/name]
[url]http://download.java.net/maven/2[/url]
[/repository]

[repository]
[id]mvnrepository.com[/id]
[name]mvnrepository.com[/name]
[url]http://mvnrepository.com[/url]
[/repository]

[repository]
[id]www.mvnbrowser.com[/id]
[name]www.mvnbrowser.com[/name]
[url]http://www.mvnbrowser.com[/url]
[/repository]

[repository]
[id]objectweb[/id]
[name]Objectweb repository[/name]
[url]http://maven.objectweb.org/maven2[/url]
[/repository]

[repository]
[id]ops4j.repository[/id]
[name]OPS4J Repository[/name]
[url]http://repository.ops4j.org/maven2[/url]
[/repository]

[repository]
[id]Codehaus Snapshots[/id]
[url]http://snapshots.repository.codehaus.org/[/url]
[/repository]


[!-- **** SNAPSHOTS **** --]
[repository]
[id]apache-maven-snapshots[/id]
[name]Repository of Snapshots[/name]
[url]http://repository.apache.org/snapshots[/url]
[/repository]

[repository]
[id]apache.snapshots[/id]
[name]ASF Maven 2 Snapshot[/name]
[url]http://people.apache.org/builds/struts/2.1.8.1/m2-staging-repository[/url]
[/repository]

[repository] [id]com.springsource.repository.maven.snapshot[/id]
[name]SpringSource Enterprise Bundle Maven Repository - SpringSource Snapshot Releases[/name] [url]http://maven.springframework.org/snapshot[/url]
[/repository]

[/repositories]


BUSCADORES DE JARs

Alguna vez te has preguntado:

¿En que JAR esta cierta clase?, ¿Donde encuentro tal o cual JAR?, ¿En que repositorio MAVEN se encuentra tal o cual artefacto? o ¿Cuántas veces al ejecutar una aplicación Web, hemos obtenido esta muy conocida Excepcion: ‘ClassNotFoundException", debido a una falta de librería ya que la clase no es encontrada ?.

En esta oportunidad compartiré una serie de links de sitios Web que nos facilitan y solucionan de paso, de la manera más simple posible, el encontrar rápidamente dicha librería (.JAR) que con urgencia requerimos.

Estos son buscadores específicos de JARs que aceptan como filtro de consulta:

- Nombre de la clase.
- Fragmentos del nombre.
- Nombre del JAR.
- Etc.


La respuesta de las Webs es un listado de librerías para que selecciones por versión las librerías requeridas. Luego, te permite descargar dicho JAR, copia la clase y muchas veces te muestra hasta su decencia MAVEN, para que lo bajes si están utilizando MAVEN.

Aquí les comparto los links de estos buscadores de JARs que les facilitaran la vida realmente:

http://www.jarvana.com/jarvana
http://jarhalla.com
http://search.maven.org/#search
http://www.findjar.com
http://www.jarfinder.com
http://ebr.springsource.com/repository/app/search
http://jarsearch.com
http://www.mvnsearch.org



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.

lunes, 15 de agosto de 2011

CONFIGURACION DE POOL DE CONEXIONES EN OC4J SERVER 10.1.3

En esta oportunidad mostrare este tutorial preparado paso a paso, donde se muestra la configuración de un DataSource y su amarre respectivo a un Pool de Conexión que crearemos en un Contenedor J2EE Standalone del OAS (ORACLE APLICATION SERVER), llamado OC4J v2.1 de forma independiente, sobre una plataforma WINDOWS XP.

El detalle en si en el tutorial paso a paso lo tengo listo para descargar:

Para descargar el tutorial completo pulsar: AQUÌ.

CONFIGURACION DE POOL DE CONEXIONES EN GLASSFISH SERVER 2.1

En esta oportunidad mostrare este tutorial preparado paso a paso, donde se muestra la configuración de un DataSource y su amarre respectivo a un Pool de Conexión que crearemos en un Servidor de Aplicaciones GLASSFISH v2.1 de forma independiente, sobre una plataforma WINDOWS XP.

El detalle en si en el tutorial paso a paso lo tengo listo para descargar:

Para descargar el tutorial completo pulsar: AQUÌ.

jueves, 11 de agosto de 2011

INSTALACIÓN GLASSFISH SERVER v2.1

En esta oportunidad mostrare este tutorial preparado paso a paso, donde se muestra la instalación de un Servidor de Aplicaciones GLASSFISH v2.1 de forma independiente, sobre una plataforma WINDOWS XP.

El detalle en si en el tutorial:

Para descargar el tutorial completo pulsar: AQUÌ.

INSTALACIÓN JONAS SERVER v4.8.6

En esta oportunidad mostrare este tutorial preparado paso a paso, donde se muestra la instalación de un Servidor de Aplicaciones JONAS v4.8.6 sobre una plataforma WINDOWS XP.

El detalle en si en el tutorial:

Para descargar el tutorial completo pulsar: AQUI.

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.