Как извлечь имя пользователя, пароль и базу данных или URL-адрес подключения в JBoss через код Java? - PullRequest
0 голосов
/ 07 февраля 2012

Кто-нибудь знает, как извлечь имя пользователя, пароль и базу данных или URL-адрес соединения в JBoss / JNDI через код Java?
Мне нужно это для прямого подключения к базе данных, без использования пула соединений, но с использованием конфигурации 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>

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

вы не указали, что вы использовали, например, 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();
    ....
1 голос
/ 07 февраля 2012

Вы должны получить объект DataSource через JNDI, а затем уменьшить его до определенного класса, который вам дает JBoss.Точный класс зависит от типа источника данных, который вы создаете.(XA против локального) DataSource сам по себе не имеет ссылок на информацию о соединении.Если вы разместите свой файл -ds.xml, это может быть полезно.

Обновление: я думаю, что нашел ваше решение после небольшого поиска.Было бы намного чище, если бы вы могли просто обратиться к источнику данных JNDI.Это было бы гораздо лучшим решением, чем создание соединения самостоятельно, поскольку это обеспечило бы безопасность использования пула соединений jboss.

https://syntatic.wordpress.com/2008/08/20/connection-pooling-for-rails-on-jruby-using-jndi-and-jdbc/

...