Weblogic 12.2.1.0.0 禁用默认基本 URI 模式值(资源)
Posted
技术标签:
【中文标题】Weblogic 12.2.1.0.0 禁用默认基本 URI 模式值(资源)【英文标题】:Weblogic 12.2.1.0.0 disable default base URI pattern value (resources) 【发布时间】:2019-05-15 12:55:35 【问题描述】:预申请:
-
WebLogic 服务器版本:12.2.1.0.0
已部署通用 Java Web 应用程序
开始使用 Jersey 客户端库
问题:
在 /resources/ URI 被(嵌入的)WebLogic JAX-RS/Jersey servlet 处理程序映射/处理之后。
WL 映射问题:
谷歌搜索显示了这个(非常相似):
Automatic Jax-RS registration in Weblogic 12.2.1 when adding eclipselink artifact和
https://docs.oracle.com/middleware/1221/wls/RESTF/deploy-restful-service.htm#RESTF191来自 Oracle 的文档:
*
...如果未指定,则使用以下值之一,按优先顺序排列:
@ApplicationPath 注释值定义在 javax.ws.rs.core.Application 子类中。
...
价值资源。这是 默认的基本 URI 模式 RESTful Web 服务应用程序。
...
如果
和 @ApplicationPath 都是 指定时, 优先。*
我根本不需要 REST 服务和默认映射 - 只想使用 仅泽西客户端。在尝试了不同的选项后,我没有成功解决任何问题。
在web.xml
中显式添加配置(对 JAX-RS 1.1 和 2.0 版本都进行了尝试),没有实现任何端点,只使用带有设置
web.xml
<!--WebLogic Jersey Configuration-->
<servlet>
<display-name>WL Jersey Configuration</display-name>
<servlet-name>jersey</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<!--<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>-->
<init-param>
<param-name>jersey.config.wls.server.monitoring.enabled</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey</servlet-name>
<url-pattern>/jersey/*</url-pattern>
</servlet-mapping>
另外更新了 weblogic.xml:
<wls:container-descriptor>
<wls:prefer-application-packages>
...
<wls:package-name>org.glassfish.*</wls:package-name>
<wls:package-name>com.sun.jersey.*</wls:package-name>
<wls:package-name>javax.ws.rs.*</wls:package-name>
</wls:prefer-application-packages>
</wls:container-descriptor>
它没有帮助。关于如何禁用/覆盖 WLS 12.2.1.0.0 的这个 default 行为的任何想法?或者也许我错过了或做错了什么?
【问题讨论】:
【参考方案1】:Taras 共享的解决方案运行良好,我必须添加以下依赖项:
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<version>2.27</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.27</version>
</dependency>
【讨论】:
【参考方案2】:更新。问题现已解决。
1. weblogic.xml 已更改:
<wls:container-descriptor>
<wls:prefer-application-packages>
<wls:package-name>antlr.*</wls:package-name>
<wls:package-name>javax.persistence.*</wls:package-name>
<wls:package-name>javax.validation.*</wls:package-name>
<wls:package-name>org.apache.commons.*</wls:package-name>
<wls:package-name>org.springframework.*</wls:package-name>
<wls:package-name>org.hibernate.*</wls:package-name>
<wls:package-name>ch.qos.*</wls:package-name>
<wls:package-name>org.slf4j.*</wls:package-name>
<!--Jax-RS-->
<wls:package-name>javax.ws.rs.*</wls:package-name>
<!--Jersey 2.0-->
<wls:package-name>org.glassfish.jersey.*</wls:package-name>
<wls:package-name>org.glassfish.hk2.*</wls:package-name>
<wls:package-name>org.jvnet.hk2.*</wls:package-name>
<wls:package-name>jersey.repackaged.org.objectweb.asm.*</wls:package-name>
<!-- wls -->
<wls:package-name>weblogic.jaxrs.api.client.*</wls:package-name>
<wls:package-name>weblogic.jaxrs.internal.api.client.*</wls:package-name>
<wls:package-name>weblogic.jaxrs.dispatch.*</wls:package-name>
<wls:package-name>weblogic.jaxrs.monitoring.util.*</wls:package-name>
</wls:prefer-application-packages>
<wls:prefer-application-resources>
<!-- apis -->
<wls:resource-name>javax.ws.rs.*</wls:resource-name>
<!-- jersey -->
<wls:resource-name>META-INF/services/org.glassfish.jersey.*</wls:resource-name>
<wls:resource-name>com.sun.jersey.*</wls:resource-name>
<wls:resource-name>org.glassfish.jersey.*</wls:resource-name>
<wls:resource-name>jersey.repackaged.*</wls:resource-name>
<!-- hk2 -->
<wls:resource-name>META-INF/services/org.glassfish.hk2.*</wls:resource-name>
<wls:resource-name>org.glassfish.hk2.*</wls:resource-name>
<wls:resource-name>org.jvnet.hk2.*</wls:resource-name>
<wls:resource-name>org.jvnet.hk2.tiger_types.*</wls:resource-name>
</wls:prefer-application-resources>
</wls:container-descriptor>
即:
在
<!--Jax-RS--> and below
<!--Jersey 2.0--> and below
<!-- wls --> and below
2。添加端点配置:
import org.glassfish.jersey.server.ResourceConfig;
public class JerseyApplication extends ResourceConfig
public JerseyApplication()
packages("path.to.the.package");
3.添加对 pom.xml 的依赖:
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
4. web.xml servlet 配置:
<!--WebLogic Jersey Configuration-->
<servlet>
<display-name>WL Jersey Configuration</display-name>
<servlet-name>jersey</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>path.to.the.JerseyApplication</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey</servlet-name>
<url-pattern>/jersey/*</url-pattern>
</servlet-mapping>
This link helped a lot
附:后来在 WLS 上使用 Jackson 2.X 库也得到了类似的修复(只是在
【讨论】:
我遇到了***.com/questions/44088493/… 建议的更改对我有用以上是关于Weblogic 12.2.1.0.0 禁用默认基本 URI 模式值(资源)的主要内容,如果未能解决你的问题,请参考以下文章
在WebLogic 12c / Jersey上禁用JAX-RS资源的自动注册