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



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/(,所以我的接口类具有所有 JAX-RS 注释,并打包在它们自己的"API"jar 中。然后,API jar 基本上部署到两个不同的上下文:服务和客户端。该服务提供 API 的实现,该实现是实际的业务逻辑,并作为 JAX-RS Web 服务公开。客户端只是服务的使用者,API jar 中服务接口的实现是泽西岛代理客户端。

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

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

2(有时我想使用API中的类而不实际使用服务,所以我甚至不提供接口的实现。这应该没问题,但由于 WebLogic 尝试自动加载 API 资源,但没有找到带注释的接口的实现,因此它拒绝部署战争。

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

有没有办法关闭 WebLogic 中的默认资源或关闭自动泽西扫描?

据我所知,从 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 依赖注入系统激活,该系统将 jersey 作为 OSGI 捆绑包加载并激活它

最新更新