解决PJA错误
问题背景:
今日遇到客户反馈的一个问题,反馈内容如下:
现场有WAS5、6,均安装在AIX下,且都已经设置PJA,在WAS5上报表正常,但是在WAS6下报表会报错,两个应用下的配置均相同。
反馈的报错日志:
[11-4-25 14:20:42:758 GMT+08:00] 0000002a WebApp [Servlet Error]-[com_icss_rqtool_app_province_servlet_AppReportServlet]: java.lang.AbstractMethodError: sun/java2d/SunGraphicsEnvironment.createFontConfiguration()Lsun/awt/FontConfiguration;
问题解决方案:
错误原因分析:
根据客户反馈的信息,初步判断,这个可能是因为字体原因引起的错误,并且客户反馈这两个应用服务器的软件配置均相同,那么差别可能在于WAS5使用JDK1.4而WAS6使用JDK1.5,基于上面两点原因,我们有理由怀疑问题出现在JDK的版本差别上。
经过与之前接手该项目的售后确认,该客户使用了润乾的PJA方案,并且使用的PJA版本为2.5。
解决方案:
在网上查找了一些类似错误信息,终于有点眉目了,在国外的一个论坛中找到了一些原因解释,如下:
目前已经使用的渲染图像的PJA工具包的最新版本(2.5)是针对JDK 1.4.2版本的开源插件,没有问题。JDK 由1.4.x versions升级至JDK 1.5版本,由于升级,原有JDK1.4方法不能再渲染图像,现在生成以下AbstractMethodError消息;“JDK 1.5中现在有一个概念“字体配置“(而不是只是“在JDK 1.4.x的字体属性“)在java.awt.SunGraphicsEnvironment,他们已经增加了两个新的抽象方法重写。该版PJA实现了在PJAGraphicsEnvironment后一种方法。现在的JDK 1.5已经成为成为一个内部类的PropertiesHandler这本身就是一个新的静态内部类FontProperties FontConfiguration类。
综上所述,也就是JDK的升级导致原有的类方法改变了,但是与JDK1.4版本对应的PJA2.5 PJAGraphicsEnvironment方法需要createFontConfiguration实现,所以找到相应与JDK1.5对应的开源PJA版本即可。
在网上下载最新的PJA包,给客户更新,经过测试,该问题解决。