EJB3使用的问题

09-08-05 windgoogle
用NetBeans IDE开发了个EJB3.0 的session bean

在Servlet中进行调用,调用代码是使用 NetBeans IDE的提供的工具自动生成,使用标注@EJB,问题是这个ejb引用不成了该servlet的成员变量,这样岂不是线程不安全的?这在ejb3.0以前的时代绝对不会发生,难道NetBeans 或者是SUN犯了这么个弱智的问题,还是我理解错了,实际测试确实存在线程不安全啊?

代码类似这样:

Servlet

public class ClientServlet extends HttpServlet {

@EJB

private StatelessSessBeanTestCaseRemote statelessSessBeanTestCaseBean;

/**

* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.

* @param request servlet request

* @param response servlet response

* @throws ServletException if a servlet-specific error occurs

* @throws IOException if an I/O error occurs

*/

protected void processRequest(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

String threads=request.getParameter("threads");

int nThreads=1;

out.println("<html>");

out.println("<head>");

out.println("<title>EJB Test Case</title>");

out.println("</head>");

out.println("<body>");

try {

statelessSessBeanTestCaseBean.sayHello();

out.println("invoke ejb successed.");

}catch(Exception e){

out.println("invoke ejb failed.");

e.printStackTrace();

}finally {

out.println("</body>");

out.println("</html>");

out.close();

}

}

banq
2009-08-05 18:14
SUN范弱智的事情不在少数。

它只管把代码给你输出,哪管你代码的质量,这就是典型的科学家和工程师的区别,SUN就只是一个科学家。

heweiweihe
2009-08-11 17:32
statelessSessBeanTestCaseBean , 是个无状态会话bean把,看名称,

因此,就这个具体问题的话,不会有线程不安全的问题。

当然,如果是个stateful session bean,那肯定是线程不安全。

猜你喜欢