1

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-param>

    <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>
Sean Patrick Floyd
  • 292,901
  • 67
  • 465
  • 588
beku8
  • 613
  • 1
  • 8
  • 22
  • Opensessioninview filter just wouldn't work. I have lazy initialization exception just as though I'm not using any opensessioninview filter. I know it's because of that urlrewritefilter. Because opensessioninview filter works perfectly fine without it, but I really don't want to remove urlrewritefilter for several reasons. – beku8 Oct 19 '10 at 15:32

1 Answers1

0

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
Community
  • 1
  • 1
Ashley Schroder
  • 3,826
  • 1
  • 21
  • 16