java - InitialContext.lookup 从错误的 context.xml 中获取数据

标签 java tomcat jakarta-ee servlets

我有两个 Tomcat 服务器作为 Windows 服务在一台机器上运行,每个都安装在不同的硬盘上并使用不同的端口。 每个 Tomcat 都在其 context.xml 中保存数据源引用到 JDBC 驱动程序(两个连接都指向同一个 MySql 服务器,但数据库不同):

Tomcat1:

<Resource name="jdbc/monitor" auth="Container" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="user" password="password"
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/monitor
autoReconnect=true&amp;useEncoding=true&amp;characterEncoding=UTF-8/>"

Tomcat2

<Resource name="jdbc/monitor" auth="Container" type="javax.sql.DataSource" maxActive="100"
maxIdle="30" maxWait="10000" username="user" password="password" 
driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/monitorbeta 
autoReconnect=true&amp;useEncoding=true&amp;characterEncoding=UTF-8/>"

以非常标准的方式调用代码中的初始上下文(在两个服务器上的所有 servlet 中):

InitialContext context = new InitialContext();
DataSource datasource = (DataSource) context.lookup("java:/comp/env/jdbc/monitor");
Connection connection = datasource.getConnection();            
return connection;

问题是在 Tomcat2 上,其中一个 servlet 从 Tomcat1 context.xml 获取连接(因此更新了错误的表)——而其他 servlet“进入”正确的上下文! 我重新启动了服务,确保 Tomcat 使用其他端口并且 catalina home/base 在 Tomcat2 上正确设置。我想念什么?

编辑: 另外,我试图像这样手动将环境设置为 InitialContext:

env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.rmi.registry.RegistryContextFactory");
env.put(Context.PROVIDER_URL,"rmi://localhost:9080");
Context ctx = new InitialContext(env);

仍然没有成功

最佳答案

问题出在我的 JDBC 处理程序上,它明确地超出了初始上下文定义...

关于java - InitialContext.lookup 从错误的 context.xml 中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25883588/

相关文章:

java - 获取文件路径不是apache tomcat路径

java - 需要提交两次表格才能处理吗?

java - TreeSets 和删除特定的未命名对象

java - 值溢出指定精度 0,小数位数 0

java - 如何在我的 JAVA tomcat Web 应用程序中阻止 El-Tags

Eclipse,错误显示 : Apache Tomcat - Port has been used already, 如何在不重新启动 PC 的情况下摆脱它?

java - 我什么时候应该使用 JSF 而不是 Javascript+HTML+CSS UI?

java - Wildfly 8.1 ClassNotFound org.apache.http.conn.ClientConnectionManager

java - JTransforms FFT DC 分量与 Matlab 不同

tomcat - p6spy使得Tomcat8在使用时不再重新部署