我如何在 WebSphere 中公开另一个被 TLD 文件引用的 WAR 中的 class

How do I expose a class from one WAR being referenced by TLD file in another in WebSphere

当我 运行 在本地使用 WebSphere 时,我收到 "Failed to open resource" 警告,因为我的 app.tld 文件中的条目引用了另一个 WAR 中的基础 class ] 在同一个 EAR 中。

我无法控制部署,因此压缩这些 class 文件对我来说不是一个好的解决方案。我能想到的唯一其他可行的解决方案是在我的 WAR 中创建一个 subclass,但由于我们的源代码控制,我将不得不手动检查所有 subclasses当基础 class 改变时。

我也试过 classloader 设置,但也不走运。有什么 suggestions/best 处理这种情况的做法吗?

最佳实践是将共享 classes 放在 EAR 的 lib 目录中的 JAR 中。下一个最佳选择是将 JAR 复制到两个 WAR 中。我要考虑的最后一个选项是将应用程序 class 加载程序策略更改为 "Application" 而不是默认的 "Module" 以便使用相同的 class 加载程序加载所有 WAR。有关详细信息,请参阅知识中心的 Class loaders 主题。