有两个客户端(比如不同的两台机子)请求,
a机子:设置session为session.setAttribute("name","zhangsan"); 
请问b机子能通过某种方法注销掉a机子的session吗?
我试了不行,因为不管用session.invalidate()还是session.removeAttribute("name")都是注销的b自身的session
请问大虾没有没有办法让b把a的session注销掉,并且不能注销掉其它的c.d.e.....

解决方案 »

  1.   

    解决方法:
    1、webservice 两台不同的服务器进行有联在关系的操作。A服务器可以通过webservice写接口提供给B服务器。B服务器拿到接口后可以对A服务器进行相关操作,就和A服务器操作自己一样。2、单点登录   将session放到一个容器 让A和B可以同时时候,共享相同资源。
      

  2.   

    把要注销的B机的SESSION的ID发给A,然后呃。晕!
      

  3.   

    在a机的时候在servlet调用geServletContext().setAttribute("a",request.getSeesion());
    跟着在b机调用((HttpSession)getServletContext().getAttribute("a")).invalidate();
      

  4.   

    问题补充...
    session.setAttribute("name","zhangsan"); 
    session.setAttribute("name","lisi"); 
    session.setAttribute("name","wangwu"); 
    zhangsan是在a机注册的session,想在b机把zhangsan给注销掉.
    上面的方法好象.....
      

  5.   

    session.removeAttribute(""),清除此用户,这样就可以啦
      

  6.   

    假如你想注销keysession.setAttribute("key","value");session.remove("key")
      

  7.   

    B肯定要能够获取到A得session才能销毁,可以在A访问的时候将自己的session对象作为值放在appliaction中,然后B访问的时候从appliaction中获取A的session对象,然后调用销毁方法就OK了
      

  8.   

    他们都是客户端的文件,那不就是意味着,只有他们将Session的值到了服务端才能注销,不然两个客户都可能注销对方的东西啦
      

  9.   

    应用3楼的方法: 
       
       1、webservice 两台不同的服务器进行有联在关系的操作。A服务器可以通过webservice写接口提供给B服务器。B服务器拿到接口后可以对A服务器进行相关操作,就和A服务器操作自己一样。 2、单点登录   将session放到一个容器 让A和B可以同时时候,共享相同资源。 
      

  10.   

    我觉的根本不可能,如果是那样可以的话,问题就严重了哟,web开发安全性是不是也太低了
      

  11.   

    只要知道B的IP地址就好了啦!
    有IP地址获取什么都可以,获取得到,那么就可移除掉啊
      

  12.   

    总之要把session共享出来。因为session本身是针对浏览器的,一个浏览器请求启动一个session,所以,如果想让a关闭b,那只有把a的共享出来,就可以关闭了。5楼的方法可以一试,因为ServletContext是一个应用级的容器,它可以在整个应用程序作用域中被访问,它的用法与session非常相似,可以使用setAttribute方法将对象保存,又使用getAttribute方法将对象取出操作,而且因为它的作用域非常大,可以认为是全局容器,只要是访问同一个应用,那就是同一个ServletContext,所以,可以尝试5楼所讲述的方法。不过,真不知道楼主想干嘛,也许楼主想要实现的功能并不需要如此不安全的实现,难说有更简单的方式。