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

时间:2016-10-13 06:04:03

标签: oracle osb

我是OSB的新手,并尝试创建一个接受通配符的代理服务,因为它的请求端点URI和inturn通过动态路由调用业务服务。

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

2 个答案:

答案 0 :(得分:1)

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

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

然后在请求管道中,您将从上下文变量中提取通配符值     $呼入/ CTX:传输/ CTX:请求/ HTTP:查询参数/ HTTP:参数[@名称= “通配符”] / @值 并用它来:

  1. 覆盖负责出站的上下文变量 URI($ outbound / ctx:transport / ctx:uri)和到BusinessService的路由
  2. 在动态路由中构建服务路径

答案 1 :(得分:1)

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

这可能会对您遇到的问题有所帮助,因为该文章有一种方法来分离部分URI路径,然后将其用作另一个代理服务的路由层。

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