【问题标题】:Tomcat JNDI resource name aliasesTomcat JNDI 资源名称别名
【发布时间】:2014-12-24 19:38:49
【问题描述】:

是否可以创建具有多个名称(同义词、别名)的 JNDI tomcat 资源? 类似的东西

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

我需要这个,因为有两个模块使用相同的数据源,但 JNDI 名称不同。最简单的解决方案是同步这些名称,但遗憾的是目前无法实现。

【问题讨论】:

  • 不是这个问题的正确答案,但作为最后的解决方法,您可以简单地定义两个链接到同一个数据库的数据源。我真的无法找到关于如何具体执行您想要的操作的适当文档,但我有一种唠叨的直觉,感觉解决方案是在 web.xml 中的资源引用配置中,而不是实际的资源...

标签: java tomcat datasource jndi


【解决方案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"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    相关资源
    最近更新 更多