2012-10-03 32 views
2

我們在JSF 1.2(Sun's RI)中開發的Web應用程序部署在帶有JRockit 1.6 64位的Weblogic 11g中。我們有我們的視圖狀態保存模式作爲客戶端。該應用程序通過HTTPS訪問。JSF 1.2 Mojarra視圖狀態加密 - GZip錯誤 - java.io.IOException:不是GZIP格式

作爲第三方滲透測試建議的一部分,我們建議加密視圖狀態,該視圖狀態是使用web.xml中的JNDI ENV設置實現的。

 
    <env-entry> 
    <env-entry-name>com.sun.faces.ClientStateSavingPassword</env-entry-name> 
    <env-entry-type>java.lang.String</env-entry-type> 
    <env-entry-value>2rEb7Tuf</env-entry-value> 
    </env-entry> 

當應用程序被部署到我們的生產箱(集羣與會話親緣關係),有時在處理客戶端請求(當然不是當應用程序頁面加載到客戶端瀏覽器在默認視圖狀態將被髮送作爲隱藏字段的一部分),我們得到GZIP錯誤「java.io.IOException:不在GZIP格式」。只有啓用加密時纔會發生這種情況。

 
    Servlet failed with IOException 
    java.io.IOException: Not in GZIP format 
    at java.util.zip.GZIPInputStream.readHeader(GZIPInputStream.java:143) 
    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:58) 
    at java.util.zip.GZIPInputStream.<init>(GZIPInputStream.java:67) 
    at com.sun.faces.renderkit.ResponseStateManagerImpl.getTreeStructureToRestore(ResponseStateManagerImpl.java:166) 
    at javax.faces.render.ResponseStateManager.getState(ResponseStateManager.java:215) 
    Truncated. see log file for complete stacktrace 

任何有價值的見解將不勝感激。提前致謝。

回答

2

默認情況下com.sun.faces.compressViewStatetrue當我們在客戶端設置視圖狀態時,JSF框架會嘗試使用GZIP格式進行壓縮。如果您將com.sun.faces.compressViewState初始參數設置爲web.xmlfalse,則壓縮不會發生,您可以避免此異常。試一下。

+0

感謝您的迴應BalusC。但是我們希望啓用GZIP /壓縮,同時我們也希望將客戶端保存在客戶端。有沒有辦法可以解決這個問題呢?提前致謝。 – user1716111

相關問題