有人知道如何通过Java代码在JBoss/JNDI中提取用户名、密码和数据库,或者连接url吗?
我需要它直接与数据库连接,而不是使用连接池,而是利用JNDI配置。
这是我的JNDI配置:
<datasources>
<local-tx-datasource>
<jndi-name>WonderDesenv</jndi-name>
<connection-url>jdbc:oracle:thin:@192.168.0.74:1521:DESENV</connection-url>
<driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
<user-name>wonder</user-name>
<password>wonder</password>
<min-pool-size>1</min-pool-size>
<max-pool-size>50</max-pool-size>
<idle-timeout-minutes>10</idle-timeout-minutes>
<prepared-statement-cache-size>30</prepared-statement-cache-size>
<blocking-timeout-millis>30000</blocking-timeout-millis>
<new-connection-sql>
</new-connection-sql>
<check-valid-connection-sql>select 1 from dual</check-valid-connection-sql>
<track-statements>true</track-statements>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>Oracle9i</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>发布于 2012-02-08 02:18:32
您还没有指定您正在使用的内容,如EJB或其他...不管怎样,
您需要在您的web.xml中添加以下内容
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/WonderDesenv</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>和简单的上下文查找,如下所示
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/WonderDesenv");
Connection conn = ds.getConnection();
....发布于 2012-02-08 00:37:53
您必须通过JNDI获取DataSource对象,然后将其向下转换为JBoss提供的特定类。确切的类取决于您正在创建的数据源的类型。(XA vs local) DataSource本身没有对连接信息的引用。如果你张贴你的-ds.xml文件,它可能会有帮助。
更新:经过搜索,我想我找到了你的解决方案。如果您只需参考JNDI数据源,就会清楚得多。这将是一个比自己创建连接更好的解决方案,因为这将利用使用jboss连接池的安全性。
https://syntatic.wordpress.com/2008/08/20/connection-pooling-for-rails-on-jruby-using-jndi-and-jdbc/
https://stackoverflow.com/questions/9179982
复制相似问题