快速业务通道

用JAXM开发Web服务 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
ory","books","http://hellking.webservice.com");    book.addChildElement(elCategory).addTextNode(bookvo.getCategory());    //构建description    Name elDescription=envelope.createName( "description","books","http://hellking.webservice.com");    book.addChildElement(elDescription).addTextNode(bookvo.getDescription());    //author本来就是一个Collection,故要特别处理    Collection author_c=bookvo.getAuthors();    Iterator au_it=author_c.iterator();    while(au_it.hasNext())    {    String strAuth=(String)au_it.next();    //增加一个author    Name elAuth=envelope.createName( "author","books","http://hellking.webservice.com");      book.addChildElement(elAuth).addTextNode(strAuth);     }   }   msg.writeTo(System.out); //打印消息   }   catch(Exception ex)   {   ex.printStackTrace();   } } …

用JAXM开发Web服务(8)

时间:2011-02-07 IBM 陈亚强

按照上面的代码,BeanToSOAPEngine构建的SOAP消息应该和例程2的结构一致。

总结一下,构建SOAP消息时,按以下步骤进行:

获得MessageFactory 实例

利用MessageFactory 创建空的SOAPMessage

创建Header(可选)

创建body

创建body的名字空间

创建body的子元素

创建子元素名字空间

循环创建子子元素

把子元素增加到父元素里

往Message里增加body元素

创建附件(可选)

开发客户端

客户端和服务端通信,按以下的步骤进行:

创建 SOAP 连接

创建 SOAP 消息

在SOAP消息里增加数据

发送消息

对SOAP应答进行处理

下面我们就按照这个步骤来一步步讨论SOAP客户端开发种种问题。在本案例中,和服务端进行交互的客户端是通过一个叫JAXMDelegate的类来进行的。GUI客户程序通过调用JAXMDelegate来获得查询结果(具体的数据传输机制和设计模式见本系列第二篇文章)。首先我们来看怎么创建SOAP连接。

创建 SOAP 连接

由于我们使用的是点对点的消息发送模型,所以连接的类型是SOAPConnection。如例程10所示。

例程10 创建连接

package com.hellking.webservice; import javax.xml.soap.*; … public class JAXMDelegate implements BookBusiness { SOAPConnection con =null; EndpointLocator locator=new EndpointLocator(); Collection allbook;//cache public JAXMDelegate() {   allbook=new ArrayList();   try   {   SOAPConnectionFactory scf = SOAPConnectionFactory.newInstance();         con = scf.createConnection();      }      catch(Exception e)      {      e.printStackTrace();      }    } …

在上面的例子中,SOAPConnection是通过SOAPConnectionFactory来创建的。

用JAXM开发Web服务(9)

时间:2011-02-07 IBM 陈亚强

创建 SOAP 消息

接下来是创建消息,在本案例中,有一个专门的方法来创建消息,如11所示。

例程11 创建消息

… //target为目标名字空间,name为查询某本特定书的书字,category为要查询的类别 public SOAPMessage createMessage(String target,String name,String category)    {    try    {       MessageFactory mf = MessageFactory.newInstance();       SOAPMessage msg = mf.createMessage();     SOAPPart sp = msg.getSOAPPart();   SOAPEnvelope envelope = sp.getEnvelope();   //SOAPHeader hdr = envelope.createSOAPHeader();   SOA

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号