快速业务通道

Java Web服务,第3部分: Axis2数据绑定 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
(cb) { while (!cb.m_done) { try { cb.wait(100L); } catch (Exception e) {} } } System.out.println("Asynchronous operation took " + (System.currentTimeMillis()-start) + " millis"); if (cb.m_books != null) { BookInformation[] books = cb.m_books; ...

ADB 取消包装支持的主要问题在于其尚不完全稳定。清单 6 中的代码适合与 Axis2 1.2 一起使用,其中包含了相对于 Axis2 1.1.1 中使用的 ADB 取消包装进行的几项大改进。但 WSDL2Java 工具要求修改与其他示例使用的 WSDL 文档的结构,以便在此示例中使用,即将 数据类的内联模式移动到独立的模式文档中。最重要的是,清单 6 中所示的代码并不能全部 都正常工作;代码的最后一部分(即使用异步操作的部分)在运行时出现错误,由于生成的 ADB 客户机存根代码中的错误引发了类强制转换异常。

Axis2 1.2 的后续版本发布时,ADB 取消包装问题应该得到了极大的消除。但 ADB 并不 是让 Axis2 支持取消包装的唯一数据绑定框架。JiBX 也提供取消包装支持,JiBX 版本从 Axis2 1.1.1 发布以来就稳定了。可以在本文稍后(讨论了 Axsi 2 数据绑定主要选项后) 了解 JiBX 客户机代码。

Java Web服务,第3部分: Axis2数据绑定(8)

时间:2011-04-09 IBM Dennis Sosnoski

XMLBeans

XMLBeans 是包含数据绑定层的通用 XML 处理框架。其源自一个 BEA Systems 项目,后 来提交给了 Apache Foundation。XMLBeans 是 Axis2 支持的第一种数据绑定形式,并将继 续作为与 Axis2 一起使用的热门选项(特别是使用复杂模式定义时)。

清单 7 显示了示例应用程序的 XMLBeans 客户机代码中最有意义的部分。对于基本(非 取消包装)ADB 代码,每个操作的输入和输出都有一个对应的独立类。但 XMLBeans 与 ADB 并不相同,其中具有针对包含输入或输出类的文档添加的类(例如,除了 GetBook 类外,还 有 GetBookDocument)。其直接效果就是在使用 XMLBeans 代替 ADB 时会添加一个对象创建 层。Axis2 中没有为 XMLBeans 提供取消包装支持,因此没有办法避免这个添加的对象层。 所得到的结果是 XMLBeans 生成的类比其他数据绑定框架的对等项使用更为复杂。

清单 7. XMLBeans 客户机代码

// create the client stub
XmlbeansLibraryStub stub = new XmlbeansLibraryStub(target);
// retrieve a book directly
String isbn = "0061020052";
GetBookDocument gbd = GetBookDocument.Factory.newInstance();
GetBookDocument.GetBook gb = gbd.addNewGetBook();
gb.setIsbn(isbn);
gbd.setGetBook(gb);
GetBookResponseDocument gbrd = stub.getBook(gbd);
BookInformation book = gbrd.getGetBookResponse().getGetBookReturn();
if (book == null) {
  System.out.println("No book found with ISBN ''" + isbn + ''\'''');
} else {
  System.out.println("Retrieved ''" + book.getTitle() + ''\'''');
}
// retrieve the list of types defined
GetTypesDocument gtd = GetTypesDocument.Factory.newInstance();
gtd.addNewGetTypes();
GetTypesResponseDocument gtrd = stub.getTypes(gtd);
TypeInformation[] types =
  gtrd.getGetTypesResponse().getGetTypesReturnArray();
System.out.println("Retrieved " + types.length + " types:");
for (int i = 0; i < types.length; i++) {
  System.out.println(" ''" + types[i].getName() + "'' with " +
    types[i].getCount() + " books");
}
// add a new book
String title = "The Drag

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号