【问题标题】:JNDI configuration in TomcatTomcat 中的 JNDI 配置
【发布时间】:2013-06-10 21:05:06
【问题描述】:

我正在尝试在要部署在 Tomcat 7 中的 Web 应用程序中设置 JNDI 查找。我在 jndi.properties 文件中指定了以下属性:

java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces, java.naming.provider.url=localhost:1199

但是当我获得初始上下文并检查其属性时,它显示java.naming.factory.initial 更改为org.apache.naming.java.JavaURLContextFactory 并且所有其他属性与jndi.properties 文件中的相同。我不明白为什么这个单一属性会发生变化?如何防止这种情况并强制 tomcat 使用我指定的属性?

【问题讨论】:

标签: java tomcat tomcat7 jndi


【解决方案1】:

我相信 JNDI 属性应该是特定于供应商的,您尝试输入的是 Jboss JNDI 属性,并且可能已经恢复到 Tomcat 特定属性。尽管您可以尝试以编程方式覆盖它们,但它可能无法正常工作。

【讨论】:

  • 我已经这样做了,以编程方式修改了属性并且它有效,但我的问题是,为什么它们不能直接从 jndi.properties 工作?因为我编写了一个使用 jndi.properties 的独立客户端并且它工作正常,但是相同的代码和相同的 jndi.properties 文件在 Tomcat 中不起作用。尽管我指定了 NamingContextFactory,但它将初始上下文工厂更改为 JavaURLContextFactory。
【解决方案2】:

您应该将所有这些内容放入 META-INF/context.xml 文件中的 Resource 元素中,并通过 java:comp/env URL 查找该资源。这就是 Tomcat 试图在这里设置的东西:该名称空间的对象工厂。

【讨论】:

  • 我也试过这个并且它有效。但是因为我正在查找远程 jndi 树并且我的 Tomcat 应用程序是一个客户端,所以我认为在 tomcat 中配置资源不是一个好主意。另一件事是,无论我在客户端配置什么资源,jndi.properties 都应该工作,因为我不是在查看客户端的 JNDI 树,而是查看服务器的 JNDI 树。
【解决方案3】:

我认为你应该将你的属性附加到你的 catalina.properties 文件中,它在你的 $tomcat_home/conf 下。

【讨论】:

    猜你喜欢
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2011-01-29
    • 2015-08-07
    相关资源
    最近更新 更多