Apache Axis2 用户指引- 服务介绍
"Web services"这个术语适用于多种方式来回发送信息.然而,这个指引主要关注于发送和接受SOPA消息.SOAP消息是一个包含“payload”的“Envelope”的xml文档(请看代码清单4)。
代码清单4:SOAP消息示例
<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:wsa="http://www.w3.org/2005/03/addressing"> <env:Header> <wsa:MessageID> http://ws.apache.org/9C21DE32-DB42-1228-C42E-66CB101421AD </wsa:MessageID> <wsa:ReplyTo> <wsa:Address>http://example.com/projects/clientApp</wsa:Address> </wsa:ReplyTo> <wsa:To>http://example.com/axis2/publishingService</wsa:To> <wsa:Action>http://example.com/axis2/addDocument</wsa:Action> </env:Header> <env:Body> <addDocument> <docTitle>What I Did On My Summer Vacation</doctitle> <docSubtitle>Children's Essays from Accross the World</docSubtitle> <docLocation>contentRepos/summerVac.doc</docLocation> </addDocument> </env:Body> </env:Envelope>
这个文档包含SOPA Envelope的外部标签和其内容.SOAP Envelope在SOAP命名空间里,http://www.w3.org/2003/05/soap-envelope,env为前缀:包含两个子标签.对于每一个单独的SOAP消息发送和SOAP Web service接收.这个envelope是标准格式化的从属关系.
Envelop的内容包含两个部分;第一个是SOAP头部-包含env:Header标签的内容.这些头部,如WS-Addressing标签所展示的,提供有关于消息及该被处理的附加信息.一个SOAP 消息可以携带有关消息的多个方面的hearder,也可以不携带headers.这些headers会被消息处理进行一般处理。
第二部分,也是值得讨论的部分是payload,它包含env:Body标签的内容.这是接收者真正想要的信息,这也是主程序最后要处理的信息。
信息交换模式
虽然所有的SOAP消息携带者相同的结构,可以被组合成许多不同的"消息交换模式",或者叫做MEPs.两个主要的消息交换模式如下:
- 也进也出: 这个MEP,客户端发送一个SOAP消息到服务器端, 服务器端处理消息然后反馈一条消息. 这是使用MEP最多的情况,并且对于一些任务很有作用.比如查找信息和提交信息(在知识如此重要的情形下).
- 只进不出: 这个MEP,客户端发送一条消息到服务器端,不期望服务器端会给与反馈.你可以使用这个MEP用来连接一个服务来唤醒它,报告你需要的日志信息等等.
在这两个MEPs里边,你有几个变量是需要注意的:
- 模块阻塞和非阻塞: 当客户端发送一条消息,应用程序需要再继续执行之前可能需要等待反馈,或者简单的发送一个消息,然后当反馈接受到的时候调用一个回调函数.When 参数数量:最后地,从客户端发送的一个消息到达服务器端,它意图要执行一个特别的动作.那个动作可能不要任何的参数,或者它要求一个或者多个参数.这些参数必须作为消息的payload的一部分编码.
考虑下所有的选项,你就可以创建任何的MEP.例如,你可以通过反转只进不出的MEP来创建一个只出不进的MEP. Apache Axis2 还包含少量的杰出的MEPs,比如Robust-In-Only.
查看下节课程 - 创建客户端(Creating Clients)