快速业务通道

用JAVA和XML构建分布式系统 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22
nputStreamReader(receiverConnection.getInputStream())); // 处理结果:"OK" 表示成功;"Exception" 表示输入流串行化异常 ... in.close(); } catch (Throwable e) { e.printStackTrace(System.err); } }

注意到以上的documentReady()方法用remoteURL属性得到服务器上的CGI脚本的URL。为了与HTTP兼容,CGI脚本类用字符串”Content-type: text/html"封装接收者的输出。这个脚本然后调用服务器上的the receiverMain()方法。 Main()函数只是简单的实例化接收者然后调用其receiveDocument()方法。

import org.xbeans.communication.stdio.receiver.*; public class receiverMain { static Bean theReceiver = new Bean(); public static void main(String[] args) { theReceiver.receiveDocument(); } }

最后receiveDocument()方法的代码段将重新生成DOM表示以便进一步处理。这里用到了IBM的XML解析器。

DOMParser parser = new DOMParser(); // 构造解析器 try { // 调用解析器 parser.parse(new InputSource(System.in)); } catch (Throwable e) { throw new XbeansException("","receiver","io error parsing incoming document", "io error parsing incoming document "+e); } //将文档传向下一个bean DOMListener.documentReady(new DOMEvent(this,parser.getDocument()));

方法二:通过JAVA远程方法调用串行化文档

这个方法通过JAVA远程方法调用(JAVA RMI)和DOM串行化(serialization)来从发送者向接收者传输XML DOM 文档。如图4:

用JAVA和XML构建分布式系统 - 编程入门网

用JAVA和XML构建分布式系统(3)

时间:2010-12-19

以下代码用JAVA远程方法调用实现发送方与接受方的通讯.

public void documentReady(DOMEvent evt) throws XbeansException { if (DOMListener==null) { try { DOMListener = (DOMListener)Naming.lookup(getReceiverName()); } catch (Exception e) { throw new XbeansException( evt.getDocument().getNodeName(), "sender", "error obtaining remote receiver", "The name may be wrong or the network may be down."); } } DOMListener.documentReady(evt); }

以下是接受方的JAVA 远程方法调用的实现。setName()方法将接受这传送给RMI注册(registry),

documentReady()方法仅仅将接收到的文档传送给下一个组件。

public void setReceiverName(String newName) { try { if (receiverName!=null) Naming.unbind(receiverName); receiverName = newName; Naming.rebind(receiverName, this ); } catch( Exception e ) { System.out.println( e ); } } public void documentReady(Document incomingDocument) throws RemoteException, XbeansException { if (DOMListener==null) { throw new XbeansException(incomingDocument.getNodeName(),"rmiReceiver", "next component not established", "The component needs to be configured."); } DOMListener.documentReady(new DOMEvent(this,incomingDocument)); }

方法三:CORBA-IIOP

第三方法用CORBA-IIOP(CORBA over Internet Inter-ORB Protocol)来传输数据。对象管理组织(OMG)正在建议扩展接口定义语言(IDL)将XML数据类型包括进去。这样,将来CORBA产品将能传输XML数据。如图5所示:

用JAVA和XML构建分布式系统 - 编程入门网

以下的OMG IDL给出了发送者和接收者CORBA实现的接口。

exception RemoteReceiverException { string remoteIdentifier; string documentName; string componentName; string message; string moreMessage; }; typedef sequence<octet&g

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