Pregunta

Soy nuevo en jboss y me han pedido que incorpore el mecanismo de agrupación de conexiones jboss con una aplicación web existente. Teniendo en cuenta que la capa de la base de datos de una aplicación web está correctamente escrita, es decir, todos los conjuntos de resultados, declaraciones y conexiones se cierran correctamente cuando no se necesitan, qué cambios de código tendré que hacer en mi aplicación web después de haber configurado la fuente de datos jboss correctamente.

¿Alguien puede indicarme un tutorial o un ejemplo de código que utiliza el origen de datos jboss en una aplicación web?

¿Fue útil?

Solución

La agrupación en JBoss se maneja en la configuración de DataSource. Aquí está el HowTo. La aplicación web tendría que realizar una búsqueda JNDI de la fuente de datos para obtener la conexión de la base de datos en lugar de hacer una URL de JDBC directa, y luego tendrá la agrupación.

Sin embargo, las transacciones son otra historia.

EDITAR: En respuesta a su comentario sobre cómo afecta esto al código, este es el aspecto:

String jndiPath = "java:DataSourceJNDIName"; //The exact prefix here has a lot to do with clustering, etc., but if you are using one JBoss instance standalone, this works.
Context ctx = new InitialContext();
DataSource ds = (DataSource) PortableRemoteObject.narrow(ctx.lookup(jndiPath), DataSource.class);
Connection c = ds.getConnection();

Hablando técnicamente, PortableRemoteObject.narrow no es necesario en una configuración de servidor único JBoss (4.2.2 de todos modos), pero es un código estándar J2EE más adecuado, ya que los servidores de aplicaciones generales no tienen que devolver un objeto de el tipo correcto solo para hacer un Context.lookup.

Lo anterior no cubre los problemas de utilización de recursos y manejo de errores. Se supone que debes cerrar ese objeto de contexto cuando hayas terminado con él y, por supuesto, la conexión de la base de datos, aunque JBoss te gritará si olvidaste cerrar la conexión de la base de datos y la transacción, y la cerrará por ti.

De todos modos, ese objeto de Conexión se puede utilizar tanto como DriverManager.getConnection (url);

Otros consejos

primero cree un archivo xml por nombre xxx-ds.xml y coloque este archivo en server / default / deploy / xxx-ds.xml

<datasources>
<local-tx-datasource>
<jndi-name>/jdbc/Exp</jndi-name>
<type-mapping>SQL</type-mapping>
<connection-url>jdbc:microsoft:sqlserver://          </connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<user-name></user-name>
<password></password>
<min-pool-size>5</min-pool-size>
<max-pool-size>1000</max-pool-size>
</local-tx-datasource>
</datasources>

jboss-web.xml

<jboss-web>
<!--  <security-domain flushOnSessionInvalidation="false"/>-->
<!--  <context-root>/BSI</context-root>-->
  <resource-ref>
        <description>Database connection resource</description>
        <res-ref-name>jdbc/Exp</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <jndi-name>java:/jdbc/Exp</jndi-name>
        <res-auth>Container</res-auth>
    </resource-ref>
</jboss-web>

web.xml

<resource-ref>
    <description>Database connection resource</description>   
    <res-ref-name>jdbc/Exp</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>

y ahora en su archivo .java

javax.naming.Context ctx1 = new javax.naming.InitialContext();
javax.sql.DataSource ds = (javax.sql.DataSource) ctx1.lookup("java:comp/env/jdbc/Exp");
con = ds.getConnection();

***** asegúrese de que el nombre de referencia del recurso sea el mismo en todo lugar

No tienes que cambiar nada. Cuando selecciona el tipo correcto de fuente de datos (local-tx-datasource / xa-datasource), el manejo de la conexión y TX se realizan por usted. En $ JBoss / docs / examples / jca encontrará plantillas para prácticamente todas las bases de datos, que puede reutilizar.

Si está utilizando XA, debe configurar Tx-recovery. Ver esta publicación en un cómo hacerlo: http://management-platform.blogspot.com/ 2008/11 / transaction-recovery-in-jbossas.html (bueno, tal vez no sea un "cómo hacerlo" en el modo independiente, pero en combinación con el código fuente de Jopr).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top