Java Websphere类加载配置文件重启verus应用程序重启

Java Websphere类加载配置文件重启verus应用程序重启,java,websphere,Java,Websphere,有人能告诉我,当一个概要文件重新启动时,Websphere在类加载方面是否与该概要文件中的应用程序重新启动时有什么不同吗 我正在处理一个针对Java 8编译的大型企业应用程序,它的\WEB-INF\lib文件夹中有250多个第三方JAR文件,并且在Websphere 9.0.0.2上遇到了不同的行为(构建号:cf021645.01构建日期:11/8/16)当我重新启动配置文件时,应用程序一切正常,但在第三方JAR代码中,每当应用程序本身随后重新启动时,它就会出现与类加载相关的错误 我已经查看了类

有人能告诉我,当一个概要文件重新启动时,Websphere在类加载方面是否与该概要文件中的应用程序重新启动时有什么不同吗

我正在处理一个针对Java 8编译的大型企业应用程序,它的\WEB-INF\lib文件夹中有250多个第三方JAR文件,并且在Websphere 9.0.0.2上遇到了不同的行为(构建号:cf021645.01构建日期:11/8/16)当我重新启动配置文件时,应用程序一切正常,但在第三方JAR代码中,每当应用程序本身随后重新启动时,它就会出现与类加载相关的错误

我已经查看了类装入器查看器,打开了详细的类装入,并配置了一个诊断跟踪,在我看来,所有内容都被正确装入。我使用同一版本的Websphere在不同的概要文件中部署了同一应用程序的两个实例,两者之间的行为是一致的,重新启动概要文件和应用程序都是好的,但是重新启动应用程序,事情就变糟了

我们最近才开始在WebSphere9上部署我们的应用程序,在此之前,我们正在部署一个针对Java6编译到WebSphere7的版本,没有任何问题。由于我们的依赖关系管理(或缺乏依赖关系管理)需要一些工作,所以正在使用的一些第三方JAR非常陈旧,但在这个阶段,我不愿意开始可能成为更新库的重要任务的工作,因为应用程序在一种情况下运行良好,但在另一种情况下运行不好

新增更多信息:

下面是我在应用程序重新启动后遇到的错误类型的示例。在这个特定的例子中,我运行一些应用程序代码,从文件系统读取Word文档,并将其传递给第三方PDF生成库,因此执行从本地代码进入PDF生成库,然后进入imageio。我并不总是遇到同样的错误,有时在另一个应用程序重新启动后(使其深入到imageio代码中)在不同的点失败,但imageio似乎总是导致问题

原因:java.lang.NoClassDefFoundError:it/geosolutions/imageio/plugins/arcgrid/raster/AsciGridRaster$AsciGridRasterType 在it.geosolutions.imageio.plugins.arcgrid.spi.AsciiGridsImageReaderSpi.canDecodeInput(AsciiGridsImageReaderSpi.java:216) 在javax.imageio.imageio$CanDecodeInputFilter.filter(imageio.java:578) 位于javax.imageio.spi.FilterInterator.advance(ServiceRegistry.java:832) 位于javax.imageio.spi.FilterInterator。(ServiceRegistry.java:826) 位于javax.imageio.spi.ServiceRegistry.getServiceProviders(ServiceRegistry.java:527) 在javax.imageio.imageio.getImageReaders(imageio.java:657) 在javax.imageio.imageio.read(imageio.java:1449) 在javax.imageio.imageio.read(imageio.java:1363)

据我所见,我们似乎根本没有使用任何共享库

在之前对我的问题的调查中,我确实在这里偶然发现了这个问题,我可以确认我们已经在做第1点(显式调用ImageIO.scanForPlugins(),我们是作为在应用程序启动时执行的servlet的一部分来做的),并且我还配置了第2点(使用系统属性com.ibm.ws.runtime.component.disableMemoryLeakService=true在服务器中禁用类加载器泄漏预防)以尝试诊断我的问题。但我没有尝试第3点,因为这似乎是最后的手段

关于imageio,我们在应用程序中部署了以下JAR作为250+的一部分:

jai_编解码器
jai_imageio
jai_core
imageio-ext-arcgrid-1.1.10
imageio-ext-streams-1.1.10
imageio-ext-utilities-1.1.10

我不确定jai-JARs的确切版本,但会尽力找出答案


我们还部署了一大堆geotools JAR,有时在通过imageio执行之后会出现故障。所有这些geotools JAR都是2.4.0版,我知道它已经很旧了,我不确定它们现在在Java 8上运行的向后兼容性如何。尽管我认为geotools JAR在Websphere 7 Java 6上运行得很好ls 2.4.0与Java 1.4保持一致。同样,我不愿意在应用程序在一种情况下工作正常,而在另一种情况下工作正常的情况下开始更新库。

您能提供更多详细信息吗?错误消息是什么?您能发布堆栈跟踪吗?根据您的描述,听起来好像有什么东西挂起/泄漏。您是否使用了任何孤立的共享库或服务器共享库?仅重新启动应用程序将为新重新启动的应用程序创建新的类加载器,但其他类加载器将保留-并且这些其他类加载器之一中加载的类可能持有从应用程序加载的某个引用-泄漏加载器,但可能导致其他问题lems too.HTH,AndyThanks for response@AndyMcCright,作为一名对Websphere了解非常有限的开发人员,非常感谢您的帮助。我已经添加了一些更多信息,希望它能让您继续进行下去。