艾依然
作者艾依然·2008-04-23 10:23
其它·惠牛农业

WebSphere 6.0 + DB2 部署心得

字数 2086阅读 3614评论 0赞 0
近期的一个项目分行指定在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部署上去。结果还是出错。就在我快崩溃的时候,在网上发现了一位高手发的帖子:

QUOTE:


使用最新sun公司的rowset.jar包的请注意
从sun公司下载的最新的rowset文件名是jdbc_rowset_tiger-1_0_1-mrel-ri.zip
这是个新的rowset版本,最令人感兴趣的当然是里面的CachedRowSet类,可是这个版本中,CachedRowSet并没有作为一个直接可使用的类,而是定义为一个接口。为此,在新版本中,增加了一个CachedRowSetImpl类,它实现了CachedRowSet类,只要调用new CachedRowSetImpl(),就可以创建一个CachedRowSet对象,但就是这个new CachedRowSetImpl(),在使用时让人头痛不已。程序执行这个语句会抛出异常。根本用不了。
经过一番查找,终于在国外同仁的一个贴子上找到了问题所在!
原来是这个rowset最新版本的一个BUG。不敢独享,拿来与大家共用:
解决方法:
(1)解压jdbc_rowset_tiger-1_0_1-mrel-ri.zip,产生rowset.jar文件
(2)再解压rowset.jar文档,在产生的com/sun/rowset目录下找到RowSetResourceBundle.properties文件。
(3)将RowSetResourceBundle.properties更名为RowSetResourceBundle_CN.properties
说明:这里_CN表示所处中国。不同的国家,这个名称不同
经过以上的步骤
就可以正常使用new CachedRowSetImpl()啦.
http://dev2dev.bea.com.cn/bbs/thread.jspa?forumID=123&threadID=22607&tstart=210

按照这个办法一修复,问题全部搞定。

二、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目录中。

本文来自:http://blog.sina.com.cn/s/blog_44f68c96010005vl.html

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广