Jetspeed 2
  1. Jetspeed 2
  2. JS2-759

Jetspeed caches content of portal pages unexpectedly

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: 2.1.2
    • Fix Version/s: 2.1.3
    • Component/s: Components Core
    • Labels:
      None
    • Environment:
      java 1.5, SuSe 10, tomcat 5.5.20

      Description

      I've created some portal pages. All of them are caching unexpectedly (full content of page was cached). After restarting portal pages are still the same after refreshing page.

      Some additional info:
      Http Response Headers for Cache-Control: no-cache,no-store,private
      All of my portlet has expiration_time = 0 in portlet.xml.
      I'm writing current time in header.vm. After refreshing page time doesn't change. It still has the same value when page was load at first time.
      When changing decorator for portlet or theme for a page or moving portlets on the page, page is reloading successfully! Another way page doesn't reloading!

      My web.xml:
      <!DOCTYPE web-app
      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
      "http://java.sun.com/dtd/web-app_2_3.dtd">

      <web-app>
      <display-name>Jetspeed-2 Enterprise Portal</display-name>

      <!-- Log4JConfigurator context-listener parameters -->
      <context-param>
      <param-name>log4j.config.file</param-name>
      <param-value>/WEB-INF/conf/Log4j.properties</param-value>
      </context-param>
      <context-param>
      <param-name>log4j.config.webApplicationRoot.key</param-name>
      <param-value>applicationRoot</param-value>
      </context-param>

      <filter>
      <filter-name>XXSUrlAttackFilter</filter-name>
      <filter-class>org.apache.jetspeed.engine.servlet.XXSUrlAttackFilter</filter-class>
      </filter>

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

      <listener>
      <listener-class>org.apache.jetspeed.webapp.logging.Log4JConfigurator</listener-class>
      </listener>

      <listener>
      <listener-class>org.apache.jetspeed.engine.JetspeedServlet</listener-class>
      </listener>

      <servlet>
      <servlet-name>jetspeed</servlet-name>
      <servlet-class>org.apache.jetspeed.engine.JetspeedServlet</servlet-class>
      <init-param>
      <param-name>properties</param-name>
      <param-value>/WEB-INF/conf/jetspeed.properties</param-value>
      </init-param>
      <init-param>
      <param-name>applicationRoot</param-name>
      <param-value>webContext</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
      </servlet>

      <!-- Define Velocity template compiler -->
      <servlet>
      <servlet-name>velocity</servlet-name>
      <servlet-class>org.apache.jetspeed.velocity.JetspeedVelocityViewServlet</servlet-class>
      <init-param>
      <param-name>org.apache.velocity.toolbox</param-name>
      <param-value>/WEB-INF/toolbox.xml</param-value>
      </init-param>
      <init-param>
      <param-name>org.apache.velocity.properties</param-name>
      <param-value>/WEB-INF/velocity.properties</param-value>
      </init-param>
      <init-param>
      <param-name>org.apache.jetspeed.cache.size</param-name>
      <param-value>50</param-value>
      </init-param>
      <init-param>
      <param-name>org.apache.jetspeed.cache.validation.interval</param-name>
      <param-value>-1</param-value>
      </init-param>
      <load-on-startup>10</load-on-startup>
      </servlet>

      <servlet>
      <servlet-name>LoginProxyServlet</servlet-name>
      <servlet-class>org.apache.jetspeed.login.LoginProxyServlet</servlet-class>
      </servlet>

      <servlet>
      <servlet-name>LoginServlet</servlet-name>
      <servlet-class>org.apache.jetspeed.login.LoginServlet</servlet-class>
      </servlet>

      <servlet>
      <servlet-name>LoginErrorServlet</servlet-name>
      <servlet-class>org.apache.jetspeed.login.LoginErrorServlet</servlet-class>
      </servlet>

      <servlet>
      <servlet-name>LoginRedirectorServlet</servlet-name>
      <servlet-class>org.apache.jetspeed.login.LoginRedirectorServlet</servlet-class>
      </servlet>

      <servlet>
      <servlet-name>LogoutServlet</servlet-name>
      <servlet-class>org.apache.jetspeed.login.LogoutServlet</servlet-class>
      </servlet>

      <servlet>
      <servlet-name>ManagerServlet</servlet-name>
      <servlet-class>org.apache.jetspeed.manager.ManagerServlet</servlet-class>
      </servlet>

      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /portal/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /portlet/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /jetspeed/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /fileserver/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /ajaxapi/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /ajax/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /desktop/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /action/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /render/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /configure/*
      </url-pattern>
      </servlet-mapping>
      <servlet-mapping>
      <servlet-name>
      jetspeed
      </servlet-name>
      <url-pattern>
      /dtconfigure/*
      </url-pattern>
      </servlet-mapping>

      <!-- Map *.vm files to Velocity -->
      <servlet-mapping>
      <servlet-name>velocity</servlet-name>
      <url-pattern>*.vm</url-pattern>
      </servlet-mapping>

      <servlet-mapping>
      <servlet-name>LoginProxyServlet</servlet-name>
      <url-pattern>/login/proxy</url-pattern>
      </servlet-mapping>

      <servlet-mapping>
      <servlet-name>LoginServlet</servlet-name>
      <url-pattern>/login/login</url-pattern>
      </servlet-mapping>

      <servlet-mapping>
      <servlet-name>LoginErrorServlet</servlet-name>
      <url-pattern>/login/error</url-pattern>
      </servlet-mapping>

      <servlet-mapping>
      <servlet-name>LoginRedirectorServlet</servlet-name>
      <url-pattern>/login/redirector</url-pattern>
      </servlet-mapping>

      <servlet-mapping>
      <servlet-name>LogoutServlet</servlet-name>
      <url-pattern>/login/logout</url-pattern>
      </servlet-mapping>

      <servlet-mapping>
      <servlet-name>ManagerServlet</servlet-name>
      <url-pattern>/manager/*</url-pattern>
      </servlet-mapping>

      <!-- The Usual Welcome File List -->
      <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
      </welcome-file-list>

      <!-- JNDI Db resource -->
      <resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/jetspeed</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      </resource-ref>

      <!-- Protect LogInRedirectory.jsp. This will require a login when called -->
      <security-constraint>
      <web-resource-collection>
      <web-resource-name>Login</web-resource-name>
      <url-pattern>/login/redirector</url-pattern>
      </web-resource-collection>
      <auth-constraint>
      <!-- the required portal user role name defined in: -->
      <!-- /WEB-INF/assembly/security-atn.xml -->
      <role-name>portal-user</role-name>
      </auth-constraint>
      </security-constraint>

      <!-- securing the ManagerServlet -->
      <security-constraint>
      <web-resource-collection>
      <web-resource-name>Manager</web-resource-name>
      <url-pattern>/manager/*</url-pattern>
      </web-resource-collection>
      <auth-constraint>
      <role-name>admin</role-name>
      </auth-constraint>
      </security-constraint>

      <!-- Login configuration uses form-based authentication -->
      <login-config>
      <auth-method>FORM</auth-method>
      <realm-name>Jetspeed</realm-name>
      <form-login-config>
      <form-login-page>/login/login</form-login-page>
      <form-error-page>/login/error</form-error-page>
      </form-login-config>
      </login-config>

      </web-app>

        Issue Links

          Activity

          Hide
          Vitaly Baranovsky added a comment -

          I've solved this problem.

          In jetspeed 2.1-dev (14.07.2006) distribution there was expiration-cache set to -1 (infinity time) for all layouts in file WEB-INF\apps\jetspeed-layouts\WEB-INF\portlet.xml.

          Our designer had created our custom layouts with copying this predefined layouts into new layouts and had modified params of new layouts without touching expiration-cache parameter.

          Jetspeed 2.0 doesn't support portlet caching. But 2.1.2 does. So, with jetspeed 2.1.2 our custom layouts became cached for infinity time. After changing expirtation-cache from -1 to 0 problem has gone.

          So, I think, it would be nice to describe this situation in 2.0 to 2.1 migration guide (http://portals.apache.org/jetspeed-2/guides/guide-migration.html). Because this situation can became very common problem.

          Show
          Vitaly Baranovsky added a comment - I've solved this problem. In jetspeed 2.1-dev (14.07.2006) distribution there was expiration-cache set to -1 (infinity time) for all layouts in file WEB-INF\apps\jetspeed-layouts\WEB-INF\portlet.xml. Our designer had created our custom layouts with copying this predefined layouts into new layouts and had modified params of new layouts without touching expiration-cache parameter. Jetspeed 2.0 doesn't support portlet caching. But 2.1.2 does. So, with jetspeed 2.1.2 our custom layouts became cached for infinity time. After changing expirtation-cache from -1 to 0 problem has gone. So, I think, it would be nice to describe this situation in 2.0 to 2.1 migration guide ( http://portals.apache.org/jetspeed-2/guides/guide-migration.html ). Because this situation can became very common problem.
          Hide
          David Sean Taylor added a comment -

          documentation updated in both 2.1.3 branch and 2.2-dev
          Will get this sync'ed to the website soon

          Show
          David Sean Taylor added a comment - documentation updated in both 2.1.3 branch and 2.2-dev Will get this sync'ed to the website soon

            People

            • Assignee:
              Unassigned
              Reporter:
              Vitaly Baranovsky
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development