2015-10-16 63 views
4

有沒有什麼方法可以使用Jboss6.1的配置文件來設置HttpHeader。這些配置適用於整個項目。使用Jboss6.1設置Http頭

我想使用其配置文件在Jboss6.1服務器中設置波紋管屬性。

response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
response.setHeader("Pragma", "no-cache"); // HTTP 1.0. 
response.setDateHeader("Expires", 0); 

我用domain.xml試過了,但沒有任何效果。

回答

6

不要讓自己複雜化。如果你想每個響應都有這個頭配置,創建你自己的過濾器來做到這一點。這樣你就不會被加入到JBoss並得到你想要的。

這裏有一個過濾器示例:

package your.package; 

import javax.servlet.Filter; 
import javax.servlet.FilterChain; 
import javax.servlet.FilterConfig; 
import javax.servlet.ServletException; 
import javax.servlet.ServletRequest; 
import javax.servlet.ServletResponse; 
import javax.servlet.http.HttpServletResponse; 

public class NoCacheFilter implements Filter { 

      @Override 
      public void destroy() { 
      } 

      @Override 
      public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { 
        HttpServletResponse hsr = (HttpServletResponse) res; 
        hsr.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); 
        hsr.setHeader("Pragma", "no-cache"); 
        hsr.setDateHeader("Expires", 0); 
        chain.doFilter(req, res); 
      } 

      @Override 
      public void init(FilterConfig arg0) throws ServletException { 
      } 
} 

,那麼你只需要它配置到您的web.xml或多或少是這樣的:

<filter> 
    <filter-name>noCacheFilter</filter-name> 
    <filter-class>your.package.NoCacheFilter</filter-class> 
</filter> 

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

此映射適用於所有要求,但你可以適應它。

希望它有幫助!

+0

該項目沒有任何Java代碼。它在angularjs和jboss被用作Web服務器 – nidhin

+0

好吧,你把這個問題標記爲Java ......但是無論如何,我沒有看到問題。如果你使用的是J2EE容器,你可以添加一個過濾器,它可以解決你的問題。而且我認爲更重要的是,這樣一來,您不會與JBoss耦合,這是與任何J2​​EE和/或Servlet容器兼容的解決方案。 – malaguna

+0

@Nidhin,你試過我的回答嗎?這對你的問題是有效的,儘管你沒有Java代碼,它仍然可以滿足你的需求。 – malaguna