gpt4 book ai didi

eclipse - 使每个上下文的 JNDI 变量可用于 Eclipse 中的 Tomcat

转载 作者:行者123 更新时间:2023-11-28 21:48:10 24 4
gpt4 key购买 nike

我在 Eclipse 4.6.1 中使用 Tomcat 8.5.6。我有我的网络应用程序项目/上下文 foo ,它有一个 JAX-RS(使用 RESTEasy 3.1.0.CR3)端点 bar ,这样我就可以在 Eclipse 中启动 Tomcat 并访问:

http://localhost:8080/foo/bar

我有一个名为 foobar 的变量我想使用 JNDI 在我的 JAX-RS 实现中访问它:

final String foobar = (String) new InitialContext().lookup("java:comp/env/foobar");

我计划使用 Tomcat autodeploy 在生产中部署生成的 WAR。我想配置 foobar WAR 外部的 Tomcat 变量。我该怎么做才能在 Eclipse 中对其进行测试?

经过大量阅读,我找到了我认为的 $CATALINA_HOME eclipse :…\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\ .所以我为 foo 创建了一个上下文文件在 …\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\conf\Catalina\localhost\foo.xml对应于我的项目/上下文,并将以下内容放入其中:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
<Environment name="foobar" type="java.lang.String" value="123"/>
</Context>

是的,我知道每次重建时 Eclipse 都会删除这个目录。但是在构建之后,我保存到文件中至少想看看它是否有效。它没有。我得到一个错误:

javax.naming.NameNotFoundException: Name [foobar] is not bound in this Context. Unable to find [foobar].

我至少想让它正常工作,这样我就可以知道如何在生产环境中执行此操作,并在以后担心 Eclipse 中的上下文文件删除问题。那我做错了什么?为什么 Eclipse 中的 Tomcat 找不到这个 JNDI 变量?

注意:我没有使用 web.xml归档并且不想这样做;此外,该变量应该在生产部署中 WAR 之外定义。

更新:好消息是(在 Windows 10 Professional Anniversary Edition 64 位上)使用相同的 Tomcat 但在独立模式下,我将相同的 foobar.xml独立 Tomcat 中的文件 conf\Catalina\localhost\foo.xml ,我的 JAX-RS 应用程序可以很好地识别它。那么如何在Eclipse中的Tomcat中定义一个JNDI变量来进行测试呢?

最佳答案

看来,为了让 Eclipse+Tomcat 识别每个模块的上下文文件,您必须进入服务器配置(双击服务器)并打开 Publish 模块上下文以分离XML 文件。这样 Tomcat 将使用您创建的特定上下文 XML 文件。否则它显然将它们放在 conf/server.xml 中并忽略您创建的特定于上下文的文件。

仍然存在这样的问题,即每次重建时 Eclipse 都会重新生成此文件,从而破坏放置在那里的任何 JNDI 变量。我正在尝试在 https://stackoverflow.com/a/22380248/421049 中找到解决方法去工作,但还没有成功。谁有更好的想法?

至少我现在能够重现生产环境 --- 尽管是暂时的,直到下一次重建。

关于eclipse - 使每个上下文的 JNDI 变量可用于 Eclipse 中的 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40556940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com