#
第二十九章 类关键字 - PropertyClass
向该类添加属性参数。
# 用法
要向该类添加属性参数,请使用以下语法:
```java
Class PropClass.MyClass Extends %RegisteredObject [ PropertyClass = PropClass.MyPropertyClass ] { //class members }
```
其中·propertyclasslist·是下列之一:
```java
[ PropertyClass = PropClass.MyPropertyClass ]
```
- 用逗号分隔的类名列表,用括号括起来。
# 详情
如果需要添加自定义属性参数,请执行以下操作:
1. 定义并编译一个定义一个或多个类参数的类。例如:
```java
Class PropClass.MyPropertyClass
{
Parameter MYPARM As %String = "XYZ";
}
```
这些类参数在下一步中成为属性参数。
2. 在定义属性的类中,指定`PropertyClass`关键字。
# 对子类的影响
子类继承这个关键字添加的自定义行为。如果子类为关键字指定了一个值,则该值会指定一个或多个为该类的属性指定参数的附加类。
# 第三十章 类关键字 - ServerOnly
指定此类是否被投影到Java客户端。
# 用法
要覆盖将类投影到`Java`客户端的默认方式,请使用以下语法:
```java
Class Sample.NewClass1 [ ServerOnly = serveronlyvalue ] { //class members }
```
其中`serveronlyvalue`是以下值之一:
- 0表示可以投影此类。
- 1表示这个类不会被投影。
# 详解
如果该关键字为`1`,则该类不会被投影到`Java`客户端。如果该关键字为`0`,则将投影该类。
# 对子类的影响
此关键字不是继承的。
# 默认
如果省略这个关键字,这个类如果不是存根就会被投影(但是如果是存根就不会被投影)。
# 第三十一章 类关键字 - Sharded
指定此类是否被分片。仅适用于包含分片集群的环境中的持久类。
# 用法
要将类定义为分片类,请使用以下语法:
```java
Class MyApp.MyClass Extends %Persistent [ Sharded = 1 ]
{ //class members }
```
否则,省略此关键字。
# 详解
分片是一种水平扩展数据存储的机制。如果一个类被分片,该类的实例将分布在分片集群中任何已定义的数据节点上。
如果有一个分片环境,并且将一个类定义为未分片,那么该类的实例只存储在第一个数据节点上,尽管所有节点都可以看到该数据。
# 对子类的影响
这个关键字是继承的。
# 默认
如果省略这个关键字,类就不会被分割。
# 第三十二章 类关键字 - SoapBindingStyle
指定此类中定义的任何web方法使用的绑定样式或SOAP调用机制。仅适用于定义为web服务或web客户端的类。
# 用法
要指定此类中定义`web method`使用的绑定样式,请使用以下语法:
```java
Class MyApp.MyClass [ SoapBindingStyle = soapbindingstyle ] { //class members }
```
其中`soapbindingstyle`是下列之一:
- `document` 文档(默认)—默认情况下,此类中的`web method`使用文档样式的绑定。
使用这种绑定风格,`SOAP`消息被格式化为文档,并且通常只有一个部分。
在`SOAP`消息中,``元素通常包含一个子元素。``元素的每个子元素对应于一个消息部分。
- `rpc` —默认情况下,此类中的`web method`使用`rpc`(远程过程调用)样式的绑定。
使用这种绑定风格,`SOAP`消息被格式化为具有多个部分的消息。
在`SOAP`消息中,``元素包含一个子元素,其名称取自相应的操作名称。这个元素是一个生成的包装元素,它为方法的参数列表中的每个参数包含一个子元素。
如果`SoapBindingStyle`是文档,如果`ARGUMENTSTYLE`是消息,那么消息样式与`RPC`非常相似;
重要提示:对于手动创建的`web service`,该关键字的默认值通常是合适的。当使用`SOAP`向导从`WSDL`生成`web客户端或服务`时,InterSystems IRIS会将此关键字设置为适合该`WSDL`;如果修改该值,`web客户端或服务`可能不再工作。
# 详解
此关键字允许指定此类中定义的任何`web method`使用的默认绑定样式。它影响`SOAP`主体的格式(但不影响任何SOAP头)。
通过使用`SoapBindingStyle`方法关键字或`SoapBindingStyle`查询关键字,可以重写单个方法的绑定样式。
# 对子类的影响
此关键字不是继承的。
# 默认
默认值为文档。
# 与WSDL的关系
`SoapBindingStyle`类关键字指定了`WSDL`的``部分中``元素的样式属性的值。例如,如果`SoapBindingStyle`是文档,则`WSDL`可能如下所示:
```xml
...
...
```
如这里所示,在`WSDL`的``部分中,`SoapBindingStyle`类关键字还指定了``元素的样式属性的默认值;该属性由`SoapBindingStyle`方法关键字进一步控制。
相比之下,如果`SoapBindingStyle`是`rpc`,则`WSDL`可以改为如下所示:
```xml
...
...
```
绑定样式也会影响``元素,如下所示:
- 如果绑定样式是文档,默认情况下,消息只有一个部分。例如:
```xml
```
如果`ARGUMENTSTYLE`参数是`message`,那么一条消息可以有多个部分。例如:
```xml
```
- 如果绑定样式是`rpc`,消息可以有多个部分。例如:
```xml
```
# 对SOAP消息的影响
对`SOAP`消息的主要影响是控制`SOAP`主体是否可以包含多个子元素。
对于使用`RPC`样式绑定和编码样式消息的`web method`,下面显示了请求消息正文的示例:
```xml
10
5
17
2
```
相比之下,下面显示了使用文字绑定和编码样式消息的`web method`的请求消息正文的示例:
```xml
10
5
17
2
```
在这种情况下,`SOAP`主体只有一个子元素。
# 与 `%XML.DataSet` 一起使用
对于 `%XML.DataSet`, 类型的对象,并非所有 `SoapBindingStyle` 和 `SoapBodyUse` 关键字的排列都是允许的,,如下表总结:
type | supported?| supported?
---|---|---
空 |SoapBodyUse=literal(默认) | SoapBodyUse=encoded
SoapBindingStyle=document(default) |supported| not supported
SoapBindingStyle=rpc| supported |supported