创建桥

From Apache OpenOffice Wiki
Jump to: navigation, search
启动 UNO 进程间桥所需的服务交互。接口已经被简化。


XConnection 实例现在可以用来在连接上建立 UNO 进程间桥,而不管连接是使用 Connector 还是使用 Acceptor 服务(或别的方法)建立的。为此,必须实例化服务 com.sun.star.bridge.BridgeFactory。它支持 com.sun.star.bridge.XBridgeFactory 接口。

  interface XBridgeFactory: com::sun::star::uno::XInterface
  { 
      XBridge createBridge( 
              [in] string sName, 
              [in] string sProtocol , 
              [in] com::sun::star::connection::XConnection aConnection , 
              [in] XInstanceProvider anInstanceProvider ) 
          raises ( BridgeExistsException , com::sun::star::lang::IllegalArgumentException ); 
      XBridge getBridge( [in] string sName ); 
      sequence < XBridge > getExistingBridges( ); 
  };


BridgeFactory 服务管理所有 UNO 进程间连接createBridge() 方法创建一个新桥:

  • 可以使用 sName 参数给桥指定一个明确的名称。然后可以使用此名称通过 getBridge() 方法来获取桥。这使两个独立的代码段可以共享同一进程间桥。如果您使用已经存在的进程间桥名称来调用 createBridge(),就会抛出 createBridge()。如果传送的是一个空字符串,通常将建立一个新的匿名桥,通过 getBridge()不会获取到此桥,而且不会抛出 BridgeExistsException
  • 第二个参数指定连接使用的协议。目前,仅支持 'urp' 协议。在 UNO URL 中,此字符串由两个 ';' 分隔。urp 字符串后面可以跟一个逗号分隔的名称值对列表,这些名称值对说明桥协议的属性。udk.openoffice.org 上提供了 urp 规范。
  • 第三个参数是 XConnection 接口,因为它是通过 Connector/Acceptor 服务获取的。
  • 第四个参数是一个 UNO 对象,该对象支持 com.sun.star.bridge.XInstanceProvider 接口。如果不想将一个本地对象导出到远程进程,此参数可以是一个空引用。
  interface XInstanceProvider: com::sun::star::uno::XInterface
  { 
      com::sun::star::uno::XInterface getInstance( [in] string sInstanceName ) 
           raises ( com::sun::star::container::NoSuchElementException ); 
  };

BridgeFactory 返回一个 com.sun.star.bridge.XBridge 接口。

  interface XBridge: com::sun::star::uno::XInterface
  { 
      XInterface getInstance( [in] string sInstanceName ); 
      string getName(); 
      string getDescription(); 
  };

XBridge.getInstance() 方法通过远程桥获取一个初始对象。本地 XBridge.getInstance() 调用作为 XInstanceProvider.getInstance() 调用到达远程进程。返回的对象可由字符串 sInstanceName 控制。它完全取决于 XInstanceProvider 的实现,即 XInstanceProvider 返回的对象。


可以从 XBridge 接口中查询 com.sun.star.lang.XComponent 接口,该接口将一个 com.sun.star.lang.XEventListener 添加到桥。当底层连接关闭时,就会终止此侦听器(请参阅前面的内容)。您也可以明确地调用 XComponent 接口中的 dispose(),来关闭底层连接并启动桥关闭过程。


Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages