instalar archetype jboss-javaee6-webapp de maven >>

instalar contenedor jboss7.1 >>

nótese que en la configuración del runtime environment por eclipse (jboos tools) hay que seleccionar el configuration file standalone.xml (o domain), de lo contrario se cae así >> (por algún motivo funciona sólo la primera vez sin ésto…)

instalar base de datos postgresql vía package manager

lo primero distinto a JBoss6 son los datasource >> hay que hacer dos cosas, instalar el driver jdbc y luego configurar el datasource.

el driver se puede instalar como un jar a deployar, o como módulo del servidor. lo primero es recomendado para facilidad de instalación en el cluster, etc.

lamentablemente el link de más arriba sólo explica cómo instalarlo como módulo (porque mysql no se puede usar como deploy, lero lero). para ver lo del deploy, el link es éste >> que en el fondo nos manda a ironjacamar >>
si estoy entendiendo bien, hay que bajar el driver y copiarlo en el directorio deploy de jacamar, que en jboss sería mmm no sé exactamente, pero se puede subir como deployment en la administration console.
en seguida, hay que definir el datasource que lo referencia. ésto lo haremos en standalone.xml en el subsystem datasources. el xml se encuentra en $JBOSS7/standalone/configuration. le pondremos la configuración XA >> suponiendo que JBoss usará JTA para las transacciones

<xa-datasource jndi-name="hxDS" pool-name="hxDS">
<xa-datasource-property name="ServerName">localhost</xa-datasource-property>
<xa-datasource-property name="PortNumber">5432</xa-datasource-property>
<xa-datasource-property name="DatabaseName">db</xa-datasource-property>
<xa-datasource-property name="User">qtimporta</xa-datasource-property>
<xa-datasource-property name="Password">sapocx</xa-datasource-property>
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"></valid-connection-checker>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"></exception-sorter>
</validation>
</xa-datasource>

pero no anda ni pa atrás, porque éste es la configuración para jacamar a secas. en jboss tiene que tener el nomnbre del driver, etc. >> así que mejor manejarlo por la consola de administración también >>>>

al respecto:

  • el nombre JNDI debe comenzar por java:jboss/datasources
  • la url de conexión es del tipo jdbc:postgresql://localhost:5432/template1

ahora creo que no parte simplemente porque ni la base de datos ni el usuario existen, así es que un poco de configuración de postgre

hay una consola de postgre asociada al usuario >>, desde la que hay comandos para añadir usuarios, etc. para irnos por la fácil, vamos a probar (yo y yo) phpPgAdmin, una interfaz similar a phpMyAdmin.
pa una lista completa de clientes, véase >
la instalamos con el package manager (sudo apt-get install phppgadmin) y la interfaz queda en http://localhost/phppgadmin/.
ya, shit, igual me tengo que crear un usuario. a ver.

el usuario por defecto es postgres, al cual hay que crearle una contraseña con passwd.
después supuestamente >> hay que cambiarse a root, y desde éste a postgres y con éste ejecutar psql template1, pero me huevea con

psql: no se pudo conectar con el servidor: No existe el fichero o el directorio
	¿Está el servidor en ejecución localmente y aceptando
	conexiones en el socket de dominio Unix «/var/run/postgresql/.s.PGSQL.5432»?

parece que se debe a que no tengo un directorio donde guardar las bd. lo creamos

mkdir -p /usr/local/pgsql/data
sudo chown -R postgres:postgres /usr/local/pgsql/

luego con posgres

/usr/lib/postgresql/9.1/bin$ ./initdb -D /usr/local/pgsql/data
./postgres -D /usr/local/pgsql/data

con eso queda escuchando pero no en background. en todo caso ya puedo ejecutar psql template1. ahora, tiene que haber una manera de no tener que estar iniciando la base de datos así… seguir investigando >>>>

en todo caso ya puedo crearme el usuario para conectar desde el datasource

 createuser -A -d -P -h host -U postgres nuevo_usuario

(y ya funciona phppgadmin!)
y en efecto, modificando el persistence.xml en la app

<jta-data-source>jboss/datasources/hxDS</jta-data-source>

puedo importar mi seed data a postgresql

pa los curiosos, el subsystem quedó así

<datasource jta="true" jndi-name="java:jboss/datasources/DS" pool-name="DS" enabled="true" use-ccm="false">
<connection-url>jdbc:postgresql://localhost:5432/hx</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgresql-9.1-902.jdbc3.jar</driver>
<security>
<user-name>****</user-name>
<password>****</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
</validation>
<statement>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>

postgres definitivo

ya pa seguir, me da paja tener que estar iniciando la bd con el usuario postgres a cada vez, ¿cómo lo hacemos funcionar con service?

qué hijo de p! al parecer todo el problema consiste en que además de la versión 9.1, también tengo instalada la 8.4 (sepa moya por qué), entonces el cluster está corriendo en el puerto 5433, por lo que sí puedo conectarme con

psql -p 5433 template1

quizás todo se arregla mandando el 8.4 al carajo: como root:

pg_dropcluster 8.4 main
pg_dropcluster --stop 9.1 main
pg_createcluster 9.1 main
service postgresql start

como postgres:

psql template1
psql (9.1.4, servidor 9.1.5)
Digite «help» para obtener ayuda.

template1=#

hell yea!

dependencias

Como el archetype es pa jboss 6 (supongo será por eso), tengo errores de inicialización (aunque no impiden al proyecyo base funcionar) intentaremos llegar a un pom.xml ad-hoc.
Le llevamos

  • 23:55:58,660 INFO  [org.jboss.weld.ClassLoading] (MSC service thread 1-6) WELD-000119 Not generating any bean definitions from org.jboss.logging.Log4jLogger because of underlying class loading error
    23:55:58,661 INFO  [org.jboss.weld.ClassLoading] (MSC service thread 1-6) catching: org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class org.jboss.logging.Log4jLogger
    Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Priority
  • (MSC service thread 1-6) catching: org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class org.jboss.logging.Slf4jLogger
    Caused by: java.lang.NoClassDefFoundError: Lorg/slf4j/Logger;
    INFO  [org.jboss.weld.ClassLoading] (MSC service thread 1-6) catching: org.jboss.weld.resources.spi.ResourceLoadingException: Error loading class org.jboss.logging.Slf4jLocationAwareLogger
  • WELD-000119 Not generating any bean definitions from com.numerica.hx.anamnesia.test.MemberRegistrationTest because of underlying class loading error
    Caused by: java.lang.NoClassDefFoundError: org/jboss/shrinkwrap/api/asset/Asset

Todos los cuales son errores en las dependencias importadas por Arquillian, y se resuelven importando la última versión siguiendo su doc >>

Darle un vistazo a JBoss Forge

Este sitio utiliza cookies.    Leer más