也就是javax.servlet.Filter,我用一个过滤器类实现了这个接口,其中包含一些类级别共享的数据(static),但是不知道在JBoss中是单例的还是多例的,不能下决定是否需要做同步考虑,同步毕竟是很耗性能的,能不做就不做

解决方案 »

  1.   

    个人观点:在整个服务器运行期间一个servlet只有一个事例
      

  2.   

    如果是单例的,如何同时响应多个请求呢?多线程处理请求,处理的时候访问同一个单例的过滤器或Servlet?那么多线程就必然需要对这些单例对象进行同步处理了?
      

  3.   

    Servlet的线程安全问题只有在大量的并发访问时才会显现出来,并且很难发现,因此在编写Servlet程序时要特别注意。线程安全问题主要是由实例变量造成的,因此在Servlet中应避免使用实例变量。如果应用程序设计无法避免使用实例变量,那么使用同步来保护要使用的实例变量,但为保证系统的最佳性能,应该同步可用性最小的代码路径。
      

  4.   


    服务器不会对Servlet进行同步,你必须保证你自己写的Servlet是线程安全的。
      

  5.   

    如果是单例的,我就可以不使用static变量了,只是我有点不明白多线程怎么处理单例的过滤器和Servlet?
    事实上我用的是Struts2,Action是多例的,我关心的是过滤器,看来还是得试验一下才能确定了
    谢谢各位