第九章 使用进程私有全局变量来支持非常大的消息
使用进程私有全局变量来支持非常大的消息
默认情况下、 Web
服务在解析请求或响应时通常使用本地数组内存。可以强制它改用进程私有全局变量;这使 Web
服务能够处理非常大的消息。
为此,请指定 Web
服务类的 USEPPGHANDLER
参数,如下所示:
Parameter USEPPGHANDLER = 1;
如果此参数为 1
,则 Web
服务在解析请求或响应时始终使用进程私有全局变量。如果此参数为 0
,则 Web
服务始终使用本地数组内存来实现这些目的。如果未设置此参数,则 Web 服务使用默认值,通常是本地数组内存。
自定义 Web
服务的回调
可以通过覆盖其回调方法来定制 Web
服务的行为:
OnRequestMessage()
如果没有安全错误,则在 Web
服务收到请求消息时调用;如果出现安全错误,则不会调用此回调。系统在执行安全处理、检查信封是否有错误以及处理 WS-Addressing
标头中指定的操作(如果有)后调用此回调。此回调对于记录原始 SOAP
请求等任务很有用。
此方法具有以下签名:
Method OnRequestMessage(mode As %String, action As %String, request As %Stream.Object)
其中:
-
mode
指定SOAP
请求的类型。该类型为“SOAP”
或“binary”
。 -
action
包含SOAPAction
标头的值。 - 请求以流的形式包含
SOAP
请求消息。
此方法可以使用对象 %request
,它是 %CSP.Session
实例。在此对象中:
-
Content
属性包含原始请求消息。 -
NextMimeData()
实例方法使能够检索单个MIME
部分(如果这是一个MIME SOAP
请求)。
此方法还可以使用 Web
服务实例的属性。初始化期间设置以下属性:
-
ImportHandler
属性包含已解析的SOAP
请求消息的DOM
。 -
SecurityIn
属性包含WS-Security
标头元素。有关详细信息,请参阅保护Web
服务。 -
SecurityNamespace
属性包含WS-Security
标头元素的命名空间。 - 如果生成了
SOAP
错误,则会设置SoapFault
属性。
要在 OnRequestMessage()
中返回错误,请设置 SoapFault
属性。不要调用 ReturnFault()
方法。
OnPreWebMethod()
在执行 Web
方法之前调用;默认情况下不执行任何操作。此方法不接受任何参数,也不能返回任何值。因此,此方法无法更改 Web
服务的执行,除非以与 Web
方法相同的方式返回 SOAP
错误。
此方法可以使用 %request
、%session
和 Web
服务属性。请注意,Web
服务的 MsgClass
属性是包含 Web
方法参数的消息描述符类。
OnPostWebMethod()
在执行 Web
方法后立即调用;默认情况下不执行任何操作。此方法不接受任何参数,也不能返回任何值。因此,此方法无法更改 Web
方法的执行或返回值。自定义此方法主要是为了清理 OnPreWebMethod()
创建的必需结构。
网友评论