Ir al contenido principal

Instalar Tomcat 7, JBoss AS 7 y Subversion en CentOS


Instalando Tomcat 7
Este artículo lo explica muy bien: http://davidghedini.blogspot.com/2011/02/install-tomcat-7-on-centos-rhel.html

Aunque el tutorial es para una de las primeras versiones de tomcat 7, también funciona con la mas reciente y les dejo el enlace:
wget http://www.gtlib.gatech.edu/pub/apache/tomcat/tomcat-7/v7.0.23/bin/apache-tomcat-7.0.23.tar.gz

Instalando JBoss 7
Primero recomiento leer una introducción a JBoss 7

Como no encontré un buen tutorial para JBoss 7, decidí seguir el de la version 6: http://davidghedini.blogspot.com/2011/03/install-jboss-6-on-centos.html y también este otro:
http://community.jboss.org/wiki/StartJBossOnBootWithLinux. También sería bueno seguir las mejores prácticas: http://jboss.ociweb.com/wiki/JBossSupport/BestPractices

Al intentar desplegar la aplicación me he encontrado con algunos problemitas.

Errores:
Cannot find scanner class. hibernate.ejb.resource_scanner=org.jboss.as.jpa.hibernate4.HibernateAnnotationScanner

JBoss AS 7 tiene una nueva forma de cargar las dependencias, por lo que algunas dependencias propias de las aplicaciones ya las carga y configura por defecto. Mi aplicacion usaba Hibernate 3 por lo que creaba un conflicto con el Hibernate que carga por defecto el jboss.
Probé primero excluyendo el módulo de Hibernate de jboss, para dejar el de la aplicacion, pero esto me dio muchos problemas por lo que decidí  migrar el proyecto JPA hacia Hibernate 4. No tuve mayores contratiempos con el código utilizado, excepto esto:
Para capturar la conexion JDBC antes se hacia
((HibernateEntityManager)getEntityManager()).getSession().connection();

Ahora es de la siguiente manera
((SessionImpl)((HibernateEntityManager)getEntityManager()).getSession()).connection();


 [null] los ELResolvers para JSF no se han registrado con el contenedor JSP.
En mi web.xml deshabilité el siguiente código
<context-param>

        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>

        <param-value>resources.application</param-value>

</context-param>

Error:
No suitable driver found for jdbc:postgresql://localhost/postgres

Como la aplicación primeramente usaba Apache Tomcat para ejecutarse, el persistence.xml siguiente, funcionaba bien:

<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

    <persistence-unit name="presupuestoJPA" >      

        <class>ni.gob.mti.presupuesto.DetallePresupuesto</class>

        <class>...otrasclases...</class>

        <properties>

            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>

            <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>           

            <property name="hibernate.connection.url" value="jdbc:postgresql://10.13.86.7/presupuesto"/>                 <property name="hibernate.connection.username" value="postgres"/>

            <property name="hibernate.connection.password" value=""/>

            <property name="hibernate.show_sql " value="true" />           

        </properties>

    </persistence-unit>

</persistence>

Pero en JBoss el trabajo con la persistencia es bastante diferente.
Primero se debe crear un datasource. Aunque se puede hacer manualmente configurando un par de archivos, tuve que recurrir a la Administration Console, como se indica en este artículo: http://community.jboss.org/wiki/JBossAS7-DatasourceConfigurationForPostgresql

Con esto debemos cambiar el archivo persistence.xml, quedaría de la siguiente manera:
<?xml version="1.0" encoding="UTF-8"?>

<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">

    <persistence-unit name="presupuestoJPA" >      

        <jta-data-source>java:jboss/datasources/presupuesto</jta-data-source>

          <class>ni.gob.mti.presupuesto.DetallePresupuesto</class>

        <class>...otrasclases...</class>

        <properties>

        <property name="hibernate.transaction.manager_lookup_class"

               value="org.hibernate.transaction.JBossTransactionManagerLookup" />

            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>           

            <property name="hibernate.show_sql " value="true" />           

        </properties>

    </persistence-unit>

</persistence>

Instalar Subversion
http://wiki.centos.org/HowTos/Subversion

Comandos útiles de Linux
Que aplicación está usando un puerto (8081 es el puerto a consultar)
lsof -i :8081

Buscar archivos y carpetas (java es parte del nombre a buscar)
find / -name java -print

Version del servidor

$ cat /etc/*-release

$ uname -mrs
 

Entradas populares de este blog

Enumerar filas en una consulta con MySQL

Supongamos que tenemos tablas con la estructura siguiente:
documentos (iddocumento, nombre_documento, url_original, idtipo_documento, idproyecto) proyectos (idproyecto, nombre_proyecto, longitud, unidad_medida) tipo_documentos (idtipo_documento, descripcion_tipo_documento) Tenemos necesidad de hacer una consulta como la siguiente: "Enumerar todos los documentos en la base de datos agrupados por proyecto"

Parece fácil, excepto por el término "enumerar", aquí tienes un truquito para que logres enumerar tus consultas:
SELECT (@rownum:=@rownum+1) AS rownum, nombre_documento, descripcion_tipo_documento, nombre_proyecto FROM (SELECT @rownum:=0) r, documentos AS d INNER JOIN proyectos AS p ON d.idproyecto = p.idproyecto INNER JOIN tipo_documentos AS td ON d.idtipo_documento = td.idtipo_documentoPero que tal si te piden que enumeres los proyectos con sus correspondientes documentos?. Teniendo lo anterior es un poco mas sencillo
SELECT IF(@fila=proyectos.idproyecto, @rownum:…

Como implementar SCRUM en 10 pasos fáciles - Paso #1: Ordena tu "Pila del Producto"

Esta es la continuación de la serie: Como implementar SCRUM en 10 pasos fáciles. Creación de Kelly Waters y traducida con la autorización correspondiente por su servidor.


La entrada original de este artículo es: Get your backlog in order

Ordena tu "Pila del Producto"
¿Así que quieres implementar Scrum?
¿Y te gusta la idea de hacerlo fácilmente?
Entonces escucha. Este es el paso 1 en mi serie: ¿Cómo implementar Scrum en 10 pasos fáciles.
Este no es solo el primer paso. Es el paso más importante.
A menos que puedas llevar a cabo este paso, no sigas. No lo saltes. Te prometo que te arrepentirás si lo haces. Incluso si no continuas, es probable que este paso te beneficie, a tu equipo y a tu organización.
Así que aquí está.
Primero, ¿dónde deberíamos empezar?
Alineación con el negocio
Primero, antes de nada, debes alinear tu equipo de desarrollo con el negocio.
Si eres parte de una unidad de negocio, eso puede ser natural y directo. Si estas en una organización central de desarrol…

Expresiones Regulares y pruebas en javascript

¿Qué es una expresión regular?
Una expresión regular es una cadena que contiene una combinación de caracteres normales y metacaracteres o metasecuencias especiales. Los caracteres normales coinciden por ellos mismos. Los metacaracteres y metasecuencias son caracteres o secuencias de caracteres que representan ideas como cantidad, posiciones o tipos de caracteres.
Regular Expression Pocket Reference 2nd Ed - Tony Stubblebine - O'Reilly

¿Para qué son útiles las expresiones regulares?
Las expresiones son especialmente útiles para validar información, por ejemplo en formularios de ingreso de datos. Por ejemplo para validar que se ingresó un número de teléfono, puedes usar la siguiente expresión regular.

/^([\+][0-9]{1,3}[ \.\-])?([\(]{1}[0-9]{2,6}[\)])?([0-9 \.\-\/]{3,20})?$/

Parecieran símbolos al azar, pero nada mas lejos de la realidad. Te muestro una tabla básica con los elementos usados para crear expresiones regulares.

Carácter Texto buscado ^Principio de entrada o línea.$Fin de e…