我有一个托管大量“服务”的环境,这些“服务”的输入和输出可以很容易地绑定到XML。我希望能够通过SOAP动态公开一个或多个服务。换句话说,用户必须能够将服务A和B组合到一个for服务中(并且可以选择配置操作的名称等)。
这意味着我需要能够动态地生成WSDL或至少部分WSDL(特别是可以从服务请求的XSD定义),并且我需要能够动态地创建和发布新的端点,这些端点都使用一个Provider类,这个类(基于上下文和其他内容)将确定您正在尝试调用哪个服务。它将解组XML,调用服务,编组响应并将其发回。
使用JAX-WS可以做到这一点吗?我非常希望利用JAX-WS提供的现有特性(特别是WS-*等)。如果JAX-WS不能做到这一点,还有其他选择吗?
发布于 2012-07-16 04:06:36
您的用例实际上很难使用JAX-WS实现(甚至可能是不可能的)。但是不用担心,你并不是第一个有这个要求的人。
想象一下,一家大公司有几个需要集成的遗留系统。然后,他们花费了大量的金钱和时间来实现基于SOAP web服务的SOA体系结构。这些服务被组合(orchestred)以创建业务流程。
示例:业务流程'Create A contract‘需要执行web服务A、B和C。
但是,如果更改业务流程需要一些代码源代码更改,会发生什么?该公司需要有一个开发团队,使这些流程保持最新。
为了解决这个问题,BPEL的动态绑定应运而生。这项技术允许您在运行时根据所请求服务的参数组合新服务!
简而言之,如果您定义了几个“基本web服务”,然后配置一个BPEL服务器在运行时动态组合这些服务,那么您需要做的就是!
请阅读来自Oracle的this article以获得一个想法...
在这里查看JBoss BPEL user guide。
在的情况下使用应该做些什么
BPEL
有了这一点,您将拥有一个非常强大的平台来进行编排,您可以在将来扩展到更复杂的用例。
希望这能帮上忙。
发布于 2012-07-17 16:14:56
一个不错的方法是使用CDM作为有效负载结构。在CDM (公共数据模型)中,您可以定义可以吸收任何XML类型的可扩展模式。
传统的XML:
<dataset>
<BillingAddress>
<set>
<po-box >22224<po-box>
<suburb code="2009">Pyrmont</suburb>
<city >Sydney</city>
<country code="AU">Australia</country>
</set>
</BillingAddress>
<OfficeAddress>
<set>
<street >2/73 Union St</street>
<suburb code="2009">Pyrmont</suburb>
<city >Sydney</city>
<country code="AU">Australia</country>
</set>
</OfficeAddress>
</dataset>公共数据模型XML:
<objects>
<object is="Address">
<set>
<text is="suburb" code="2009">Pyrmont</text>
<text is="city">Sydney</text>
<text is="country" code="AU">Australia</text>
<object is="BillingAddress">
<set>
<text is="po-box.billing">22224<text>
<text is="suburb.billing" code="2009">Pyrmont</text>
<text is="city.billing">Sydney</text>
<text is="country.billing" code="AU">Australia</text>
</set>
</object>
<object is="OfficeAddress">
<set>
<text is="street.office">2/73 Union St<text>
<text is="suburb.office" code="2009">Pyrmont</text>
<text is="city.office">Sydney</text>
<text is="country.office" code="AU">Australia</text>
</set>
</object>
</set>
</object>
</objects>主服务可以采用CDM,并基于XML中的某个标志将请求路由到适当的Web服务。
这只是我的想法。您需要在此基础上进行构建。
https://stackoverflow.com/questions/11448496
复制相似问题