gpt4 book ai didi

jersey - 在 WebLogic 12c/Jersey 上禁用 JAX-RS 资源的自动注册

转载 作者:行者123 更新时间:2023-12-04 01:55:21 25 4
gpt4 key购买 nike

WebLogic 12c 包含一个默认 JAX-RS 资源 (https://docs.oracle.com/cd/E24329_01/web.1211/e24983/configure.htm#RESTF191),它将所有使用 JAX-RS 注释注释的类注册为资源。

我使用 Jersey 代理客户端 ( http://blog.alutam.com/2012/05/04/proxy-client-on-top-of-jax-rs-2-0-client-api/ ),所以我的接口(interface)类具有所有 JAX-RS 注释并打包在它们自己的“API”jar 中。然后将 API jar 部署到基本上两个不同的上下文:服务和客户端。该服务提供 API 的实现,它是实际的业务逻辑,并作为 JAX-RS Web 服务公开。客户端只是服务的消费者,API jar 中服务接口(interface)的实现是 Jersey 代理客户端。

不幸的是,WebLogic 12c 在这里给我带来了两个问题:

1)它会自动注册我的 API jar 中的所有资源,并将它们作为来自客户端应用程序的 Web 服务公开(实现是(现在字面上的)代理客户端)!这是非常无意的。

2) 有时我想使用 API 中的类而不实际使用服务,所以我什至不提供接口(interface)的实现。这应该没问题,但是因为 WebLogic 正在尝试自动加载 API 资源,但没有找到带注释接口(interface)的实现,所以它拒绝部署 war 。

我可以使用 web.xml 中的安全策略或奇怪的 jax-rs 配置来解决问题 1,但这并不能解决问题 2。最好的解决方案是关闭 WebLogic 中的默认资源,但我找不到这样做的任何文件。

有什么方法可以关闭 WebLogic 中的默认资源或关闭自动 Jersey 扫描?

最佳答案

据我所知,从 weblogic 12.2.1.3 中删除这些文件会完全删除 jersey 的启动和扫描类路径中的注释:

wlserver/modules/weblogic.jaxrs.integration.jar
oracle_common/modules/com.sun.jersey.jersey-core.jar
oracle_common/modules/weblogic.jaxrs.portable.server.jar

weblogic 可移植服务器由 hk2 激活。依赖注入(inject)系统,它将 Jersey 作为 OSGI 包加载并激活它

关于jersey - 在 WebLogic 12c/Jersey 上禁用 JAX-RS 资源的自动注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50950463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com