JBoss应用随笔(2)

JBoss下数据源名称的配置

JBoss下配置数据源比较简单,只需将配置好的××-ds.xml放到default/deploy下,JBoss启动的时候会自动的发布这些资源。配置文件如下:

oracle-ds.xml
<datasources>
  <local-tx-datasource>
    <jndi-name>Firefly</jndi-name>
    <connection-url>jdbc:oracle:thin:@serverhost:1521:oradb</connection-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <user-name>prismtest</user-name>
    <password>prismtest</password>
    <exception-sorter-class-name>
       org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter
    </exception-sorter-class-name>
    <min-pool-size>40</min-pool-size>
    <max-pool-size>40</max-pool-size>
    <prepared-statement-cache-size>10</prepared-statement-cache-size>
    <check-valid-connection-sql>SELECT 1 FROM DUAL</check-valid-connection-sql>
     <metadata>
        <type-mapping>Oracle9i</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>


    但是这样发布上去,在程序中使用ctx.lookup("Firefly")取得数据源的时候,抛出NameNotFoundException,看了一下JNDI树,发现Firefly被放到了java命名空间下。因此,应该使用ctx.lookup("java:/Firefly")来获取数据源。

    这对于新规项目来说,没有什么问题,在配置文件里面改一下JNDIName即可。但是,对于移植和升级项目,应尽量保持新旧环境JNDI名的一致性,减少代码以及配置文件的修改量。因此,看了一下JBoss的文档,发现××-ds.xml中有一个use-java-context属性,该属性设置为false时,JBoss就不会将配置的数据源绑定到java命名空间下,就可以使用原始的JNDI(Firefly)名进行检索。配置文件修改后如下:

oracle-ds.xml
<datasources>
  <local-tx-datasource>
    <jndi-name>Firefly</jndi-name>
    <use-java-context>false</use-java-context>
    ...
    ...
  </local-tx-datasource>
</datasources>


你可能感兴趣的:(java,oracle,xml,jboss,jdbc)