利用XML Map(视图)提取数据
利用WebLogic Workshop的XML映射技术,我们能够捕获数据并将其存储为Java对象以表示电话簿中的信息项。首 先,我们需要定义一个Java类型以承载电话簿信息项。下列代码能够满足这个要求:
public static class PhoneBookEntry
{
public int id;
public String name;
public String phoneNumber;
}
为了将接收到的XML进行解码,我们将采用XML视图。下列XML视图能够用来返回服务控制的视图,这些服务控 制用于调用.NET 网络服务从而返回DataSet。
/**
* @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网络服务的CTRL的getDataSet方法中。映射看起来有点复杂,实际上只是深入到.NET网 络服务返回的XML,并获取电话簿条目列表。然后,利用xm:multiple 属性将每个电话簿条目的数据与getDataSet 返回的数组元素绑定。
您可能已经注意到,本映射建议的XML与前面描述有所不同。不幸的是,WebLogic Workshop收到的SOAP消息与 .NET网络接口显示的XML看上去有差别。可以通过从WebLogic Workshop激活.NET网络服务方法来发现WebLogic Workshop 实际收到的XML消息,并采用测试查看.NET返回的XML消息。
结束语
在网络服务世界中,互操作具有重要的意义。WebLogic Workshop很容易与其它网络服务实现实现互操作。本文中 ,我们浏览了与.NET互操作需要的工作。但是,本文讨论的原则适用于能够生成有效WSDL的任何网络服务产品。