关于Struts2 Dispatcher分发器的线程安全问题

问题描述

查看Struts2StrutsPrepareAndExecuteFilter这个类可以看出在服务器进行初始化时,调用了这个类的init化方法dispatcher=init.initDispatcher(config)生成了一个Dipspacher实例。然后在doFilter方法中,通过prepare.assignDispatcherToThread()方法将dispacher对象put进当前线程的ThreadLocalMap中去,其中key是ThreadLocal对象,value是Dispatcher对象。现在问题来了。多线程共享一个Dispatcher实例,当多线程对Dispatcher进行访问时,如果其中有线程更改了Dispatcher的成员变量,这样不就会引发线程安全问题了吗??望各位不要吝惜手上的力气,积极拍砖!!小弟在此静候各位的高论!

解决方案

本帖最后由 lyy5682077 于 2014-09-11 16:43:32 编辑
解决方案二:
没人回答我的问题吗
解决方案三:
自己顶!!UPUP

时间: 2025-01-30 16:54:42

关于Struts2 Dispatcher分发器的线程安全问题的相关文章

struts1和struts2的线程安全问题

问题描述 我在struts2权威指南中看到介绍struts1与struts2的区别的时候说struts1是线程安全的.网上又有许多人说struts1是非线程安全的!我这个地方有底迷糊了,请高手来说一下,struts1和struts2到底是线程安全的还是非线程安全的,麻烦说下各位大虾是怎么分析的.谢谢 解决方案 解决方案二:Struts2的Action设计就不像Struts1的Action或者Servlet那样是单实例了.Struts2的Action的设计哲学是每次请求来了,都创建一个实例了.因此

浅析Struts1和Struts2的Action线程安全问题

这是由于Servlet的工作原理产生的.我们先来简单回顾一下Servlet的生命周期"初始化->init->service->destroy->卸载". 这里大家都知道,我们在web.xml里面定义一个servlet的时候,我们可以给他们设置一个"load-on-startup" 的值,如果 Servlet 的 load-on-startup 配置项大于 0,那么在 Context 容器启动的时候就会被实例化,并且tomcat给每一个serv

核心分发器

9.2核心分发器 -- Dispatcher  9.2.1 核心分发器(Dispatcher)的核心驱动作用  Dispatcher之所以被称之为Struts2的核心分发器,主要是基于它在整个Struts2框架中的特殊地位.我们经常会使用"起-承-转-合"这4个不同的阶段来描述一个事件的整个过程,对于Struts2而言,Dispatcher实际上就是囊括这4个阶段的核心分发器.  9.2.1.1起 -- 负责系统初始化  Dispatcher在初始化时负责整个Struts2的初始化工作

Yarn源码分析之事件异步分发器AsyncDispatcher

        AsyncDispatcher是Yarn中事件异步分发器,它是ResourceManager中的一个基于阻塞队列的分发或者调度事件的组件,其在一个特定的单线程中分派事件,交给AsyncDispatcher中之前注册的针对该事件所属事件类型的事件处理器EventHandler来处理.每个事件类型类可能会有多个处理渠道,即多个事件处理器,可以使用一个线程池调度事件.在Yarn的主节点ResourceManager中,就有一个Dispatcher类型的成员变量rmDispatcher,

在 muduo 中实现 protobuf 编解码器与消息分发器

本文是<一种自动反射消息类型的 Google Protobuf 网络传输方案>的延续,介绍如何将前文介绍 的打包方案与 muduo::net::Buffer 结合,实现了 protobuf codec 和 dispatcher. Muduo 的 下载地址: http://muduo.googlecode.com/files/muduo-0.1.9-alpha.tar.gz ,SHA1 dc0bb5f7becdfc0277fb35f6dfaafee8209213bc ,本文的完整代码可在线阅读

Struts2 自定义验证器

前言    其实早在四月底就在JR上发表了这篇文章,这次再次搬出来一是为了资料集中,二是做一些修改和更详细的描述.和以往一样入门和介绍就不说了,如何学习在上篇文章Struts2+JFreeChart上有介绍. 正题1.工程目录结构图:2.以下依次帖代码:    a).    web.xml <?xml version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns=&qu

[转载]难经3:Struts2,拦截器拦不住Result?

[问题] 使用Struts2作为web框架,知道它的拦截器(Interceptor)机制,类似与Filter和spring的AOP,于是实现了一个为Action增加自定义前置(before)动作和后置动作(after)的拦截器(曰:WInterceptor),不过用一段时间发现,在WInterceptor的after中,对Action对象的属性修改在页面看不到,对请求对象的属性设置也无效.为什么在调用了Action之后(invokeAction())之后,request就不能使用了呢,拦截器不能

单例模式与线程安全问题浅析

           最近看到到Struts1与Struts2的比较,说Struts1的控制器是单例的,线程不安全的:Struts2的多例的,不存在线程不安全的问题.之后又想到了之前自己用过的HttpHandler...这些类,好像单例的线程安全问题确实是随处可见的.但是只是知道这个是不安全的,也没有认真分析过.接下来就仔细分析下. 一,修改单例模式代码       首先我先写一段单例类的代码:          /** * @ClassName: Sigleton * @Description

大家来讨论关于Hashtable线程安全问题

问题描述 需求:在web应用程序,需要根据类名,将类的所有方法信息缓存.例子:Hashtable_table=Hashtable.Synchroized(newHashtable())hashtable的key为类名,value为Dictionary<string,MethodInfo>Dictionary的key为方法名称,value为方法信息.那么在读的时候,会先从hashtable读:不存在则反射获取MethodInfo,然后写入hashtable.问题:由于hashtable不是只读的