Mar*_*fin 4 weblogic jax-rs jersey 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”jar 中。然后将 API jar 部署到基本上两个不同的上下文:服务和客户端。该服务提供 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扫描?
据我所知,从 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
Run Code Online (Sandbox Code Playgroud)
weblogic 便携式服务器由hk2依赖注入系统激活,它将 jersey 作为 OSGI 包加载并激活它
| 归档时间: |
|
| 查看次数: |
2283 次 |
| 最近记录: |