记一个神奇的WAS问题:sibuswsgw-sibuswsgw_console.jar invalid LOC header (bad signature) 分类: WebSphere 2015-08-06 23:21 9人阅读 评论(0) 收藏
今天晚上,出现了一个神奇的WAS问题,详细问题异常信息如下:
[15-8-6 22:13:29:146 CST] 00000013 ApplicationMg A WSVR0203I: 应用程序:isclite 应用程序构建级别:WAS61.WSC [cf471333.01]
[15-8-6 22:13:32:266 CST] 00000013 CompoundClass E WSVR0120E: 处理 E:\IBM\WebSphere\AppServer\systemApps\isclite.ear\isclite.war\WEB-INF\lib\sibuswsgw-sibuswsgw_console.jar 时发生错误
java.lang.InternalError: jzentry == 0,
jzfile = 196639408,
total = 80,
name = E:\IBM\WebSphere\AppServer\systemApps\isclite.ear\isclite.war\WEB-INF\lib\sibuswsgw-sibuswsgw_console.jar,
i = 6,
message = invalid LOC header (bad signature)
at java.util.zip.ZipFile$4.nextElement(ZipFile.java:531)
at java.util.zip.ZipFile$4.nextElement(ZipFile.java:517)
at java.util.jar.JarFile$1.nextElement(JarFile.java:305)
at java.util.jar.JarFile$1.nextElement(JarFile.java:304)
at com.ibm.ws.classloader.SinglePathClassProvider.buildContentsCache(SinglePathClassProvider.java:598)
at com.ibm.ws.classloader.SinglePathClassProvider.<init>(SinglePathClassProvider.java:114)
at com.ibm.ws.classloader.SinglePathClassProvider.create(SinglePathClassProvider.java:141)
at com.ibm.ws.classloader.CompoundClassLoader.addPaths(CompoundClassLoader.java:251)
at com.ibm.ws.classloader.ReloadableClassLoader.createLoader(ReloadableClassLoader.java:108)
at com.ibm.ws.classloader.JarClassLoader.<init>(JarClassLoader.java:53)
at com.ibm.ws.classloader.ClassGraph.processWARModule(ClassGraph.java:375)
at com.ibm.ws.classloader.ClassGraph.createClassLoaders(ClassGraph.java:487)
at com.ibm.ws.classloader.ClassGraph.calculate(ClassGraph.java:247)
at com.ibm.ws.classloader.ClassLoaderManager.initialize(ClassLoaderManager.java:225)
at com.ibm.ws.classloader.ClassLoaderManager.<init>(ClassLoaderManager.java:176)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:761)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:945)
at com.ibm.ws.runtime.component.ApplicationMgrImpl$AppInitializer.run(ApplicationMgrImpl.java:2120)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:342)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1595)
问题现象描述:WAS的控制台无法正常登录,无论是访问9060,还是9043的网址,都提示找不到xxx.jsp,甚至连logonError.jsp也找不到,是不是挺奇怪的?还有奇怪的是,应用程序竟然还是可以正常访问的,说明控制台是出问题了。
invalid LOC header (bad signature),咋一看,还以为是WAS授权到期了呢
之前很早就听说WAS有试用期的问题,于是,网上搜罗了一番,找到如下的试用期过期异常:
WSVR0025I: Creating temporary product license
WSVR0027I: The product will expire in 60 days.
ADMU0116I: Tool information is being logged in file
/usr/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/start
Server.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server server1 open for e-business; process id is 13756
貌似和我遇到的问题孑然不同,网上也搜不到任何关于sibuswsgw-sibuswsgw_console.jar文件的线索。那么,好吧,好奇心驱使我想弄个明白,于是晚上的业余时间就开始往里搭了
首先,这台服务器上的WebSphere安装了两个AppSrv节点,既然AppSrv01启动失败,那我就试试AppSrv02吧
其实遇到这个问题,也并非纯属巧合,事情的经过是这样的,晚上闲来无事,我登录AppSrv01控制台修改了一些参数设置,具体哪些我还真没详细记录,根据经验能修改的我都扒拉了一遍全部改了,这不一定算是功劳,但肯定不能算恶意搞破坏。
正当我兴致勃勃准备迎接飞奔的AppSrv01时,杯具出现了,重启之后控制台进不去了,各种500,提示找不到logon.jsp,甚至找不到logonError.jsp,这些都是WAS自带的程序,怎么会无缘无故丢了呢,我修改的参数怎么想也不会影响到这里啊
越想越奇怪,但是我修改参数之前的确又都是可以的,无论是控制台,还是应用程序,都是可以正常访问的。并且从时间上来看,晚上22点之后了,该下班的、不该下班的早都下班了,除了我自己,估计是没有第2个人来捣鼓了
一般遇到问题,首先想到的是度娘,如果她帮不到我,再找谷哥,如果还是不行,就只能拍自己脑袋了
既然是在我修改参数之后出现的问题,也有可能是修改的时候出现了手误,如果真的是这样,恢复参数就可以解决问题。于是,我把WAS相关的配置文件都检查了一遍,但是发现常用的那些参数值都没有问题,看来这条路是走不通了
WAS有个很好的设计,日志系统比较完善,除了问题应该是会有日志的吧。
查看了server和ffdc的日志,的确找到一些线索,关键的invalid LOC header (bad signature),网上虽然没有说WAS相关的问题,但很多和Maven相关的,大体意思就是文件被破坏了,日志里也是有大量java.util.zip.ZipFile的异常,大差不离啊
文件被破坏了,那就去看看sibuswsgw-sibuswsgw_console.jar文件吧,显示日期和WAS安装日期完全一样,肉眼看不出来是被人工替换还是被恶意程序篡改,既然这样,那就从别的服务器找一个同名文件替换了试试吧
找了同名的sibuswsgw-sibuswsgw_console.jar文件替换,重启AppSrv01之后,控制台就可以正常访问了。
问题解决之后,写下这篇文章,备忘,备忘,备忘,重要的事情要说3遍的……
版权声明:本文为博主原创文章,未经博主允许不得转载。