2010-05-07 84 views
3

我需要定制我的liferay portlet的部署,以便GWT nocache.js文件不会收到'Expires'HTTP标头集。Liferay:自定义在portlet部署期间添加的web.xml HeaderFilter

我的战争文件看起来像这样:

view.jsp 
com.foobar.MyEntryPoint/com.foobar.MyEntryPoint.nocache.js 
com.foobar.MyEntryPoint/12312312313213123123123.cache.html 
WEB-INF/web.xml 
WEB-INF/portlet.xml 
WEB-INF/liferay-portlet.xml 
... etc 

web.xml几乎是空的(只具有显示名)

在部署这个被改写我的Liferay有一系列particalar过滤器:

<filter> 
    <filter-name>Header Filter</filter-name> 
    <filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class> 
    <init-param> 
     <param-name>filter-class</param-name> 
     <param-value>com.liferay.portal.servlet.filters.header.HeaderFilter</param-value> 
    </init-param> 
    <init-param> 
     <param-name>Cache-Control</param-name> 
     <param-value>max-age=315360000, public</param-value> 
    </init-param> 
    <init-param> 
     <param-name>Expires</param-name> 
     <param-value>315360000</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
<filter-name>Header Filter</filter-name> 
    <url-pattern>*.js</url-pattern> 
</filter-mapping> 

这个过滤器增加了约2020年的.nocache.js js文件Expires头......麻烦的是这些文件确实不应该为c痛(提示是在名字:)

对于开发目的我已经通过禁止使用过滤器解决此工作:

com.liferay.portal.servlet.filters.header.HeaderFilter=false 
在portal-ext.properties

globaly。我想要的是以下之一:

  • 仅对此portlet或war文件禁用HeaderFilter。我可以随时添加自己的到期
  • 添加一个init-参数去的HeaderFilter匹配比.nocache.js文件

任何想法如何无论这些事情是可以实现其他什么吗?

堆栈:Liferay的-6.0.1 CE,Windows 7中的Java 1.6.0_18,GWT 2.0.3

回答

3

尝试使用它使用的Liferay本身的URL的正则表达式模式:

<filter> 
    <filter-name>Header Filter</filter-name> 
    <filter-class>com.liferay.portal.kernel.servlet.PortalClassLoaderFilter</filter-class> 
    <init-param> 
     <param-name>filter-class</param-name> 
     <param-value>com.liferay.portal.servlet.filters.header.HeaderFilter</param-value> 
    </init-param> 
    <init-param> 
     <param-name>url-regex-pattern</param-name> 
     <!-- the following matches everything except files ending .nocache.js --> 
     <param-value><![CDATA[^.+(?<!nocache\.js)$]]></param-value> 
    </init-param> 
    <init-param> 
     <param-name>Cache-Control</param-name> 
     <param-value>max-age=315360000, public</param-value> 
    </init-param> 
    <init-param> 
     <param-name>Expires</param-name> 
     <param-value>315360000</param-value> 
    </init-param> 
</filter> 

如果您将其添加到您的web.xml,则它在部署期间不会被添加两次或被删除。 我现在还没有6.0版的经验,所以请确认。

相关问题