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

时间:2018-06-20 14:21:16

标签: jersey jax-rs weblogic jersey-client

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”罐中。然后将API jar部署到基本上两个不同的上下文:服务和客户端。该服务提供了API的实现,该API是实际的业务逻辑,并作为JAX-RS Web服务公开。客户端只是服务的使用者,API jar中服务接口的实现是Jersey代理客户端。

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

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

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

我可以在Web.xml中解决有关安全策略或奇怪的jax-rs配置的问题1,但这不能解决问题2。最好的解决方案是关闭WebLogic中的默认资源,但是我可以找不到任何相关文档。

是否可以关闭WebLogic中的默认资源或关闭自动Jersey扫描?

1 个答案:

答案 0 :(得分:1)

据我所知,从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

hk2依赖项注入系统激活了weblogic便携式服务器,该系统将球衣作为OSGI捆绑软件加载并激活