javax.naming.NameNoutFoundException:名称 [url/example] 在此上下文中未绑定

问题描述 投票:0回答:1

我正在维护一个 Java Web 应用程序。在某个时候,它会运行以下代码:

javax.naming.InitialContext ctx = new javax.naming.InitialContext();
java.net.URL url;

try {
    url = (java.net.URL) ctx.lookup("url/example");
} catch (Exception ex) {
    logger.warn(ex)
    url = null
}

在进行查找时,它崩溃了,并且出现此错误:javax.naming.NameNoutFoundException:名称 [url/example] 在此上下文中未绑定

在我的context.xml(位于myProject/WebContent/META-INF/)中,我定义了一个工作正常的资源(数据源):

<Resource name="jdbc/exampleDB"
    auth="Container"
    type="javax.sql.DataSource"
    username="myUserName"
    password="myPass"
    ... />

我尝试对我的“url/example”资源做类似的事情,考虑到它应该是一个 URL 或一个带有指向 myProject.properties 文件(位于 myProject/WebContent/WEB-INF/ 中)的路径的字符串,而不是一个数据源。比如:

<Resource name="url/example"
    auth="Container"
    type="java.net.URL" />

或者

<Resource name="url/example"
    auth="Container"
    type="java.lang.String" />

但仍然遇到同样的错误。我缺少什么?我是否还可以在 Tomcat 文件夹中的 context.xmlweb.xml 中配置任何内容?

java tomcat jndi
1个回答
0
投票

我想我取得了一些进步。我替换了这个:

javax.naming.InitialContext ctx = new javax.naming.InitialContext();

有了这个:

Context ctx = (Context) new InitialContext().lookup("java:comp/env");

现在我收到此错误:

javax.naming.NamingException:无法创建资源实例

也许我的资源定义不正确? (我想我应该以某种方式为 URL 定义一个值......)

<Resource name="url/example"
    auth="Container"
    type="java.net.URL" />
© www.soinside.com 2019 - 2024. All rights reserved.