今天整合Spring+Hibernate+Flex,遇到了几个问题,现总结如下:
1、问题描述:
javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/apache/commons/httpclient/UsernamePasswordCredentials
解决办法:
缺包,将commons-httpclient-3.0.1.jar包放到lib目录下。
2、问题描述:
java.lang.NoClassDefFoundError: edu/emory/mathcs/backport/java/util/concurrent/ConcurrentHashMap
解决办法:
缺包,将backport-util-concurrent.jar包放到lib目录下。
3、问题描述:
"FlexConfigurationManager requires a non-null ServletConfig - Is it being used outside a WebApplicationContext?"
解决办法:
将Flex的配置文件单独保存为applicationContext-flex.xml,并与spring的其他配置分开,例如:
创建四个配置文件;
1) applicationContext.xml
2) applicationContext-security.xml
3) applicationContext-services.xml
4) applicationContext-flex.xml
其中的applicationContext.xml文件中include 2)、3)文件,而不include4)文件。
在web.xml的配置文件中,通过ContextLoaderListener来加载applicationContext.xml文件,即2)和3)文件,而通过DispatchServlet来加载applicationContext-flex.xml配置文件。
4、问题描述
Could not find action or result
There is no Action mapped for action name amf. - [unknown location]
解决办法:
web.xml中对struts的拦截设置与Flex的链接设置有冲突
将其修改为如下代码即可:
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
完整的web.xml的配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- Http Flex Session attribute and binding listener support -->
<listener>
<listener-class>flex.messaging.HttpFlexSession</listener-class>
</listener>
<!-- spring中文过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<!-- 配置中文过滤器的映射 -->
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- tomcat中文过滤器-->
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>com.foundation.filter.EncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 用来定位Spring XML文件的上下文配置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/applicationContext.xml
</param-value>
</context-param>
<!-- 启动 Spring Bean 工厂的监听器 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<!-- Spring 刷新Introspector防止内存泄露 -->
<listener>
<listener-class>
org.springframework.web.util.IntrospectorCleanupListener
</listener-class>
</listener>
<!-- FLEX -->
<servlet>
<servlet-name>flex</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/applicationContext-flex.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>flex</servlet-name>
<url-pattern>/spring/*</url-pattern>
</servlet-mapping>
<!-- 启动 Struts 2 的过滤器 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
<!-- Tiles配置 -->
<context-param>
<param-name>org.apache.tiles.CONTAINER_FACTORY</param-name>
<param-value>
org.apache.struts2.tiles.StrutsTilesContainerFactory
</param-value>
</context-param>
<context-param>
<param-name>org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG</param-name>
<param-value>/WEB-INF/web-tiles/tiles-defs.xml</param-value>
</context-param>
<listener>
<listener-class>
org.apache.struts2.tiles.StrutsTilesListener
</listener-class>
</listener>
<!-- session超时时间设置 ,单位分钟-->
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<!-- <welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list> -->
</web-app>