JAVA查找在SerialContext中的bean名称失败

时间:2015-09-06 18:20:25

标签: java glassfish glassfish-4.1

情景如下:

我编写了一个java企业应用程序

首先我从数据库表" Derby"创建了实体类。然后我在java库项目中创建了一个辅助类,然后我在企业应用程序bean中创建了一个会话bean,并在java库项目中创建了一个bean facade远程

这是会话bean的重要代码部分:

@Stateless(mappedName = "officefacade")
public class OfficeFacade implements OwnerFacadeRemote {
        @PersistenceContext
        private EntityManager em;

然后我编写了一个简单的客户端来测试方法

客户代码:

public class Client {

private OwnerFacadeRemote request;
public static void main(String[] args) {
    // TODO code application logic here
    Client x = new Client();

}

public Object getEJBBean(String beanName)
{
        try
        {
            InitialContext ctx = new InitialContext();
            return ctx.lookup(beanName);
        }
        catch(Exception ex)
        {
            System.err.println("Error : " + ex.getMessage() + "\n\n\n");
        }
        return null;
 }

private void insert()
{
    request.createOwner(new OwnerDetails("1","M","444","M","afcdv"));
}

private void display()
{
    List<OwnerDetails> xx = request.getAllOwner();

}

public Client() 
{
    request = (OwnerFacadeRemote) getEJBBean("officefacade");

    insert();
    display();
}

问题是我每次运行客户端时都会收到查找失败的错误&#39; officefacade&#39;

这是完整的错误文本

> Error : Lookup failed for 'officefacade' in SerialContext[myEnv{java.naming.factory.initial=com.sun.enterprise.naming.impl.SerialInitContextFac   tory, java.naming.factory.url.pkgs=com.sun.enterprise.naming, java.naming.factory.state=com.sun.corba.ee.impl.presentation.rmi.JNDIStateFactoryImpl}

如何确保映射的名称可用以及如何修复它以便查找可以找到它,即使它意味着在串行上下文中对映射的名称进行硬编码&#34;我不会知道这是什么,但似乎问题来自它&#34;

任何帮助都非常感谢,并提前感谢您的努力,我确信所有内容都已正确实施,因此它是映射名称相关的问题

开发工具是netbeans 8.0.2和glassfish 4.1

1 个答案:

答案 0 :(得分:0)

尝试将@Stateless(mappedName = "officefacade")替换为@Stateless(name = "officefacade")lookup的{​​{1}}方法似乎适用于bean InitialContext

有关更多详情,请参阅相关的JavaDoc sectionrelated method

<强>更新

刚刚检查过这个主题的Oracle's documentation - 根据可用的信息,您可能需要实际查找name而不是纯"java:module/officefacade",具体取决于bean上下文。