需要两个在tomcat 9中共享数据库的服务

nbysray5  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(266)

我想在两个端口(80808181)上使用不同的代码基运行两个tomcat服务,但共享相同的数据库资源。当我这样做时,我得到“javax.naming.namenotfoundexception:name[comp/env/jdbc/mydb]在这个上下文中没有绑定。当它试图初始化第二个服务时,找不到[comp]”。
我的服务在server.xml中如下所示:

...
  <GlobalNamingResources>
    <Resource auth="Container" name="jdbc/mydb" url="jdbc:db2://myserver:50000/mydb" username="xxx" password="xxx" .... />           
  </GlobalNamingResources>
...
 <Service name="Catalina8080">
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
....
      <Host name="localhost"  appBase="webapps8080" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" .... />
      </Host>
    </Engine>
  </Service>
 <Service name="Catalina8181">
    <Connector port="8181" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" />
    <Engine name="Catalina" defaultHost="localhost">
....
      <Host name="localhost"  appBase="webapps8181" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" .... />
      </Host>
    </Engine>
  </Service>

我的服务器级上下文文件如下所示:

<Context>
...
<ResourceLink name="jdbc/mydb" global="jdbc/mydb" type="javax.sql.DataSource" />
</Context>

我曾尝试在应用程序级上下文文件中添加和删除资源链接,但结果似乎没有改变。任何想法都非常感谢。

f8rj6qna

f8rj6qna1#

你应该改变你的名字 <Engine> 在第二个服务中:引擎名、主机名和上下文名的每个组合只能有一个命名上下文。
在你的情况下,组合( Catalina , localhost ,您的应用程序名称)可能出现两次,因此您应该能够找到如下条目:

SEVERE [main] naming.namingContextCreationFailed

在日志中,jndi在第二个上下文中不起作用。

相关问题