Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jakarta ee 在JNDI查找中使用什么上下文名称?_Jakarta Ee_Jndi - Fatal编程技术网

Jakarta ee 在JNDI查找中使用什么上下文名称?

Jakarta ee 在JNDI查找中使用什么上下文名称?,jakarta-ee,jndi,Jakarta Ee,Jndi,本人已向SFSB声明如下: @Stateful(name="StatefulBean") public class StatefulBean implements MyListener { private String id; public StatefulBean() { } public void setId(String id) { this.id = id; } } 我试图用servlet的doGet方法对其进

本人已向SFSB声明如下:

@Stateful(name="StatefulBean")
public class StatefulBean implements MyListener
{
    private String id;

    public StatefulBean()
    {
    }

    public void setId(String id)
    {
        this.id = id;
    }
}
我试图用servlet的doGet方法对其进行实例化,如下所示:

protected void doGet(final HttpServletRequest request,
    final HttpServletResponse response) throws ServletException, IOException
{
    Date now = new Date();
    String id = new Long(now.getTime()).toString();

    try
    {
        Context context = new InitialContext();
        StatefulBean statefulBean = (StatefulBean) context.lookup("name");
        statefulBean.setId(id);
        response.getWriter().write("Created StatefulBean with id " + id);
    }
    catch(Exception ex)
    {
        response.getWriter().write("Exception creating bean:" + ex.getMessage());
    }
}
servlet和bean都属于
my.package
,并部署在名为BeanTest.war的同一war文件中到Glassfish3服务器

我在确定
名称时遇到问题。Glassfish server.log声明:

[#|2014-05-20T16:31:51.720-0600|INFO|glassfish3.1.2|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=988;_ThreadName=Thread-14;|EJB5181:Portable JNDI names for EJB StatefulBean: [java:global/BeanTest/StatefulBean!my.package.MyListener, java:global/BeanTest/StatefulBean]|#]
我已经尝试在对java:global/BeanTest/StatefulBean的查找调用中设置
name
!ca.shaw.tno.oss.MyListener
java:global/BeanTest/StatefulBean
。当用其中一个调用doGet时,我得到以下错误:

Exception processing batch:com.sun.proxy.$Proxy353 cannot be cast to my.package.StatefulBean

因为这是Glassfish服务器提供的唯一两个命名选项,我应该使用什么?

问题是我没有用@LocalBean注释StatefulBean。一旦我添加了这一点,JNDI查找就成功了

@Stateful(name="StatefulBean")
@LocalBean
public class StatefulBean implements MyListener
{
    private String id;

    public StatefulBean()
    {
    }

    public void setId(String id)
    {
        this.id = id;
    }
}