`
chhff
  • 浏览: 28662 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Spring/Struts从Tomcat到WPS/WAS移植的问题

阅读更多
问题:
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.
分享到:
评论

相关推荐

    Spring/Struts2整合项目

    5. **运行与测试**:配置好项目后,将项目部署到Tomcat服务器上,通过浏览器访问`http://localhost:8080/项目名/struts2指定Action`来测试整合是否成功。如果一切正常,你应该能看到预期的输出。 以上就是Spring和...

    采用Spring/Struts/Hibernate技术的完整源程序

    包含流行Spring/Struts/Hibernate技术的完整源程序例子,所有jar库文件一并收录。开始第一个SSH应用,不用抓狂,轻松解压这一个文件即可。访问http://www.codegene.net看压缩包里的源程序是如何生成的。

    Spring/Struts/Hibernate整合

    标题与描述:“Spring/Struts/Hibernate整合” 在IT领域,特别是Java开发环境中,Spring、Struts和Hibernate作为三大框架,被广泛应用于企业级应用的开发。它们的整合(通常称为SSH,即Spring、Struts、Hibernate)...

    一些jar包spring/struts

    标题中的“一些jar包spring/struts”表明我们讨论的是两个经典的Java Web开发框架——Spring和Struts的相关库文件。这些jar包是Java应用程序或Web应用程序的重要组成部分,它们包含了框架的核心功能和依赖。 Spring...

    Java EE开发指南—基于Spring/Struts/Hibernate的实现 源码(第二部分)

    这部分源码是"Java EE开发指南—基于Spring/Struts/Hibernate的实现"的第二部分,意味着它可能包含更深入的应用场景和进阶技术。 **Java EE** 是一种广泛使用的服务器端开发标准,它提供了丰富的组件和服务,用于...

    quartz2.2/struts2/spring的整合demo

    quartz2.2/struts2/spring的整合demo,包含一个job和多个job的创建,已经测试过了,可以使用........ quartz2.2/struts2/spring的整合demo,包含一个job和多个job的创建,已经测试过了,可以使用........ quartz2.2/...

    最新版本的Struts2+Spring4+Hibernate4框架整合

    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/Struts/Spring/Hibernate/Html/CSS 编程参考文档(chm格式)

    包含JS / J_Query API/J2EE 1.5 Struts2/Spring2.0 /Hibernate3.2/ Html Help /CSS2.0/CSS Filter 2.0 / MySql 5.1 参考文档

    java8+tomcat8+struts2.5+spring4.3+hibernate5.2框架搭建详细过程

    ### Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 框架搭建详细过程 #### 一、环境配置与准备 在搭建一个基于Java8 + Tomcat8 + Struts2.5 + Spring4.3 + Hibernate5.2 的项目前,首先需要对开发环境...

    struts2+spring+tomcat做的购物小例子

    Struts2、Spring和Tomcat是Java Web开发中常见的三个技术框架,它们共同构建了一个功能丰富的购物应用程序。这里我们将深入探讨这三个技术的核心概念以及如何在实际项目中整合使用。 Struts2是一个基于MVC(Model-...

    Spring整合Struts

    ### Spring与Struts的整合:实现灵活的企业级应用开发 在企业级应用开发领域,Spring框架和Struts框架都是极具影响力的技术。Spring以其强大的依赖注入(DI)和面向切面编程(AOP)能力,提供了良好的环境管理和...

    spring-struts.jar

    META-INF/MANIFEST.MForg.springframework.web.struts.ActionServletAwareProcessor.class org.springframework.web.struts.ActionSupport.class org.springframework.web.struts.AutowiringRequestProcessor.class ...

    整合Spring与Struts的几种方法

    &lt;/struts-config&gt; ``` `config.xml`是Spring的配置文件,它定义了Spring容器中的bean及其依赖关系。 接下来,有三种整合Spring和Struts的方法: 1. **继承Spring的ActionSupport类**:Action直接继承Spring的`...

    Spring Tool Suite 搭建tomcat配置调试环境

    Spring Tool Suite(STS)是基于Eclipse的集成开发环境,专为Spring框架提供了一系列强大的工具和支持。它使得Spring开发者能够更高效地构建、测试和调试Spring应用。在本教程中,我们将详细介绍如何在STS中配置...

    struts/spring/hibernate部署视频

    这个"struts/spring/hibernate部署视频"资源提供了关于如何将这三个框架集成并部署到实际项目中的教程。 Struts是Apache基金会下的一个开源MVC(Model-View-Controller)框架,它主要负责处理用户的请求,并将这些...

    spring、struts、ibatis框架搭建流程

    - **Spring配置文件**:在项目的`WEB-INF/spring/`目录下创建或修改`applicationContext.xml`文件,配置Spring的Bean管理。 - **Struts配置文件**:创建或修改项目的`WEB-INF/struts.xml`文件,配置Action和结果。 -...

    spring+struts2整合源码

    部署时,将项目打包成WAR文件,部署到Servlet容器如Tomcat。 通过以上步骤,我们可以成功地整合Spring和Struts2,实现一个完整的MVC架构。这样的整合使得我们可以充分利用Spring的IoC和AOP特性,以及Struts2的MVC...

    一个spring+struts+hibernate的例子

    一个spring+struts+hibernate的例子,是eclipse的工程,用tomcat5和mysql,文件夹下包含所有的源码和库,另外还有一个.sql的文件用于建立数据库。大家觉得它有什么不好,欢迎交流

Global site tag (gtag.js) - Google Analytics