当前位置: 首页 > 知识库问答 >
问题:

Liberty配置文件上的JNDI查找失败

闻深
2023-03-14

我使用Liberty Profile v8.5.5.5(WebSphere Application Server8.5.5.5/wlp-1.0.8.cl50520150221-0034)IBMJ9 VM,版本pxa6470sr1-20120330_01(SR1)(en_US)

我已经安装了jndi功能。。。但无论我做什么,我都无法进行简单的JNDI查找。

在我server.xml

<jndiEntry jndiName="schoolOfAthens/defaultAdminUserName" value="plato" />

我的代码...(这只是几行的servlet)

Object jndiConstant = new InitialContext().lookup(
"schoolOfAthens/defaultAdminUserName");

但这在以下方面失败了:

javax。命名。NameNotFoundException:在上下文“serverlocal:CELLROOT/SERVERROOT”中找不到名称schoolOfAthens。

代码直接取自一个示例。

有什么想法吗?

我在本地运行这个,也尝试了我的Bluemix帐户...结果一样

共有2个答案

仇经武
2023-03-14

8.5.5.6对我来说也一样,手头没有.5,但应该以同样的方式工作。

这是我的服务器。xml:

<server description="new server">

    <!-- Enable features -->
    <featureManager>
        <feature>servlet-3.1</feature>
        <feature>jndi-1.0</feature>
        <feature>localConnector-1.0</feature>
    </featureManager>

    <!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>


    <applicationMonitor updateTrigger="mbean"/>

    <webApplication id="JNDITest" location="JNDITest.war" name="JNDITest"/>
    <jndiEntry jndiName="schoolOfAthens/defaultAdminUserName" value="plato" />    
</server>

和servlet代码(看看你也可以使用@Resource注释而不是查找):

@WebServlet("/JNDIServlet")
public class JNDIServlet extends HttpServlet {
    @Resource(lookup="schoolOfAthens/defaultAdminUserName")
    String jndiVariable;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        try {
            InitialContext ctx = new InitialContext();
            Object object = ctx.lookup("schoolOfAthens/defaultAdminUserName");
            System.out.println("object: " + object);
            System.out.println("jndiVariable: " + jndiVariable);
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }

}

输出:

object: plato
jndiVariable: plato
梁韬
2023-03-14

好吧,让这个工作。我添加了一个资源参考到我的web.xml,并像这样查找:

 Object obj2 = ctx.lookup("java:comp/env/schoolOfAthens/defaultAdminUserName");`

web.xml

 <resource-ref>
     <description>Test Reference</description>
     <res-ref-name>schoolOfAthens/defaultAdminUserName</res-ref-name>
     <res-auth>Container</res-auth>
 </resource-ref>
 类似资料:
  • 我得到以下错误: 当我尝试在muzei应用程序中使用我的

  • 我似乎不能在本地工作,即使同样的WAR在远程服务器上也能工作。当我在本地访问我的应用程序时,我得到了“没有找到上下文根”的错误。自由档案版本是8.5.5.5。 以下是相关文件: 服务器.xml 留言.log ibm-web-bnd.xml ibm-web-ext.xml

  • 如果有人能帮助我纠正代码中的问题,我将不胜感激。不知道我哪里错了。 当前我的persistence.xml包含

  • 在查找jdbc数据源的JNDI连接时,我遇到以下错误: javax。命名。ConfigurationException:无法完成“java:”名称上的JNDI操作,因为服务器运行时无法将该操作的线程与任何J2EE应用程序组件关联。当使用“java:”名称的JNDI客户端未在服务器应用程序请求的线程上执行时,可能会出现这种情况。确保J2EE应用程序不会在静态代码块或该J2EE应用程序创建的线程中对“

  • 我在Jetty服务器上的JNDI配置有问题。我无论如何都不能配置它,使Spring(3.0.5)之后可以检索JNDI变量。 我有一些凭证,我不想存储在属性中,这样它就不会存在于git repo中。我的web应用程序正在Jetty(最新版本9.2.3)上运行,因此我想到了在Jetty web应用程序上下文中存储这些凭证的想法。Jetty通过。所以我创建了jetty env。我的WEB-INF/中的x

  • 在使用资源引用从服务器上下文获取数据源连接时,我收到了JNDI查找错误。请注意,如果我不使用,则“查找”是有效的。 javax。命名。ConfigurationException:无法完成“java:”名称上的JNDI操作,因为服务器运行时无法将该操作的线程与任何J2EE应用程序组件关联。当使用“java:”名称的JNDI客户端未在服务器应用程序请求的线程上执行时,可能会出现这种情况。确保J2EE