【问题标题】:InitialContext.lookup gets data from wrong context.xmlInitialContext.lookup 从错误的 context.xml 中获取数据
【发布时间】:2014-09-17 06:19:54
【问题描述】:

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

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/>"

在代码中调用 Initial context(在两台服务器上的所有 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);

还是没有成功

【问题讨论】:

  • 您是否已将 Tomcat2 Initialcontext 配置为在新端口号处查找命名提供程序?否则它将使用默认端口号,这是在 Tomcat1 上运行的端口号。您可以通过java.naming.provider.url 属性进行设置。
  • @AlexanderLanger 你的意思是添加 -d java.naming.provider.url = //localhost:XXXX 到 java 选项吗?
  • 不,您可以将这些选项传递给您的InitialContext,例如docs.oracle.com/javase/7/docs/api/javax/naming/…
  • @AlexanderLanger 看看我的编辑,仍然指向错误的上下文
  • 9080端口看起来很陌生,默认端口是1099;当然,对于 tomcat2 实例,您必须指定您在 tomcat2 服务器配置中所做的端口号,该端口号必须与 tomcat1 端口号不同。你试过了吗?

标签: java tomcat jakarta-ee servlets


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多