0

我有一个大型代码库,目前在嵌入式 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“代码”而没有完全重新考虑。

这里的主要目标是最终运行最新的软件,尽管不一定一步到位。

4

1 回答 1

1

Jetty5 在这一点上已经非常老了,我建议对 jetty8 进行更新,或者等待几个月并跳转到我们目前正在发布里程碑的 jetty9。仅从那时起更新 jvm 的更改就足以更新您的码头容器。

我不知道 jetty5 是否支持这种方法,但在 jetty6 中,我们可以在 webapp 上下文中修改通过系统和服务器类暴露给上下文的类。如果存在这些钩子,那么您应该能够调整该特定上下文以不暴露 ext/lib 中 jar 中的类。

于 2012-10-05T14:25:15.150 回答