从sun公司下载的最新的rowset文件名是jdbc_rowset_tiger-1_0_1-mrel-ri.zip |
WebSphere 6.0 + DB2 部署心得
最新推荐文章于 2012-12-03 23:40:30 发布
近期的一个项目分行指定在WebSphere+DB2上运行,由于第一次接触这两个系统,所有在开发过程中一直使用Tomcat 5.5+DB2这样的一个环境,运行一直很好。可是在最后往WebSphere上部署时,遇到了很多的麻烦。
一、WebSphere部署遇难题
经过多次的反复的部署,应用程序就是无法运行。由于对WebSphere不熟,一开始以为是WebSphere安装和配置的问题,就反复在安装和配置上捣鼓。后来潜下心来仔细研究了了一下WebSphere的运行时错误信息,找到了错误日志的位置。(顺便说一句,IBM的东东路径实在是太复杂了,找一个配置文件简直象进入了十八层地狱一般)。一看明白了,原来是某某类的某方法没找到。
结合以前知道的一些关于IBM的知识,立即知道这是JDK的问题。IBM使用自己的JDK,版本是4.1.2。而我在项目中使用的是5.0。于是立即回到IDEA中,把项目的JDK设为WebSphere 6.0自带的JDK,然后加上WebSphere的Runtime Lib。于是,IDEA象开杀戒一样,项目里面一片红色标记。我改改改,把所有用到Java 5的地方全降成1.4的,有点忍痛割爱的感觉。然后编译,心想这下应该没问题了吧。
再部署,一帆风顺。网站模块也运行起来,那个高兴啊。心情舒畅的打开浏览器,一运行,NND,还是报错。查看WebSphere系统日志,没有任何错误信息,真的把人气坏了。因为不知道如何调试WebSphere,只好编译一次部署一次再运行一次。最后才发现,是刚才给代码动手术的时候,返回值的XML少加了一个空格,造成返回值的XML无效。该死的XMLHttp。
以为恶梦到此为止,兴冲冲的再次运行。结果登录界面出来了,有点激动。输入登录信息,确定。“对象无效”的该死提示再次冒出来。出这个错误,百分百是服务器的问题。出鬼了都。
赶紧扒出系统日志,看到了一大堆“Class can't be find”这样的错误,这种错误心里会好受些。很快的找到是什么类:
java.lang.NoClassDefFoundError: javax/sql/rowset/CachedRowSet。 老办法,Google搜。
问题水落石出。spring的sqlRowSet使用的是JDK1.5的CachedRowSet实现。按照spring官方的解释,找到了spring自带的一个rowset.jar部署上去。结果还是出错。就在我快崩溃的时候,在网上发现了一位高手发的帖子:
按照这个办法一修复,问题全部搞定。
二、DB2 又怎么了?
很快又回到了我在部署TomCat是遇到的同样问题,在WebSphere中提示找不到“COM.ibm.db2.jdbc.app.DB2Driver”类的驱动。
解决这个问题的办法是:
1、换成COM.ibm.db2.jcc.DB2Driver,第4类驱动程序。OK。
2、在WebSphere的startServer.sh脚本中运行db2profile脚本,该脚本在DB2的home目录下的sqllib目录中。