struts的多线程理解是这样的:如果一个action同时接收到多个请求,Actionservlet会为每一个请求创建一个action线程,而每一个action中调用其他类的方法的时候,每一个action都有该方法的一个单独拷贝,所以编写Action的时候不存在多线程问题。请问次观点是不是正确。
   另外我想写一个小型的压力测试软件,请各位给点意见:
1.发给server的包应该包括哪些内容:
用httplook可以看到每一个请求内容,包括请求首部,请求体等,类似于
 GET /test/test.jsp?id=1&name=tom HTTP/1.1. Accept: image/gif, image/jpeg,*/*. Accept-Language: zh-cn. Accept-Encoding: gzip, deflate. User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0) ...
2.如何同时于一个server建立多个skcket连接
谢谢

解决方案 »

  1.   

    struts是线程安全,并不是指多线程,而是指单态,当多个用户访问一个请求的时候,服务器内存中只有一个与之对应的action类对象,execute方法加上了同步关键字,如果你在action里加上一个全局变量,那么,多个客户访问的时候,这个变量是共有的,即一个客户修改了他,下一个客户获得的变量是修改后的,你可以写个demo来测试,至于多线程只是服务器在相应客户端请求时对于session的处理,并不是指struts action
      

  2.   

    假设一段简单的代码:
    public class LogonAction extends Action {
      public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)throws Exception {
        LogonForm logonForm = (LogonForm) actionForm;
        String username = logonForm.getUsername().trim();
        String password = logonForm.getPassword().trim();
        List userinfo = new ArrayList();     //用户信息
        try
         {
           userinfo = logon.adminLogon(userinfo,username,password);
    //--------省略了数据库连接代码,通过userinfo.size()来判断是否登陆成功.
    以上代码是否会引起多线程问题,adminLogon使用了局部变量,好像应该没问题,谢谢。
      

  3.   

    >>execute方法加上了同步关键字NO! no synchronized or sync block in Action.execute().
    Actions must be programmed in a thread-safe manner, because the controller will share the same instance for multiple simultaneous requests. This means you should design with the following items in mind: