`
wenlongsust
  • 浏览: 71748 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

记一个神奇的WAS问题:sibuswsgw-sibuswsgw_console.jar invalid LOC header (bad signature)

 
阅读更多

今天晚上,出现了一个神奇的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遍的……

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics