以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 Java/Eclipse 』  (http://bbs.xml.org.cn/list.asp?boardid=41)
----  [求助]有状态会话EJB出现的问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=54536)


--  作者:lfshun
--  发布时间:10/28/2007 2:53:00 PM

--  [求助]有状态会话EJB出现的问题
我使用的是Eclipse3.2与Lomboz的组合版本,服务器是JBoos4.0,在测试会话EJB时遇到了这样一个问题:
   为了区别无状态与有状态的会话Bean,我编写了一个简单的计数会话EJB实现类:ConverterBean.java
   当创建为无状态会话时刷新页面可以正常计数,每刷新一次加1,另外打开浏览器也会累计相加。
   当创建为有状态会话时无论怎么刷新页面,计数器也不变化,也就是说这个有状态会话不是会话级的,而只是一个页面级的EJB。我不知是什么原因,错在了哪里,请高手给以指教。

1、在EJB模块创建有状态会话EJB
package com;
import javax.ejb.SessionBean;
public class ConverterBean implements SessionBean
{ private int number=0;
   public String getNumber()
      { number++; return String.valueOf(number); }
}
   创建类时Stata Type选择了Stataful—有状态,Transacation Type默认Container—容器管理,后来重新创建改成Bean管理效果一样。
   生成类框架后添加number成员,将foo方法修改为getNumber(),其他方法均默认。

2、编写Web模块servlet测试程序如下:
package com;
import java.io.*;   
import javax.servlet.*;   
import javax.servlet.http.*;
public class TestConverter extends HttpServlet
{ protected void doGet(HttpServletRequest request, HttpServletResponse response)
                 throws ServletException, IOException
    { response.setContentType("text/html; charset=GB2312");
       PrintWriter out =response.getWriter();
       out.println("<html><head><title> test EJB</title></head>");
       try{ Converter bean=ConverterUtil.getHome().create();
             out.println("欢迎您第"+bean.getNumber()+"次访问<br>");
             out.println("<br>计数器="+bean.getNumber());
           }
       catch (Exception e) { out.println("异常:"+e); }
       out.println("</body></html>");
}    }

3、运行结果如下,页面刷新不起作用:

欢迎您第1次访问

计数器=2


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
6,292.969ms