Tomcat JNDI资源名称别名

时间:2014-10-29 07:14:55

标签: java tomcat datasource jndi

是否可以创建具有多个名称(同义词,别名)的JNDI tomcat资源? 像

这样的东西
<Resource
      name="jdbc/product-ds"
      alias="jdbc/product-cfg-ds"
      type="com.mchange.v2.c3p0.ComboPooledDataSource"
      ...
/>

我需要这个,因为有两个模块使用相同的DataSource,但具有不同的JNDI名称。最简单的解决方案是同步这些名称,但不幸的是,目前还不可能。

1 个答案:

答案 0 :(得分:1)

你可以这样做。我花了一段时间来计算出正确的序列。您需要做的是在GlobalNamingResources部分中的server.xml(tomcat / conf / server.xml)中定义jdbc / product-ds,如下所示:

    <GlobalNamingResources>
        <Resource name="jdbc/product-ds " auth="Container"
          type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
          url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
          username="scott" password="tiger" maxActive="20" maxIdle="10"
          maxWait="-1"/>
    </GlobalNamingResources>

然后,您可以在服务器context.xml(tomcat / conf / context.xml)

中重命名

像这样:

<ResourceLink 
        name="jdbc/product-cfg-ds"
        global="jdbc/product-ds"
        type="javax.sql.DataSource"/>

然后,为服务器上部署的所有应用程序重命名全局名称。我不认为全局jdbc / product-ds可以在任何应用程序中使用,如果你确实需要它,你需要添加:

<ResourceLink 
        name="jdbc/product-ds"
        global="jdbc/product-ds"
        type="javax.sql.DataSource"/>