Mule的入站SOAP端点

时间:2014-03-11 13:25:26

标签: web-services web wsdl mule

我想将SMS服务公开为SOAP端点。我有短信服务在mule工作,但我目前有一个简单的HTTP端点

谁可以帮助我使用此SOAP服务的步骤和WSDL文件将其作为入站端点

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://ws.sms.example.com/">
<soapenv:Header/>
<soapenv:Body>
  <ws:sendTextMessage>
<sender>%SENDERID%</sender>
<to>%TO%</to>
<text>%MESSAGE%</text>
  </ws:sendTextMessage>
</soapenv:Body>
</soapenv:Envelope>

亲切的问候。

雅科

1 个答案:

答案 0 :(得分:0)

我认为没有任何工具可以从SOAP示例创建WSDL文件,但您的架构看起来很简单,您应该能够通过一些helloworld wsdl教程手动创建它。另一种方法是尝试为服务创建Java实现,并在连接到端点时打印出wsdl。有关这两种方法的详细信息,请参阅Mule docs

要测试和验证您的wsdl / soap端点,请安装SoapUI并创建一个测试项目,您可以在其中导入wsdl,生成请求(自动工作),查看它是否与您的示例匹配,然后配置端点请求将其发送到Mule inbound。

在Mule中,您有两个选项:您可以将服务实现为Java类,如上例所示,或者您可以将其实现为cxf:proxy-service,直接访问有效负载。在后一种方法中,您不需要任何Java类,只需将流程包装在SOAP API中即可。

更新:

SOAP请求几乎就是使用XML的HTTP调用,就像您的示例中的原始POST数据一样,因此您可以像任何POST数据一样访问Mule入口中的内容,并使用XPath解析它们。如果您定义了一个cxf:proxy-service,您将获得更多“真正的”SOAP服务功能,但您可以使用几乎任何HTTP侦听器接收SOAP调用,获取其内容,并使用客户端期望的字符串进行回复,并且客户不会知道差异。

如果您的Mule流与另一个SOAP服务联系,您可以使用服务器和客户端创建代理,例如this example。您也可以通过将?wsdl附加到服务URL来获取其他SOAP服务的WSDL。这是SOAP的常见做法。