2011-06-12 67 views
0

我在JNDI綁定的「ejb.Bb_restriction_USRemoteHome」下有一個SessionBean。 Weblogic控制檯也證實了這一點。無法解析<JNDI>

但是,儘管訪問它通過下面的代碼段:

private static Context getInitialContext() throws NamingException { 
     Context ctx = null; 
     Hashtable ht = new Hashtable(); 
     ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory"); 
     ht.put(Context.PROVIDER_URL, "t3://localhost:7001"); 
     ctx = new InitialContext(ht); 
     return ctx; 
} 

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
    try { 
     Context ctx = getInitialContext(); 
     System.out.println(ctx.list("java:comp/env")); 
     System.out.println(ctx.lookup("ejb.Bb_restriction_USRemoteHome").getClass()); 
    } catch (NamingException e) { 
     e.printStackTrace(); 
    } 
} 

,我正在以下錯誤:

javax.naming.NameNotFoundException: Unable to resolve 'ejb.Bb_restriction_USRemoteHome'. Resolved 'ejb'; remaining name 'Bb_restriction_USRemoteHome' 
    at weblogic.jndi.internal.BasicNamingNode.newNameNotFoundException(BasicNamingNode.java:1139) 
    at weblogic.jndi.internal.BasicNamingNode.lookupHere(BasicNamingNode.java:252) 
    at weblogic.jndi.internal.ServerNamingNode.lookupHere(ServerNamingNode.java:182) 
    at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:206) 
    at weblogic.jndi.internal.BasicNamingNode.lookup(BasicNamingNode.java:214) 
    at weblogic.jndi.internal.WLEventContextImpl.lookup(WLEventContextImpl.java:254) 
    at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:411) 
    at javax.naming.InitialContext.lookup(InitialContext.java:392) 
    at TestServlet.doGet(TestServlet.java:50) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 
    at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) 
    at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) 
    at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:183) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3717) 
    at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3681) 
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) 
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) 
    at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2277) 
    at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2183) 
    at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1454) 
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209) 
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:178) 

的System.out.println的「輸出(ctx.list ( 「Java的:comp/env的」));」僅限[email protected]

任何人都可以請告訴我如何檢索JNDI名稱爲「ejb.Bb_restriction_USRemoteHome」的對象?

+0

你能證明你的'會話bean的ejb-jar.xml'進入? – JoseK 2011-06-13 06:53:22

回答

1

您正在嘗試訪問全局JNDI上下文中的JNDI名稱「ejb.Bb_restriction_USRemoteHome」。顯然容器可以解析ejb部分,但不能解析「Bb_restriction_USRemoteHome」,所以這個名字顯然是不正確的。

您可以嘗試簡單列出ejb上下文的內容並從那裏開始工作。

對於這種使用類似:

NamingEnumeration namingEnumeration = ctx.list("ejb"); 
while (namingEnumeration.hasMoreElements()) { 
    NameClassPair entry = (NameClassPair) namingEnumeration.nextElement(); 
    System.out.println(entry.getName()); 
}