【发布时间】:2015-06-21 06:40:00
【问题描述】:
我正在使用 Jersey 2 在 IBM WebSphere 8.5 环境中实现 JAR-RS 2.0。
在阅读了这篇 JAX-RS Jersey 2.10 support in Websphere 8 的帖子后,我设法让它工作了。
但是,是否可以在 WAR 中捆绑 JAX-RS Jars 并部署应用程序而无需创建独立的共享库?如果这是不可能的,有人可以解释为什么会这样吗?
我了解将 Jars 放在库中的部署时间优势,但我更愿意将包括依赖项在内的整个应用程序构建到单个 WAR 中。
-- 编辑--
如果您更改类加载顺序,您似乎可以从 WAR 中加载 JAX-RS jar。您需要更改顺序以最后加载父类。这可以按如下方式完成;
在管理控制台中:
应用程序 -> WebSphere 企业应用程序 -> {your.application} -> 管理模块 -> {your.module}
将类加载器顺序下拉菜单更改为:“首先使用本地类加载器加载的类(最后是父类)”。
然而,这表明附加的 Stackoverflow 文章中缺少一些 JVM 属性。
谁能解释一下情况?
【问题讨论】:
-
看起来你是对的,在
Module level上设置Parent Last并设置com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=true允许在没有隔离共享库的情况下使用Jersey。我会更新你提到的那个帖子。 -
在 AS 级别设置 com.ibm.websphere.jaxrs.server.DisableIBMJAXRSEngine=true 属性并在模块中设置 parent_last 类加载器后,在应用程序启动过程中出现以下错误:原因:java .util.ServiceConfigurationError: javax.servlet.ServletContainerInitializer: Provider org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer 不是 java.util.ServiceLoader.fail(ServiceLoader.java:250) 的子类型在 java.util.ServiceLoader.access$300 (ServiceLoader.java:196) 在 java.util.ServiceLoader$LazyIterator.nextService
标签: rest jakarta-ee jax-rs jersey-2.0 websphere-8