Datasource missing JBoss

bornex

Buenas a todos, vengo a ver si alguien que tenga mas experiencia que yo trabajando con Intellij IDEA y JBoss 7.1.1 Final puede ayudarme.

Estoy intentando hacer una aplicación muy pequeña de prueba con Java EE 6 y JBoss 7.1.1 Final como servidor de aplicaciones. Para JPA uso como provider Hibernate y este es mi archivo persistence.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
             version="2.0"
             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="manager1" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:jboss/sample</jta-data-source>
    <class>modelo.User</class>
    <properties>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/agenda_app"/>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.connection.username" value="root"/>
        <property name="hibernate.connection.password" value="root"/>
        <property name="hibernate.archive.autodetection" value="class"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.format_sql" value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="create"/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
    </properties>
</persistence-unit>
</persistence>

Desde Intellij IDEA he asociado el datasource sample a mi unidad de persistencia llamada manager1. El problema está en la línea:

<jta-data-source>java:jboss/sample</jta-data-source>

Según me dice JBoss que el datasource sample is missing. ¿Alguien sabe como poner el datasource correctamente?

bLero

#1 Supongo que estarás haciendo deploy en modo standalone.

Si es así, tienes que entrar en "/standalone/configuration" y editar el fichero "standalone.xml" incluyendo un datasource con ese nombre para la base de datos que quieras. Seguramente también tengas que hacer deploy del driver JDBC específico para tu DB.

Y por favor, deja a un lado JBoss AS 7 y pasate ya a Wildfly, que es la nueva versión de JBoss.

1 respuesta
bornex

#2 He trabajado con Glassfish 4.1 + Java EE 7, pero he dejado de usarlo por multiples razones.

El año pasado Cloudbees era el único proveedor de PaaS que ofrecía soporte para JEE 7 (y lo hacía con Glassfish 4). Pues bien, este año Cloudbees ya no ofrece ese soporte y, hasta donde conozco, no hay proveedores PaaS que den soporte para JEE 7. Sí que hay proveedores que dan soporte para JEE 6. ¿Por qué? Posiblemente las implementaciones de JEE 7 tengan demasiados errores aún. Quizá JEE 7 sea demasiado joven.

1 respuesta
bLero

#3 Openshift lleva años dando soporte a JEE7 (con JBoss).

Por otro lado, JEE7 está suficientemente maduro, de hecho yo tengo varias aplicaciones en producción con Glassfish4.1, Payara y Wildfly AS8, y ningún problema.

Y no son aplicaciones pequeñas, hablo de > 1MM LOC.

1 respuesta
bornex

#4 Joder pues no lo sabía. Entonces ¿me aconsejas que me pase a Java EE 7 y Wildfly 8?

Si es asi, configurar JBoss 7 y WildFly 8 es igual no? con sus standalone.xml y esas cosas.

1 respuesta
bLero

#5 Sí, es lo mismo.

La diferencia entre Glassfish y Wildfly es abismal en cuanto a rendimiento. Por contra, wildfly es algo más dificil de configurar, pero merece la pena.

1 respuesta
bornex

#6 Eso si es cierto xD pero por eso pensaba en JBoss 7.1.1 Final, por el rendimiento y tal. Bueno pues me has convencido me voy a por las versiones nuevas, si tienes apps en producción será porque no te va tan mal.

Una pregunta, sabes de algun recurso (links, libros o lo que sea) que explique más o menos las configuraciones para empezar a trabajar con WildFly y MySQL?

1 respuesta
bLero

#7

Lo mejor que te puedo recomendar es esto:

https://docs.jboss.org/author/display/WFLY8/Documentation

Yo uso postgresql, pero el proceso es el mismo:

  1. Te bajas el driver jdbc para mysql de: http://dev.mysql.com/downloads/connector/j/
  2. Haces deploy del driver
  3. Configuras el datasource (a pelo editando el standalone.xml o a través del panel de administración, localhost:9990 por defecto).
  4. Linkeas ese datasource a tu proyecto en el persistence.xml (la sintaxis correcta en la spec es java:/tudatasource, olvida el típico java:jboss/...)
  5. Et voilá

Si tienes alguna duda pregunta.

1 respuesta
bornex

#8 La primera pregunta es, WildFly funciona con Java 8?

Pero Java EE 7 trabaja con el JDK 7 ¿no? Creo que me he respondido a mi mismo xD

EDIT: Otra cosa, ¿como hago el deploy del driver?

Lo que hice en JBoss es crear una carpeta en /modules/com/mysql/main y meter el archivo module.xml y el JAR del driver. Luego modificando a pelo el standalone.xml. ¿Así se puede?

1 respuesta
bLero

#9 Sí, funciona con Java 8, es independiente. Java 8 es la versión del lenguaje y Java EE 7 es la especificación para el framework entreprise que define cómo funcionan EJBs, Transacciones, Bean Validation, Timers, CDI, etc.

Hay dos formas de hacer deploy del driver, "managed" y "unmanaged", yo suelo hacerlo managed a través de la consola de administración (localhost:9990).

La otra forma es como lo has hecho tu (unmanaged), que es igualmente válida.

Usuarios habituales

  • bLero
  • bornex