我的客戶端升級從CWA 1.5到2011 CWA在WebSphere運行後,有一個問題。問題是所請求的任何二進制資源都會返回404.當請求重新提交(即頁面刷新/重新加載)時,它們將被加載。外表套上CWA 2011二進制文件返回404直到裝修一新的
我有自己的環境沒有訪問,並有獲得通過第三方的所有配置文件。我想知道是否有人有任何想法,他們的頭頂上可能會導致這些404s二進制文件?
我的客戶端升級從CWA 1.5到2011 CWA在WebSphere運行後,有一個問題。問題是所請求的任何二進制資源都會返回404.當請求重新提交(即頁面刷新/重新加載)時,它們將被加載。外表套上CWA 2011二進制文件返回404直到裝修一新的
我有自己的環境沒有訪問,並有獲得通過第三方的所有配置文件。我想知道是否有人有任何想法,他們的頭頂上可能會導致這些404s二進制文件?
對於WebSphere 7,默認的servlet是被稱爲FileServlet,使所以下面應該工作:
<servlet>
<servlet-name>FileServlet</servlet-name>
<servlet-class>
com.ibm.ws.webcontainer.servlet.SimpleFileServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
這是因爲我已經使用CWA很長一段時間,但IIRC它系列化二進制文件到硬盤上的請求,並對其進行緩存爲將來的請求。這聽起來像是這個過程花費了很長時間,所以你得到了一個二進制文件的第一個請求。我以前在WebSphere上聽說過這個消息,你確定它還沒有發生在舊的CWA上嗎?
如果問題仍然存在,我建議您聯繫SDL客戶支持。
與WebSphere 6.1開始,IBM改變了過濾器的行爲,如果你調用的URL實際上並不存在於服務器上,這些將不會被執行。
這意味着/somefile.png一個請求依然在DB將導致(技術上是正確的)404,但完全不是你期望與支持CWA Web應用程序的內容。
的解決方案是在請求過濾器調用沒有一個servlet映射,你應該能夠做到在WebSphere管理控制檯中的以下內容:
在cd_cwa_conf.xml文件,你還可以添加以下參數:
<configuration>
...
<!-- Number of seconds to wait for the default Servlet to pick up changes on the file-system -->
<file-synchronization delay="..." />
...
</configuration>
正如克里斯說,第一次被請求二進制然後文件被序列化並緩存在磁盤上。如果這個過程太長,則應用服務器會返回一個404
使用此參數,系統將等待幾秒鐘(即指定的值)訪問該文件前。
我們有一個Tomcat服務器同樣的問題,這有固定的PB。
我覺得有一點混淆的究竟是什麼的問題是什麼。因此Nick解釋說,二進制文件的第一個請求會導致404錯誤。任何後續請求都會按預期提供二進制文件。因此,埃琳娜給出的答案是不是真的對這個問題的修復,雖然她是非常正確的是說,那個特定的設置有必須在WebSphere確實取得。
爲問題是具有在每個URL模式二進制類型以默認的servlet web.xml文件顯式映射「在第一次請求只得到一個404」的答案。這在http://sdllivecontent.sdl.com/LiveContent/content/en-US/SDL_CWA_10/task_C1FECE85AD5E4F0BB3957C4516D7E2AC描述,子彈#6:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
文檔指出這個修復的JBoss,Tomcat的,但我也看到了它的WebLogic修復。我希望它也能修復WebSphere。請告訴我們。
僅供參考對Tomcat 7有限制。請參閱下面的答案。 –
要小心,如果你使用的是Tomcat 7(和Tomcat 6的可能是最新版本)。 web.xml文件合併的方式有一個限制。
我不知道爲什麼,但是你不能定義幾個到默認servlet的映射。這個servlet只能有一個映射條目。
也許關於這個:https://issues.apache.org/bugzilla/show_bug.cgi?id=50026
順便說一句,您可以通過重新定義也默認映射繞過這個限制。
例如:以下不適用於Tomcat 7.0.33。所有資源都在404錯誤。
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/worldwide/binaries/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/france/binaries/*</url-pattern>
</servlet-mapping>
以下作品完美
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/worldwide/binaries/*</url-pattern>
<url-pattern>/france/binaries/*</url-pattern>
<url-pattern>/</url-pattern>
</servlet-mapping>
希望它能幫助。
不再是Seb :)在上一個CWA 2011代碼中,該功能已從TDF中取出。現在,我們不是這樣做,而是明確地將DefaultServlet映射到web.xml中的URL模式,並且顯然修復了404問題。 但是請注意,上述問題並不是指該行爲。上面的問題是「每次請求都要404」。您和我所指的是'僅在第一次請求時獲得404'。 –
我發佈了另一個答案,因爲我也對這個問題的實際含義感到困惑......請參閱上面的 –