從tomcat遷移項目到geronimo

 我有一個web項目,用的strtus框架。

正常情況下,打包成war後,在websphere正式版的控制檯裏發佈,沒有問題,我想把他移植到到wasce中,相同的war文件,或者相同的目錄結構,卻失敗了。

查了些資料後,發現根本原因是部署描述符文件錯。

前面的文章講到過,geronimo項目需要部署描述符文件來描述各模塊的關係,這是個很重要的文件。我的項目是個web項目,文件名叫geronimo-web.xml。

在單獨的tomcat裏發佈時,是不需要這個文件的。

websphere正式版在發佈時,會自動分析項目目錄,自動把部署描述符文件加上去。

我下面就把我遇到的問題,以及我怎麼解決的寫出來。

首先,把war包原樣發佈後,提示classnotfound錯誤。原因呢,就是我這個項目使用了org.apache.commons.digester模塊,geronimo本身自帶了這個模塊,而且是優先運行的,他的classloader的級別比web項目的classloader的級別高,造成找到不項目中的class。

解決辦法:在geronimo-web.xml中加入下面元素

<sys:hidden-classes>
      <sys:filter>org.apache.commons.digester</sys:filter>
    </sys:hidden-classes>

意思是讓org.apache.commons.digester優先在當前classloader下運行。hidden-classes就是啓這個作用的。

well,這個問題解決了,又有了新錯誤,提示找不到saxexception類。

我的項目中使用了sax來處理xml。

在geronimo安裝目錄下的lib/endorsed目錄裏,自帶了xerces和xml包。geronino中,這個lib目錄下的包是優先於應用程序下的lib中的包的加載的。所以造成一些錯誤。

我把geronimo安裝目錄下的lib/endorsed目錄裏的xerces和xml包刪除,程序運行正常了。

通過這個例子,部署描述符文件也是蠻重要的。

下面是這些描述符文件的規範說明,有時間大家可以去看看.

http://publib.boulder.ibm.com/wasce/V1.1.0/en/Reference/Plans/index.html

發佈了75 篇原創文章 · 獲贊 3 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章