美文网首页
第九章 使用进程私有全局变量来支持非常大的消息

第九章 使用进程私有全局变量来支持非常大的消息

作者: Cache技术分享 | 来源:发表于2024-07-30 07:57 被阅读0次

    第九章 使用进程私有全局变量来支持非常大的消息

    使用进程私有全局变量来支持非常大的消息

    默认情况下、 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%sessionWeb 服务属性。请注意,Web 服务的 MsgClass 属性是包含 Web 方法参数的消息描述符类。

    OnPostWebMethod()

    在执行 Web 方法后立即调用;默认情况下不执行任何操作。此方法不接受任何参数,也不能返回任何值。因此,此方法无法更改 Web 方法的执行或返回值。自定义此方法主要是为了清理 OnPreWebMethod() 创建的必需结构。

    相关文章

      网友评论

          本文标题:第九章 使用进程私有全局变量来支持非常大的消息

          本文链接:https://www.haomeiwen.com/subject/jozwhjtx.html