was 部署应用常见问题



IBM Websphere服务器(集群)常见问题及解决方案

  (2013-12-17 13:06:10)

IBM Websphere服务器(集群)常见问题及解决方案

1.    引言

笔者接触IBMWebsphere服务器有2年多的时间了,对它的了解也是微乎其微(太复杂了),使用的版本有WAS 6.18.0 、8.5,之前完成的几个项目都是使用的该服务器进行部署,使用的总体感受是:

l  搭建环境比较麻烦,安装补丁包太多

l  部署比较慢,容易出问题,特别是缓存问题(后续会有提到)

l  运行起来稳定性还不错,不过一些参数配置需要注意

最近的一个项目同样也是使用该服务器,搭建的比较的复杂,出了一些问题,个人感觉比较典型,网上资料也非常少,本人也是头疼了好多天,最后还是找IBM工程师解决的,在此作一下总结,也希望给以后遇到类似情况的同仁们提供一些参考。

2.    部署架构

项目分为前端web和后台逻辑app,系统环境:linux,服务器:Websphere8.0

l  Web端使用2台服务器m1m2,同时使用1台服务器m3F5均衡负载;

l  App端使用2台服务器m4m5,同时使用1台服务器m6Dmgr管理m4m5,后台的负载是使用EJB集群负载。

3.    问题汇总

由于之前问题是出在生产环境上,当时问题出现时没有截图,现在总结只能找一部分的日志进行述说了。

4.1.             问题点1

       WAS集群环境搭建好以后,EJBAPP)部署不上去,部署错误日志如下:

SEVERE: Error generating RMI code: RMIC command failed on project: business with message:

error: Class org.apache.log4j.Logger not found.

error: Class Business contains an invalid return type.

error: Class com.sinosoft.service.Business contains an invalid argument type in method request.

ADMA5008E: EJBDeploy 程序处理文件/home/wasadmin/IBM/WebSphere/AppServer/profiles/Dmgr01/wstemp/514564614/upload/business_jar.ear 失败。异常为:com.ibm.etools.ejbdeploy.EJBDeploymentException: Error executing EJBDeploy

ADMA0063E: Enterprise JavaBeansEJB)部署期间发生错误。异常:com.ibm.etools.ejbdeploy.EJBDeploymentException: Error executing EJBDeploy

ADMA5011I: 清除应用程序 business_jar  temp 目录已完成。

ADMA5014E: 应用程序 business_jar 安装失败。

应用程序 business_jar 安装失败。

错误信息大致为log4j相关的class没有加载上,EJB初始失败。检查共享库的配置,没有问题。应该是Websphere类加载先后顺序的问题。

u  解决方案

Ø  方案1:直接将log4j.jar解压,将class打包到部署包中

Ø  方案2:调整websphere的类加载顺序,选择server,将类加载模式设置成parent_last。设置完后要重启server

4.2.             问题2

    上述问题解决完后,EJB仍然部署不上去,具体错误日志忘记了,错误内容大致为:EJB集群的环境不一致,这个问题很是坑爹,折腾了1天多都没有搞定,最后请了IBM工程师,发现问题是后台2台服务器的时间差距太大(一台服务器的时间不准确),将服务器时间调整一致后,问题解决。真不知道客户IT部门是怎么搭的环境…..

4.3.             问题3

       解决完上面的2个问题后,项目终于顺利的部署上去了,结果在测试时报了webservice调不通的错误,错误日志如下:

EJB threw an unexpected (non-declared) exception during invocation of method "request" on bean "BeanId(business_jar#business.jar#BusinessFacade, null)". Exception data: java.lang.VerifyError: JVMVRFY013 class loading constraint violated; class=org/apache/axis/message/NodeImpl, method=getParentNode()Lorg/w3c/dom/Node;, pc=0

at java.lang.J9VMInternals.verifyImpl(Native Method)

         at java.lang.J9VMInternals.verify(J9VMInternals.java:85)

         at java.lang.J9VMInternals.verify(J9VMInternals.java:83)

         at java.lang.J9VMInternals.verify(J9VMInternals.java:83)

         at java.lang.J9VMInternals.verify(J9VMInternals.java:83)

         at java.lang.J9VMInternals.initialize(J9VMInternals.java:162)

         at org.apache.axis.client.Call.invoke(Call.java:2364)

         at org.apache.axis.client.Call.invoke(Call.java:1812)

u  解决方案

由于共享库里的xmlbeans-2.3.0.jarwebsphere内部包冲突,去掉该jar包,重启server。重启完以后发现还是不管用,此时尝试一下卸载程序包,清除Websphere的所有缓存,然后重新部署。一定要清除所有的缓存,删除掉tempwastemp,保险起见,最后用find命令找一下残留文件,全部删除,websphere只要有缓存,就容易出问题,在这一点上真是吃了不少的亏了……

4.    问题补充

除了上一个项目遇到的问题外,之前项目也遇到几个问题,较为简单,在此也作一下总结

4.1.             问题1:项目中文件编码乱码

检查系统默认的环境变量和字符集编码,同时可以设定server Java虚拟机的字符编码,当然前提是要保证系统装了汉语字符集(特别是一些linux环境)。

4.2.             问题2:项目中运行过程中,频繁出现数据库连接数不足或者是一段时间后系统内存溢出

连接数不足,设置数据库连接池的最大连接数,websphere默认的一般都比较小,最大连接数5个,在管理界面设置即可: Data sources > dbcpas > Connection pools

内存溢出,应该是项目程序的问题了,检查代码的数据库连接是否有没有关闭的;检查代码是否有内存使用不合理的,可以使用内存诊断工具JProfiler调试

4.3.             问题3:服务调用超时

一般可能有webservicesejb调用超时,有些程序的处理时间比较的长,可以根据情况设置websphere的默认处理时间:

l  EJB调用参数设置

Server-EJB Container Settings

Server-Container Services-ORB service

l  设置事务的超时时间

Server-Container Services-Transaction service

5.    总结

总的来说,Websphere服务器是一个功能强大而且复杂的服务器(复杂过头了),如果要使用,最好要对它了解的比较深刻,要随时准备解决未知的问题,不到不得已尽量少用吧(客户终于决定减少使用IBM的产品了)。

Websphere服务器最恶心的一点就是缓存,可能你卸载完了其实还隐藏着很多的缓存文件,当出现问题时,记得find一下,删掉所有的缓存文件,从头再来又是漫长的折磨

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值