首页 文章

Oracle Service Bus(OSB)中的通配符 endpoints URI

提问于
浏览
1

我是OSB的新手,并尝试创建一个代理服务,它接受通配符作为它的请求 endpoints URI,并且使用动态路由调用业务服务 .

例如,代理服务应该接受 - /someservice/wildcard1/service 以及 /someservice/wildcard2/service ,并且应该能够分别使用动态路由调用一个业务服务http://businessip:port/someservice/wildcard1/servicehttp://businessip:port/someservice/wildcard2/service .

2 回答

  • 1

    没有OSB OOTB功能可以在两个不同的 endpoints URI下公开一个代理服务工件 . 您尝试实现的最接近的解决方法是使用URI的查询部分 . 更详细地说,您需要在URI的查询部分调用您的服务提供通配符:

    /someservice/service?wildcard=1
    /someservice/service?wildcard=2
    

    然后在请求管道中,您将从上下文变量$ inbound / ctx:transport / ctx:request / http:query-parameters / http:parameter [@ name =“wildcard”] / @ value中提取外卡值,并将其用于:

    • 覆盖负责出站的上下文变量
      URI($ outbound / ctx:transport / ctx:uri)和到BusinessService的路由

    • 在动态路由中构建服务路径

  • 1

    这不是完美的答案,但我读了一篇关于使用OSB创建RESTful接口的非常有趣的文章:http://www.oracle.com/technetwork/articles/soa/architecting-restful-services-083025.html

    这可能在某种程度上适用于您遇到的问题,因为该文章有一种方法来分离部分URI路径,然后将其用作另一个代理服务的路由层 .

    也就是说,随着这个问题变得越来越大,您可能会遇到一些问题,因为每次需要根据此架构更改,添加或删除新 endpoints 时,您都必须更新此代理,因此您可能需要重新审视我正在使用这项服务,或者至少确保你所投入的工作是一件又一件事,以免你的代理服务上出现20或50个单独的分支 .

相关问题