2012-10-04 32 views
0

我有一个目前在嵌入式Jetty 5.1.14服务器(Servlet 2.4)上运行于JSF 1.1的大型代码库。我已经成功地在这个版本的Jetty上运行了JSF 2.0.9应用程序,尽管我期望需要servlet 2.5,并且将JSF jar的EL 2.1.2 &添加到WEB-INF/lib。这适用于排除JSF 1.1的jetty配置。jetty 5自定义类加载器可以排除特定的jar文件吗?

生产环境由单个服务器实例上的大量war和jar文件组成。

JSF 1.1当前位于服务器的ext/lib文件夹中,并且在单个war文件中,我想将JSF 2 jar包含在WEB-INF/lib中。这是不可能的,因为服务器JSF版本将首先加载并导致类路径污染。

然而,有可能通过自定义类加载器来消除JSF 1.1 jar加载在一个war文件中的问题吗?该文档似乎迎合了向类路径添加路径而不是排除事物的情况。我不清楚它是作为一个整体加载在服务器上还是仅仅是战争。

更多信息:另一个可能的解决方案是简单升级到Jetty 8和JSF 2.1+。除了让管理层相信这是一个好主意之外,我们还使用旧的WebMethods7版本,它有一个图形布局工具,可以生成一些由组件应用程序框架翻译的XML,该框架使用JSF API生成内容(所以只有一个很少的JSP)。这只是一个看看它是否有效的案例,并且如果没有全面的反思,因为需要继续支持这个WebMethods“代码”。

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

回答

1

Jetty5在这一点上令人难以置信的老,我建议工作更新jetty8,或等待几个月,并跳转到目前我们正在发布里程碑的jetty9。从那时起,更新的jvm的更改就足以更新您的码头容器。

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

+0

感谢您的回复。请你能给我一个指向你引用的系统和服务器类的指针。谢谢。 – Oversteer

+0

http://wiki.eclipse.org/Jetty/Reference/Jetty_Classloading-这是我知道存在于6-9的概念,你将不得不在5号码头徘徊,看看它是否存在。 –

相关问题