正 文

用WebLogic Workshop实现.NET Web服务互操作


www.7dspace.com  更新日期:2005-10-9 10:17:59  七度空间


  这个数据集的XML编码分为两部分。一部分是规划,描述了XML编码的结构;另一部分是数据集的实体。本文将略去规划部分,假定规划是已知的,这里仅仅着重考虑数据编码本身。在一些更复杂的应用中,通过规划来做一些其他的事情通常是很有用的。

  通过灵活地反复使用以下格式的元素,就可以将创建好的表中的数据编码成非常简单的格式:

<PhoneBook>
  <ID></ID>
  <Name></Name>
  <Telephone></Telephone>
</PhoneBook>

  如果我们已经知道了XML的形式,就可以编写一个能获取并使用这些数据的WebLogic Workshop Web服务。

  用XML映像(XML Map)提取数据

  通过WebLogic Workshop的XML映射技术,我们可以提取这些数据,并将其存入到用于表示电话本实体的Java对象中。下面的代码将完成这项工作:

public static class PhoneBookEntry
{
    public int id;
    public String name;
    public String phoneNumber;
}

  为了对引入的XML进行解码,我们将用到一个XML映像。以下XML映像可以作为服务控件的返回映像,这个服务控件是用于调用可返回数据集的.NET Web 服务的。

/**
 * @jws:return-xml xml-map::
 * <getDataSetResponse xmlns=http://tempuri.org/>
 *  <getDataSetResult>
 *   <diffgr:diffgram
 *        xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
 *     <MyDataSet xmlns="">
 *       <PhoneBook xm:multiple="entry in return">
 *         <ID>{entry.id}</ID>
 *         <Name>{entry.name}</Name>
 *         <Telephone>{entry.telephone}</Telephone>
 *       </PhoneBook>
 *     </MyDataSet>
 *   </diffgr:diffgram>
 *   </getDataSetResult>
 * </getDataSetResponse>
 * ::
 */
public PhoneBookEntry[] getDataSet();

  该映像需添加到.NET Web服务对应的CTRL文件中的getDataSet方法中。这个映像看起来可能有些复杂,但这的的确确就是要演化为.NET Web服务返回的用于获取电话本条目部分的XML。接着用一个xm:multiple属性将每个电话本条目的数据绑定到由映像-增强(map-enhanced)getDataSet返回的一个数组的元素上。

  你可能已经注意到,这个映像建议的XML形式与之前我展示过的那个映像略有出入。不幸的是,WebLogic Workshop收到的SOAP消息看上去与.NET的Web界面所显示的XML形式有所不同。你可以通过在WebLogic Workshop上的Web服务中调用.NET的Web服务方法来找到WebLogic Workshop所收到的消息,并使用测试视图查看.NET返回的XML形式。

  结论

  互操作性在Web服务中非常重要,而通过WebLogic Workshop可以非常容易地实现对其他Web服务的互操作。在本文中我们讨论了为实现对.NET的互操作需要做那些工作,实际上,这些原理同样适用于其他任何可以产生有效WSDL的Web服务产品。

6页,页码:[1] [2] [3] [4] [5] [6] 

上一篇:QQ宠物的五条喂养经验
下一篇:CSS技术在网页设计中的运用
作者:  来源:dev2dev ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐