【发布时间】:2019-07-19 04:41:11
【问题描述】:
我正在使用最初为 IBM WebSphere 设计的应用程序,但我也想将它托管在 Tomcat 上。该应用程序无法更改,并且正在执行new InitialContext().lookup("servername"),它适用于 WebSphere。
但是在 Tomcat 上,当我在特定于应用程序的上下文 xml 中指定 <Environment> 名称时,它们会以 java:comp/env 为前缀,并且上面的查找找不到这些名称。
它将在容器中运行,所以如果我必须更新 server.xml 没有问题,当然还有应用程序特定的上下文 xml。
如何让 Tomcat 返回lookup("servername") 上的字符串?
【问题讨论】:
-
很奇怪。我在Tomcat source code 中看到的唯一内容实际上是丢弃任何JNDI 名称上的
java:comp/env前缀。我看不到它添加的地方。这可能是因为 Tomcat 提供了一个基本的 JNDI 上下文,而不是 EJB 容器提供的工业级 JNDI 上下文。 -
呃,我可能没有假设整个字符串在源代码中是连续的:)
-
我正在尝试实现自定义
InitialContextFactory作为解决方法。我可以让 Tomcat 使用它,但我还不能让它返回Context已经在java:comp/env。如果我能得到它,我会发布代码作为答案。