JNDI ANINGURA EN JBOSS (LIVECYCLE KINGLA)
-
26-10-2019 - |
Pregunta
Estoy usando Adobe Livecycle ES 2 Project llave, que se ejecuta en JBoss como 4.2.1.ga. Estoy teniendo problemas para que un JNDI sea vinculante para trabajar en JBoss. Parece inquietantemente similar a una publicación anterior, Problema Configurar JBoss para que funcione con JNDI, pero ciertamente no he encontrado ninguna solución.
Esta es mi configuración. Tengo un archivo -ds.xml en su lugar:
C:\Adobe\Adobe LiveCycle ES2\jboss\server\lc_turnkey\deploy\rmb-ds.xml
El contenido de ese archivo es el siguiente:
<datasources>
<local-tx-datasource>
<jndi-name>RMB_DS</jndi-name>
<connection-url>jdbc:sqlserver://localhost\SQLEXPRESS;DatabaseName=rmb</connection-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<user-name>sa</user-name>
<password>password</password>
<check-valid-connection-sql>SELECT 1 FROM sysobjects</check-valid-connection-sql>
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>MS SQLSERVER2000</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
Tengo un proyecto Java, cuyo /rmb/webcontent/web-inf/web.xml contiene lo siguiente:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>java:RMB_DS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Ahora, cada vez que implemento la guerra, falla con el siguiente error:
2011-09-06 15:44:17,786 ERROR [org.jboss.deployment.MainDeployer] Could not start deployment: file:/C:/Adobe/Adobe LiveCycle ES2/jboss/server/lc_turnkey/deploy/RMB.war
org.jboss.deployment.DeploymentException: Error during deploy; - nested throwable: (javax.naming.NamingException: resource-ref: java:RMB_DS has no valid JNDI binding. Check the jboss-web/resource-ref.)
at org.jboss.web.AbstractWebDeployer.start(AbstractWebDeployer.java:384)
...
Caused by: javax.naming.NamingException: resource-ref: java:RMB_DS has no valid JNDI binding. Check the jboss-web/resource-ref.
at org.jboss.web.AbstractWebDeployer.linkResourceRefs(AbstractWebDeployer.java:623)
Estoy 100% positivo de que el enlace JNDI en sí sea correcto. Puedo ver lo siguiente en la consola web> Sistema> JMX Beans> jboss.jdbc> jboss.jdbc: servicio = metadata, dataSource = rmb_ds
MBean Name: Domain Name: jboss.jdbc
service: metadata
datasource: RMB_DS
MBean Java Class: org.jboss.ejb.plugins.cmp.jdbc.metadata.DataSourceMetaData
Además, utilizando Livecycle Workbench, puedo hacer un proceso que llegue a este servicio y ejecute algunos SQL contra DataSource java:/rmb_ds ..
Entonces, ¿tiene que haber algo mal con mi guerra o mi web.xml, ¿verdad? ¿Me estoy perdiendo algo obvio?
Solución
Gracias a Ketan, ¡que es increíble!
Necesitaba un JBoss-Web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<resource-ref>
<res-ref-name>RMB_DS</res-ref-name>
<jndi-name>java:/RMB_DS</jndi-name>
</resource-ref>
</jboss-web>
Y cambió el Web.xml original para tener:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>RMB_DS</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
Que coincide con rmb-dds.xml
<datasources>
<local-tx-datasource>
<jndi-name>RMB_DS</jndi-name>
<connection-url>jdbc:sqlserver://localhost\SQLEXPRESS;DatabaseName=RMB</connection-url>
<driver-class>com.microsoft.sqlserver.jdbc.SQLServerDriver</driver-class>
<user-name>sa</user-name>
<password>password</password>
<check-valid-connection-sql>SELECT 1 FROM sysobjects</check-valid-connection-sql>
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>MS SQLSERVER2000</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>