Liferay: настройте web.xml HeaderFilter, добавленный во время развертывания портлета - PullRequest
3 голосов
/ 07 мая 2010

Мне нужно настроить развертывание моего портлета liferay таким образом, чтобы файлы GWT nocache.js не получали набор HTTP-заголовков «Expires».

Мой военный файл выглядит так:

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

my web.xml в значительной степени пуст (имеет только displayName)

При развертывании это переписано в моей жизни, чтобы иметь серию фильтров в 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>

Этот фильтр добавляет заголовок Expires примерно на 2020 год к js-файлам .nocache.js ... проблема в том, что эти файлы действительно не должны кэшироваться (подсказка в названии:)

В целях разработки я решил эту проблему, отключив фильтр с помощью:

com.liferay.portal.servlet.filters.header.HeaderFilter=false

в portal-ext.properties globaly. То, что я хотел бы получить, является одним из следующих:

  • Отключить HeaderFilter только для этого файла портлета или файла войны. Я всегда могу добавить свои собственные истекает
  • Добавить init-param в HeaderFilter, чтобы он соответствовал чему-либо, кроме файлов .nocache.js

Есть идеи, как можно достичь чего-либо из этого?

Стек: liferay-6.0.1 CE, Windows 7, Java 1.6.0_18, GWT 2.0.3

1 Ответ

3 голосов
/ 20 мая 2010

Попробуйте использовать шаблон url-regex, который используется самим Liferay:

<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, поэтому, пожалуйста, проверьте.

...