gpt4 book ai didi

tomcat - tomcat 6 中上下文特定的 JNDI 参数问题

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

当在 Tomcat 6 上部署了两个或多个应用程序时,我在使用 JNDI 时遇到了问题。考虑以下场景:我有 2 个 Web 应用程序,其中每个 web.xml 包含一个 JNDI 参数。

web.xml webapp A:
<br/>
<code><env-entry></code><br/>
<code><env-entry-name>testEntry</env-entry-name></code><br/>
<code><env-entry-value>value A</env-entry-value></code><br/>
<code><env-entry-type>java.lang.String</env-entry-type></code><br/>
<code></env-entry></code><br/>

web.xml 网络应用 B:
<br/>
<code><env-entry></code><br/>
<code><env-entry-name>testEntry</env-entry-name></code><br/>
<code><env-entry-value>value B</env-entry-value></code><br/>
<code><env-entry-type>java.lang.String</env-entry-type></code><br/>
<code></env-entry></code><br/>

当我部署两个 web 应用程序并查找 testEntry 的值时,两个 web 应用程序都返回值 A。似乎只有第一个加载的 web.xml 中的 JNDI 参数可用。根据我对 JNDI 的理解,每个 web.xml 都包含 webapp 特定的 JNDI 值,这些值仅在它们各自的上下文中可用。我在这里做错了什么/想错了什么?

这引出了我的下一个问题。如何定义在所有上下文中都可用的全局 JNDI 参数?在我读过的 tomcat 文档中,您应该为此目的使用 {CATALINA_HOME}/conf/context.xml。但是环境条目在上下文中不可用。将它们放在 {CATALINA_HOME}/conf/web.xml 中可以使它们在全局范围内可访问,但我怀疑这是正确的方法。

这是我用来查找它们的 Java 代码:


Context initCtx = new InitialContext();<br/>
Context envCtx = (Context) initCtx.lookup("java:comp/env");<br/>
String value = (String)envCtx.lookup("testEntry");<br/>

欢迎任何帮助,因为关于 JNDI 的好的文档是伤疤。

最佳答案

顺便说一句,

  1. 您不需要 web.xml 中的内容。
  2. 不需要修改/tomcat6/conf/context.xml

您只需将 context.xml 放入 war 中 WebContent 目录的 META-INF 中。JNDI 将自动注册,并在应用程序加载时创建池。

您可以选择将其放在/tomcat6/conf/context.xml 中,但这需要在每次配置更改后重新启动tomcat。

这是我的 sql 的一些很好的配置。重点是 logAbandoned(检测容器从池中抛出的未关闭连接,因为您的代码忘记关闭它)。对于验证查询,我建议使用一些东西来测试您的数据库表是否存在。

<Resource name="jdbc/NAME" auth="Container" type="javax.sql.DataSource"
maxActive="100" minIdle="10" maxWait="10000" removeAbandoned="true"
removeAbandonedTimeout="60" logAbandoned="true"
testWhileIdle="true" testOnBorrow="true" testOnReturn="false"
timeBetweenEvictionRunsMillis="5000"
validationQuery="SELECT 1" initialSize="10"
username="usrname" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/databb?autoReconnect=true"/>

关于tomcat - tomcat 6 中上下文特定的 JNDI 参数问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4152922/

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