javax.naming.NameNotFoundException:尝试查找“ abc”时未找到子上下文“ abc”

时间:2018-10-25 23:25:33

标签: java-ee ejb weblogic

我已经开发了带有Remote接口的EJB应用程序。此应用程序已部署在weblogic 12上。

对于Java应用程序,我尝试使用EJB应用程序,但是当我从InitialContext类调用方法查找时,出现以下消息“ javax.naming.NameNotFoundException:尝试查找'NewSessionBean.remote'时没有”找不到子上下文“ NewSessionBean”

这是来自远程接口的代码:

alpine

这是实现代码的一部分:

package co.com.tutorial.stateless;

import java.util.List;
import javax.ejb.Remote;

/**
 *
 * @author jquintep
 */
@Remote
public interface NewSessionBeanRemote {

    void addBook(String bookName);

    List getBooks();
}

这是我调用查阅代码的一部分:

package co.com.tutorial.stateless;

import java.util.ArrayList;
import java.util.List;
import javax.ejb.Stateless;

/**
 *
 * @author jquintep
 */
@Stateless
public class NewSessionBean implements NewSessionBeanRemote {

    List<String> bookShelf;

    public NewSessionBean() {
        bookShelf = new ArrayList<String>();
    }

感谢您考虑我的要求。

PS 我正在tutorialspoint上关注EJB教程。

1 个答案:

答案 0 :(得分:1)

您可以通过Weblogic控制台中的以下路径查看JNDI树

环境->服务器->选择服务器->单击查看JNDI树链接

我总是检查JNDI树是否存在查找问题。

为什么不使用JNDI可移植名称进行查找?

https://docs.oracle.com/cd/E19798-01/821-1841/girgn/index.html

如果您将实现部署为单独的EAR,则可以使用以下查询

ctx.lookup("java:global/[your ear name]/[your jar file name(module name)]/NewSessionBean!co.com.tutorial.stateless.NewSessionBeanRemote");

如果您将实现部署为单独的jar,则可以使用以下查找

ctx.lookup("java:global/[your jar file name(module name)]/NewSessionBean!co.com.tutorial.stateless.NewSessionBeanRemote");

如果要在同一个EAR中但在另一个广口瓶中查找

ctx.lookup("java:app/[your jar file name(module name)]/NewSessionBean!co.com.tutorial.stateless.NewSessionBeanRemote");

如果要在同一个EAR和同一个罐子中查找

ctx.lookup("java:module//NewSessionBean!co.com.tutorial.stateless.NewSessionBeanRemote");