Flex整合Spring+hibernate问题集锦

来源:互联网 发布:解放军知乎 编辑:程序博客网 时间:2024/05/22 11:04
 

今天整合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>