WAS(Websphere) 7升级到8.5遇到的头疼Verify Error问题

来源:互联网 发布:淘宝卖守门员手套 编辑:程序博客网 时间:2024/06/08 09:46

从Java6升级到Java7最痛恨的问题相信就是Java Verify Error了。Java7中加强了Class文件的安全性检查,结果系统上来一大堆的Verify Error。在这里说说我们系统中遇到哪些Verify Error,以及都是如何解决的:
第一种是Unit Test相关的Verify Error,由mock引起的。这里又分两种情况
1. 是由于Javassit的版本太低,导致mock class不符合Verify规范。这种可以简单通过升级javassit包版本就可以解决。可以到javassit的jira查看具体release fix的问题:https://issues.jboss.org/projects/JASSIST/versions/12320598
2. JDK bug,http://stackoverflow.com/questions/25428317/bad-init-method-call-from-inside-of-a-branch,OpenJDK最起码要7u75版本以后才没有问题。

第二种折腾了我好久麻烦的是我遇到的openjpa enhanced entity class verify error。这个错误非常的奇葩,openjpa是was8.5官方支持的jpa2.0 library。无论如何都不应该出现这个错误。这个问题却出现了我们的系统从WAS7迁移到WAS8.5上面。在本地的websphere没有问题,在服务器上一直报verify error。折腾了一个多礼拜,最后才发现这个问题是因为infrastructure team在Websphere环境中加入了他们自己的monitor系统introscope, 2个java instrument jar有冲突导致的,具体可以参考:https://docops.ca.com/ca-apm/10/en/ca-apm-release-notes/known-issues/third-party-known-issues#Third-PartyKnownIssues-Defect266900-IssuewithIntroscopeMonitoringOpenJPAbasedApplicationonJava7
这个坑要引以为戒,bytecode instrument很好,不过在java7之后要用好,一定要小心,特别是有多个instrument package的时候。

0 0