问题:
javax.servlet.ServletException: Unable to instantiate Action, menuLoginAction, defined for 'menuLogin' in namespace '/sys'Error creating bean with name 'menuLoginAction': Scope 'session' is not active for the current thread; consider defining a scoped proxy for this bean if you intend to refer to it from a singleton; nested exception is java.lang.IllegalStateException: No thread-bound request found: Are you referring to request attributes outside of an actual web request, or processing a request outside of the originally receiving thread? If you are actually operating within a web request and still receive this message, your code is probably running outside of DispatcherServlet/DispatcherPortlet: In this case, use RequestContextListener or RequestContextFilter to expose the current request. - action - file:/C:/W7/profiles/AppSrv01/installedApps/localhostNode01Cell/CmccSzyd.ear/CmccSzydWeb.war/WEB-INF/classes/conf/struts/sys.xml:7:67
问题的本质:
在于struts和Spring对HTTP request的执行顺序要求,先是Spring(会写一些theadlocal的信息),然后才能是Struts.
用户的struts和Spring的定义:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
在WAS的webcontainer对于listener和filter执行的顺序有些奇怪。
如果是servlet,那么就是先执行listener然后是filter,那么就能满足Spring/Struts的要求。
如果不是servlet,那么会先执行filter。
用户的struts定义没有servlet,那么就根据struts的filter的url pattern, 去先执行了struts(没有Spring去处理HTTP request), 那么就拿不到相应的信息,出现的错误。
有两种解决方案:
1)Spring不使用listener,改成使用filter的方式,并把Spring的filter放在Struts前面。
<filter>
<filter-name>SpringRequestContextFiler</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SpringRequestContextFiler</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2. 作个假的servlet,servlet什么也不处理,并设置servlet mapping为"/*",这样的话,就是先执行Spring的listener.
分享到:
相关推荐
JAVA EE 开发指南-基于Spring/Struts/Hibernate的实现 (人民有的出版社,王磊杰 崔军波等编著) 一书的源码 由于资源太大,我会一个一个的上传,这个是所有工程的安装使用说明。。。
sshExample 从第2章到第21章的源文件 EBookStore 第22章“网上书店系统”工程源文件 CSMS 第23章“在线客服管理系统”工程源文件 TES 第24章“教师测评系统”工程源文件 2.3 \dbschema目录 目录中存放的是本书中使用...
Spring/Struts/Hibernate整合
Spring/Struts2整合项目 详细步骤请参考http://blog.csdn.net/hsun924/article/details/16877437
Java EE开发指南—基于Spring/Struts/Hibernate的实现 源码 Java EE开发指南—基于Spring/Struts/Hibernate的实现 源码
Java EE开发指南—基于Spring/Struts/Hibernate的实现 源码(第二部分) Java EE开发指南—基于Spring/Struts/Hibernate的实现 源码(第二部分)
一些jar包spring/struts
包含流行Spring/Struts/Hibernate技术的完整源程序例子,所有jar库文件一并收录。开始第一个SSH应用,不用抓狂,轻松解压这一个文件即可。访问http://www.codegene.net看压缩包里的源程序是如何生成的。
quartz2.2/struts2/spring的整合demo,包含一个job和多个job的创建,已经测试过了,可以使用........ quartz2.2/struts2/spring的整合demo,包含一个job和多个job的创建,已经测试过了,可以使用........ quartz2.2/...
http://repo.spring.io/libs-release-local/org/springframework/spring/4.1.1.RELEASE/spring-framework-4.1.1.RELEASE-dist.zip Hibernate4.3.6:发布于2014-07-16,目前的最新版本。官网:http://hibernate.org/...
包含JS / J_Query API/J2EE 1.5 Struts2/Spring2.0 /Hibernate3.2/ Html Help /CSS2.0/CSS Filter 2.0 / MySql 5.1 参考文档
整合了目前最新版本的SSH框架所有jar包,导入后即可使用SSH框架。
META-INF/MANIFEST.MForg.springframework.web.struts.ActionServletAwareProcessor.class org.springframework.web.struts.ActionSupport.class org.springframework.web.struts.AutowiringRequestProcessor.class ...
Spring 整合 Struts,很强大
java框架学习struts/Hibernate/Spring/ 慢慢学习!好用好学!
一个spring+struts+hibernate的例子,是eclipse的工程,用tomcat5和mysql,文件夹下包含所有的源码和库,另外还有一个.sql的文件用于建立数据库。大家觉得它有什么不好,欢迎交流
选择题 答案 开发基于Struts/Spring/Hibernate/Ajax的网上信息发布平台 accp5.0 ssh
详细讲解,集成Struts2/ Spring / Hibernate的过程。