当前位置: 首页 > 知识库问答 >
问题:

Websphere 7类加载器差异

衡安晏
2023-03-14

我最近试图解决我们的Web应用程序中的类转换异常。经过几次测试后发现,在应用程序服务器重新启动后立即使用的 Web 应用程序的类装入器信息与 webapp 重新启动/更新(无需应用服务器重新启动)后的类装入器信息不同。

使用管理模块-查看模块类加载器-在Webphere管理控制台中导出来检索类加载器信息。

导出的XML中的项(指向webapp.jar文件的路径)是相同的。但有些项目(据我所知,这些是webapps类加载器中的类)是不同的。

有人能解释为什么吗?

谢谢。

更新:这里的差异可能是主要问题(我在日志文件中不断获得XMLSignatureFactory上的ClassCastException)。此类包含在xmlsec库中,该库与我们的webapp war文件一起部署。类加载器顺序设置为PARENT-LAST,但有时似乎加载了来自IBM JDK的XMLSignatureFactory,而不是xmlsec实现(重新部署后)。

我在这篇文章中进一步描述了这个例外。在我更改清单中的设置之后。MF文件并设置servlet监听器,我可以在每次重启后让应用程序工作,但重新部署问题仍然存在(这很烦人)。

共有1个答案

马祺
2023-03-14

我也有同样的问题。要解决这个问题,将xmlsec jar推送到AppServer\classes,然后我们可以用我们的库覆盖IBM JDK

 类似资料:
  • 框架中所有的类都是通过类加载器(ClassLoader)加载的,通过Loader我们可以实现类的统一管理。下面我们一起来看看Loader提供了哪些加载方法: 1. Loader::import 加载一个类或者加载一个包 方法原型 import( $classPath, $type = IMPORT_APP, $extension=EXT_PHP ) 参数名称 参数说明 $classPath 文件的

  • 加载器,顾名思义,是用于加载元素的,加载的元素可以是库(类),视图文件 , 驱动器 ,辅助函数 , 模型 或其他你自己的文件。 注解 该类由系统自动加载,你无需手工加载。 应用程序"包" 包的视图文件 类参考 应用程序"包" 应用程序包(Package)可以很便捷的将你的应用部署在一个独立的目录中, 以实现自己整套的类库,模型,辅助函数,配置,文件和语言包。 建议将这些应用程序包放置在 appli

  • 如果我有一个内部类声明,例如: 其次是: A$B内部类也会加载吗?如果B内部类没有被声明为“静态”呢?

  • 因此,我有一个类加载器加载一个类,如下所示: 类在运行时位于另一个jar中。以及是在主jar中生成的,然后我取消了它的归档,所以依赖项就在那里。 如何从外部访问其他依赖项。我加载的类文件? 例外情况:

  • 问题内容: 我们知道我们可以使用以下方法覆盖System 类加载器: 那么,既然它本身是一个类,它是由谁加载的? 我们如何获得该“元”类加载器的类文件? 问题答案: 从Javadoc中获取: 如果在首次调用此方法时定义了系统属性“ java.system.class.loader”,则该属性的值将作为要作为系统类加载器返回的类的名称。 该类使用默认的系统类加载器加载, 并且必须定义一个公共构造函数

  • 主要内容:1.类加载过程,2.类加载时机,3.类加载器,4.类加载机制:当程序主动使用某个类时,如果该类还未被加载到内存中,则JVM会通过加载、连接、初始化3个步骤来对该类进行初始化。如果没有意外,JVM将会连续完成3个步骤,所以有时也把这个3个步骤统称为类加载或类初始化。 1.类加载过程 1.1加载 加载指的是将类的class文件读入到内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Cl