Difference between revisions of "Zh/Documentation/DevGuide/ProUNO/Java/Mapping of Services"
From Apache OpenOffice Wiki
< Zh | Documentation
(New page: {{Documentation/DevGuide/ProUNOTOC/Zh |ProUNO2c=block |ProUNO2cJava=block |ProUNO2cJavaTM=block |ShowPrevNext=block |PrevPage=Zh/Documentation/DevGuide/ProUNO/Java/Mapping of UNOIDL |NextP...) |
(No difference)
|
Revision as of 06:45, 3 July 2008
新式服务被映射成同名的公共 Java 类。该类有一个或多个公共静态方法,这些方法与服务的显式或隐式构造函数相对应。
对于具有给定接口类型 XIfc
的新式服务,以下形式的显式构造函数
name([in] Type1 arg1, [in] Type2 arg2) raises (Exception1, ..., ExceptionN);
用以下 Java 方法表示
public static XIfc name(com.sun.star.uno.XComponentContext context, Type1 arg1, Type2 arg2) throws Exception1, ..., ExceptionN { ... }
UNO rest 参数 (any...)
在 Java 1.5 中被映射成 Java rest 参数 (java.lang.Object...)
,在 Java 的
旧版本中被映射成 java.lang.Object[]
。
如果新式服务有隐式构造函数,则对应的 Java 方法的形式为
public static XIfc create(com.sun.star.uno.XComponentContext context) { ... }
Java 中显式和隐式服务构造函数的语义如下:
- 服务构造函数的第一个参数始终为 com.sun.star.uno.XComponentContext,且不得为空。其他所有参数都用于初始化创建的服务(见下文)。
- 服务构造函数首先使用 com.sun.star.uno.XComponentContext:getServiceManager 从给定的组件上下文获取服务管理器 (com.sun.star.lang.XMultiComponentFactory)。
- 然后,服务构造函数使用 com.sun.star.lang.XMultiComponentFactory:createInstanceWithArgumentsAndContext 创建能够向它传递参数列表(无初始的
XComponentContext
)的服务实例。如果服务构造函数有单个 rest 参数,则可以直接使用 any 值的序列,否则,给定的参数将列入 any 值的序列中。如果是隐式服务构造函数,则不传递参数,而是使用 com.sun.star.lang.XMultiComponentFactory:createInstanceWithContext。
- 如果以上任何步骤因服务构造函数可能抛出(根据其异常规范)的异常而失败,则服务构造函数也会抛出该异常并以失败告终。否则,如果以上任何步骤因不可能由服务构造函数抛出的异常而失败,则服务构造函数会抛出 com.sun.star.uno.DeploymentException 并以失败告终。最后,如果没有创建任何服务实例(由于给定的组件上下文无服务管理器,或者由于服务管理器不支持请求的服务),则服务构造函数会抛出 com.sun.star.uno.DeploymentException 并以失败告终。实际结果是服务构造函数或者返回所请求服务的非空实例,或者抛出异常;服务构造函数决不会返回空实例。
没有将旧式服务映射成 Java 语言绑定。
Content on this page is licensed under the Public Documentation License (PDL). |