簡體   English   中英

Websphere 8.5和SpringServletContainerInitializer

[英]Websphere 8.5 and SpringServletContainerInitializer

我們最近將我們的應用程序從servlet 2.5轉換為servlet 3.0,以便我們可以使用動態servlet配置。

我們使用Spring的SpringServletContainerInitializer來初始化我們的應用程序,其中包含存在於我們代碼中的WebApplicationInitializer的相應實例。 這種方法適用於Tomcat,但是當部署到Websphere 8.5.0.1時,SpringServletContainerInitializer無法在我們的代碼中找到WebApplicationInitializer接口的實現,因此我們的Spring MVC調度程序servlet不會被創建。

我們在網上發現了一篇博文 ,但作者無法將其發揮作用。

我們已經嘗試搞亂類加載器,類加載命令,並通過其他方式驗證servlet 3.0在容器中工作,並且看起來沒問題。 使用WAS類加載器查看器,我們可以看到SpringServletContainerInitializer類和WebApplicationInitializer接口被加載,但不是我們的WebApplicationInitializer實現。

有沒有人在Websphere中嘗試過這個? 我們認為它可能是一個類加載器問題但最終是無能為力的。

我剛看到這個帖子。 在調試類加載器問題時,WebSphere提供跟蹤,當啟用時,可以提供有關正在進行或未進行的更多詳細信息。 它是在必須收集的數據中提供的,如果您打開PMR,IBM Support會請求該數據。 但是閱讀和理解輸出很容易。

http://www-01.ibm.com/support/docview.wss?uid=swg21196187#show-hide “手動收集數據”下要使用的跟蹤字符串是

com.ibm.ws.classloader。* =所有

我有同樣的問題。 問題是由以下APAR http://www-01.ibm.com/support/docview.wss?uid=swg1PM85177修復的WebSphere中的缺陷。 WebSphere構建注釋緩存,並且由於緩存已滿時出現缺陷,它會拋棄先前緩存的注釋,導致SpringServletContainerInitializer無法找到WebApplicationInitializer的所有實現。

該APAR已經在8.0.0.8發布,計划於8.5.5.2發布,計划於4月28日發布。 與此同時,我設法將緩存的大小從默認的2000增加到16000(它在4000和8000時失敗),此時我的應用程序開始工作。 一個大小不適合所有,因為緩存大小被JVM上的系統屬性覆蓋,用於WebSphere節點,適當的大小將取決於該節點上運行的應用程序以及它們(及其JAR)如何使用注釋,因此它將在確定應用程序的正確值之前,請務必使用此設置。

我使用的JVM系統屬性是-Dclassinfocachesize = 16000

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM