我有一个大型代码库,目前在嵌入式Jetty 5.1.14服务器(Servlet 2.4)上的JSF 1.1上运行。我已经设法在这个版本的Jetty上运行了一个JSF 2.0.9应用程序,即使我预计需要servlet 2.5,我添加EL 2.1.2& JSF jar到WEB-INF / lib。这适用于排除JSF 1.1的jetty配置。
生产环境由单个服务器实例上的大量war和jar文件组成。
JSF 1.1目前在服务器的ext / lib文件夹中,在单个war文件中我想在WEB-INF / lib中包含JSF 2 jar。这是不可能的,因为服务器JSF版本将首先加载并导致类路径污染。
然而,是否可以使用自定义类加载器消除一个war文件中的JSF 1.1 jar加载?该文档似乎迎合了向类路径添加路径而不是排除事物的情况。我不清楚它是作为一个整体加载在服务器的上下文中还是仅仅是战争。
更多信息:另一个可能的解决方案是简单地升级到Jetty 8和JSF 2.1+。除了让管理层相信这是一个好主意之外,我们使用旧的WebMethods7版本,它有一个图形布局工具,可以生成一些由组件应用程序框架翻译的XML,它使用JSF API生成内容(所以只有一个非常很少的JSP)。这只是一个看是否有效的情况,如果没有重新考虑,因为需要继续支持这个WebMethods“代码”。
这里的主要目标是最终运行最新软件,但不一定是一步到位。
答案 0 :(得分:1)
Jetty5在这一点上已经非常老了,我建议对jetty8进行更新,或者等待几个月并跳转到jetty9,我们目前正在发布里程碑。从那时起,更新的jvm的变化是更新你的码头容器的充分理由。
我不知道jetty5是否支持这种方法,但是在jetty6中我们有能力在webapp上下文中修改通过系统和服务器类暴露给上下文的类。如果这些钩子存在,那么你应该能够调整那个特定的上下文,不要在ext / lib中暴露jar中的类。