我有一个正在尝试移植到 Java EE 的遗留应用程序。目前此应用程序调用 URL.setURLStreamHandlerFactory() 来注册一些自定义 URL 协议处理程序。这个调用在 Glassfish v 2.1 和 3 下失败,因为 glassfish 已经注册了一个工厂。
我尝试使用 java.protocol.handler.pkgs 系统属性,但由于类加载器问题,这对我不起作用。处理程序类都是应用程序的一部分,我并不热衷于尝试提取它们并将 jar 放入容器的类路径中。
我有一点 osgi 包的味道——显然我可以编写一个处理新协议的包。我并不热衷于将这个 Web 应用程序作为 osgi 包(一次一步!首先是 EE,如果需要,然后是 osgi)。
是否可以将捆绑 jar 弹出到我的 WEB-INF/lib 目录并让 Glassfish 将其作为捆绑加载?捆绑包需要从 Web 应用程序(WEB-INF/lib 或 WEB-INF/classes 中的另一个 jar)导入包。如果可以的话,我愿意将此应用程序打包为 EAR,但我无法证明在不了解更多信息的情况下将整个应用程序进行 osgize 是合理的。