从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

你可能感兴趣的:(tomcat,Web,xml,ClassLoader,filter,websphere)