Java 中的简单组件

From Apache OpenOffice Wiki
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


本节介绍如何编写 Java 组件。本章中的示例保存在程序员手册随附的示例文件夹中。


Java 组件是包含实现任意 UNO 服务的对象的 Java 类库 (JAR)。对于 Java 中的服务实现,需要实现必要的 UNO 核心接口以及您所需的的接口。这些接口可以是现有接口,也可以是使用 UNOIDL 定义的接口。


除了这些服务实现外,Java 组件还需要两个方法来实例化它们要在 UNO 环境中实现的服务:一个方法用于为 JAR 中每个服务实现获取单个工厂,另一个方法用于将注册信息写入注册表数据库。在下文中,这些方法称为静态组件操作


为组件中服务实现提供单个工厂的方法是 __getServiceFactory()

  public static XSingleServiceFactory __getServiceFactory(String implName,
                                      XMultiServiceFactory multiFactory,
                                      XRegistryKey regKey)


从理论上讲,客户端可以通过直接调用组件实现上的 __getServiceFactory() 从组件中获取单个工厂。但此方法很少使用,因为在大多数情况下,服务管理器用于获取服务实现的实例。服务管理器在组件使用 __getServiceFactory(),以从组件获取请求的服务的工厂,然后要求此工厂创建一个工厂支持的对象的实例。


要找到请求的服务实现,服务管理器将搜索它的注册表数据库,查找包含此实现的组件 JAR 的位置。为此,组件事先必须进行注册。UNO 组件可以通过执行注册的函数编写关于其自身的必要信息,而且该函数可以由注册工具 regcomp 调用。该函数具有如下签名:

  public static boolean __writeRegistryServiceInfo(XRegistryKey regKey)


这两个方法配合使用,使得组件中的实现对服务管理器可用。方法 __writeRegistryServiceInfo() 通知服务管理器到何处查找实现,而一旦找到实现,__getServiceFactory() 使服务管理器可以实例化这个服务实现。


编写组件的必要步骤包括:

  1. 定义服务实现类。
  2. 实现 UNO 核心接口。
  3. 实现您自己的接口。
  4. 提供静态组件操作以使您的组件对服务管理器可用。


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