JMS在WSDL中的SOAP地址位置:这意味着什么



我正在查看wsdl,它包含一个值为jms:/queue?destination=...soap:address location标记。

  • soap:address值在WSDL上有什么用途
  • 它会影响客户端连接到web服务的方式吗

此外,我尝试在谷歌上搜索jms:/queue?destination=...,结果中出现了"SOAP over JMS"一词。

  • 什么是"JMS",什么是"基于JMS的SOAP"

我在客户端工作,所以我担心是否需要对此采取任何措施。目前,我只知道如何通过HttpUrlConnection连接到REST和SOAP web服务。

以下是WSDL文件的示例:(如下所示,使用的传输协议是HTTP,但服务也在使用带有JMS地址的传输协议?我在这里有点困惑。这是HTTP上的SOAP还是JMS上的SOAP?)

<wsdl:binding name="MethodSOAP_JMS_Binding" type="tns:MethodPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
    <wsdl:operation name="methodName">
        <soap:operation soapAction="" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
        <wsdl:input name="method_Input">
            <soap:body parts="RequestBean" use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
        </wsdl:input>
        <wsdl:output name="method_Output">
            <soap:body parts="ResponseBean" use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
        </wsdl:output>
    </wsdl:operation>
</wsdl:binding>
<wsdl:service name="MethodSOAP_JMS_Service">
    <wsdl:port binding="tns:MethodSOAP_JMS_Binding" name="MethodSOAPPort">
        <soap:address location="jms:/queue?..." xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" />
    </wsdl:port>
</wsdl:service>

提前感谢!

JMS,Java消息服务,是在系统之间发送可靠消息的Java标准。消息从来不会像HTTP那样在系统之间直接发送,而是由符合JMS的服务器软件存储和转发。JMS消息是一些标头和各种类型的有效载荷,但对于SOAP,它很可能是字符串有效载荷,因为SOAP是基于XML的。

JMS URL不像HTTP URL那样"自立"。

像这个:

jms:///queue?connectionfactory=MyQCF&destination=MyQ

它说你应该连接一个名为MyQCF的所谓连接工厂,并连接到一个称为MyQ的目的地。确切地说,这意味着必须在其他地方进行配置,它没有说明特定的物理服务器等。这在JMS中很常见,因为建立与JMS服务器连接的最常见方式是通过名为JNDI的配置文件或寄存器。在该配置中,供应商特定的设置和配置解析为要联系的服务器、服务器的供应商/版本、目的地(主题或队列)等。

没有什么比获得一个开源java库并开始这么容易的了。所有JMS供应商都是唯一的实现。(例如IBM WebSphere MQ、Apache ActiveMQ、Tibco EMS、OpenMQ、HornetQ)。有一些开源软件和一些商业软件。您需要弄清楚在您的基础设施中使用了哪个特定的JMS供应商,根据供应商文档设置JMS配置。一些供应商允许在JMS url中进行完整的设置,例如ActiveMQ。它仍然需要用java加载特定的库。

基于JMS的SOAP只使用SOAP的所有通用标准,如WSDL、WS-Security等。但是JMS通过松耦合增加了可靠性和事务性,从而在系统和配置复杂性方面提供了健壮性。

如果您没有考虑到特定的JMS供应商和库,那么您可能希望查看CXF和ActiveMQ,以便使用SOAP over JMS进行启动和运行。指南可以在这里找到。

JMS基本上是一种用于消息传递的中间件服务,请参阅:http://en.wikipedia.org/wiki/Java_Message_Service

"soap:address"定义服务的位置。

"SOAP over JMS"意味着您通过JMS队列向服务发送SOAP请求,请参见图1:http://www.ibm.com/developerworks/websphere/library/techarticles/0402_du/0402_du.html

在客户端,您必须连接到相应的JMS队列。这取决于您的库是否透明地处理(或完全支持)。

另一个教程:http://www.ibm.com/developerworks/websphere/library/tutorials/0903_adams/index.html

SO有几个相关的问题。

相关内容

最新更新