首页 > 解决方案 > 如何在 Spring Boot 中访问 TomcatEmbeddedWebappClassLoader

问题描述

我正在使用 jar 客户端连接到一个非常古老的 EJB2.1 应用程序,例如 2006 年。我已经构建了一个使用这个 jar 客户端并调用它的外观方法的 spring boot 2 应用程序。当客户端的一个方法调用正常而另一个方法调用失败时,我遇到了非常奇怪的行为java.io.StreamCorruptedException: invalid type code: 00。我发现一个有效是因为它是从控制器(不是直接)执行的,而第二个是因为它是通过 JMS 消息调用的。现在 JMS 消息调用使用上下文 classloader 运行(线程)sun.misc.Launcher$AppClassLoader,而 MVC 使用TomcatEmbeddedWebappClassLoader(具有 parent sun.misc.Launcher$AppClassLoader)运行。由于这是一个非常老的客户端的包装器,我想我可以在 JMS 调用中交换类加载器。

但是(这是实际问题)有没有办法TomcatEmbeddedWebappClassLoader在 spring 上下文初始化期间访问我的应用程序,以便我也可以从我的 JMS 调用中设置它?

标签: springspring-boottomcatclassloader

解决方案


推荐阅读