使用 Helper 的方法编写注册信息
From Apache OpenOffice Wiki
< Zh | Documentation
UNO 组件必须使用服务管理器的注册表数据库注册。在办公软件安装中,这是用于所有预设服务的文件 types.rdb(在 1.1.0 之前为 applicat.rdb)。服务管理器可以使用此数据库查找服务的实现。例如,如果您的组件的实例使用以下调用创建。
Object imageShrink =
xRemoteServiceManager.createInstance("org.openoffice.test.ImageShrink");
服务管理器使用给定的服务名称或实现名称,在注册表中查找相应的 jar 文件,并实例化组件。
在注册的过程中,组件将向注册表中写入必要的信息。当客户端调用组件的 __writeRegistryServiceInfo() 方法时,将从外部触发写入信息的过程。
public static boolean __writeRegistryServiceInfo(XRegistryKey regKey)
调用程序将传送该方法用来写入注册表条目的 com.sun.star.registry.XRegistryKey 接口。同样,FactoryHelper 类提供了实现方法的方式:
...
// static __writeRegistryServiceInfo implementation
public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) {
return FactoryHelper.writeRegistryServiceInfo( ImageShrink.class.getName(),
__serviceName, regKey);
}
writeRegistryServiceInfo 方法接受三个参数:
- 实现名称
- 服务名称
- XRegistryKey
使用工具(如 regcomp)或使用 Java 应用程序 com.sun.star.tools.uno.RegComp 来注册组件。这些工具可以接受包含组件的 jar 文件的路径作为参数。由于 jar 可以包含多个类,实现 __writeRegistryServiceInfo() 方法的类必须通过标明的方式指出。同样,RegistrationClassName 条目将确定正确的类。例如:
RegistrationClassName: org.openoffice.comp.test.ImageShrink
上述条目对于确定提供 __getServiceFactory() 的类的位置也是非常必要的,因此函数 __writeRegistryServiceInfo() 和 __getServiceFactory() 必须在同一类中。
| Content on this page is licensed under the Public Documentation License (PDL). |