我有一个环境,该环境承载着带有易于绑定到XML的输入和输出的许多“服务”。我希望能够通过SOAP动态公开一个或多个服务。换句话说,用户必须能够将服务A和B组合到一个Web服务中(并可以选择配置操作的名称等)。

这意味着我需要能够动态生成WSDL或其中的至少一部分(尤其是可以从服务请求的XSD定义),并且我需要能够动态创建和发布都使用单个Provider的新端点。类(基于上下文和不基于上下文)将确定您尝试调用的服务。它将取消封送XML,调用服务,封送响应并将其发送回。

JAX-WS有可能吗?我非常想利用JAX-WS随附的现有功能(特别是WS- *等)。如果JAX-WS无法实现,还有其他选择吗?

最佳答案

实际上,用JAX-WS很难实现您的用例(甚至是不可能的)。但是不用担心,您不是第一个有此要求的人。

想象一个大公司,其中有几个需要集成的旧系统。然后,他们花费了大量金钱和时间来实现基于SOAP Web服务的SOA架构。这些服务被组合(编排)以创建业务流程。

示例:业务流程“创建合同”需要执行Web服务A,B和C。

但是,如果更改业务流程需要一些代码源更改,会发生什么???公司需要有一个开发团队来保持这些流程的最新状态。

为了解决这个问题,创建了 BPEL的动态绑定。该技术使您可以在运行时根据所请求服务的参数来组成新服务!

简而言之,如果定义多个“基本Web服务”,然后配置BPEL服务器以在运行时动态组合这些服务,您需要做些什么!

请阅读Oracle的this article以获得想法...

并在这里检查JBoss BPEL user guide

在您的情况下使用BPEL应该怎么做

  • 为您的每个非肥皂服务创建SOAP Web服务(我们称其为“基础Web服务”)。
  • 配置BPEL引擎以编排“基本Web服务”的组成/组合。
  • 使用BPEL端点创建能够在运行时(每个请求,如果需要)组成/组合“基本Web服务”的客户端。注意:不需要更改BPEL引擎配置

  • 这样,您将拥有一个非常强大的平台来进行业务编排,将来可以扩展到更复杂的用例。

    希望能帮助到你 ...

    10-06 13:39