我有一个大型代码库,目前在嵌入式 Jetty 5.1.14 服务器(Servlet 2.4)上的 JSF 1.1 上运行。尽管我预计需要 servlet 2.5,但我已经设法让 JSF 2.0.9 应用程序在此版本的 Jetty 上运行,并且我将 EL 2.1.2 和 JSF jar 添加到 WEB-INF/lib。这适用于不包括 JSF 1.1 的码头配置。
生产环境由单个服务器实例上的大量 war 和 jar 文件组成。
JSF 1.1 当前位于服务器 ext/lib 文件夹中,在单个 war 文件中,我想将 JSF 2 jar 包含在 WEB-INF/lib 中。这是不可能的,因为服务器 JSF 版本将首先加载并导致类路径污染。
但是,是否可以使用自定义类加载器仅在一个 war 文件中消除 JSF 1.1 jar 加载?该文档似乎迎合了将路径添加到类路径而不是排除事物的情况。我不清楚它是在整个服务器的上下文中加载还是只是在战争中加载。
更多信息:另一个潜在的解决方案是简单地升级到 Jetty 8 和 JSF 2.1+。除了让管理层相信这是个好主意之外,我们使用旧的 WebMethods7 版本,它有一个图形布局工具,可以生成一些由组件应用程序框架翻译的 XML,它使用 JSF API 来生成内容(所以只有一个非常很少的 JSP)。这只是一个看看它是否有效的例子,如果因为需要继续支持这个 WebMethods“代码”而没有完全重新考虑。
这里的主要目标是最终运行最新的软件,尽管不一定一步到位。