开发者

urlrewrite and opensessioninviewfilter doesn't work together

开发者 https://www.devze.com 2023-01-20 04:14 出处:网络
I started my new Spring mvc project and I decided to go with SpringSource ToolSuite. When I create a project it automatically creates urlrewrite filter in my web.xml, which I\'m enjoying very much. Ho

I started my new Spring mvc project and I decided to go with SpringSource ToolSuite. When I create a project it automatically creates urlrewrite filter in my web.xml, which I'm enjoying very much. However, this brilliant urlrewrite thing doesn't seem to work with opensessioninviewfilter. Does anybody can help me?

Here is my web.xml(I tried by changing the order of filters.)

<?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">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/app-config.xml</param-value>
    </context-par开发者_运维问答am>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- sessiong neelttei bailgah tohirgoo -->
    <filter>
      <filter-name>hibernateFilter</filter-name>
      <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
      <init-param>
         <param-name>sessionFactoryBeanName</param-name>
         <param-value>sessionFactory</param-value>         
      </init-param>      
   </filter>

   <filter-mapping>
     <filter-name>hibernateFilter</filter-name>
     <url-pattern>/*</url-pattern>
   </filter-mapping> 

    <!-- Enables clean URLs with JSP views e.g. /welcome instead of /app/welcome -->
    <filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping> 

    <!-- Handles all requests into the application -->
    <servlet>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/spring/*.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Maps all /app requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
        <url-pattern>/app/*</url-pattern>
    </servlet-mapping>



</web-app>


This exact thing was happening to me and the solution proposed by axtavt over here for a different filter works a treat on this one too.

Just declare your OpenSessionInViewFilter filter-mapping like this:

<filter-mapping>
    <filter-name>
        OpenPersistenceManagerInViewFilter
    </filter-name>
    <url-pattern>/app/*</url-pattern>
    <url-pattern>/api/*</url-pattern>
    <url-pattern>/admin/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>

Just to keyword load incase it helps, this error manifests itself when you try to access the datastore on Google App Engine with JDO as:

org.datanucleus.exceptions.NucleusUserException: Object Manager has been closed
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号