1

我已经实现了一个基于 Novell/NetIQs Identity Manager 的 SOAP 驱动程序的解决方案。在我的 SOAP 驱动程序上也有一个驱动程序运行状况作业和一个驱动程序运行状况配置。

驱动程序启动时有查询query-driver-ident,驱动程序运行时有规律地查询。问题是:为什么驱动启动时系统会回答查询,驱动运行时为什么会通过?当查询通过时:连接的系统期望回复什么?

详情如下:

当驱动程序启动时,我看到以下跟踪,这很好:

[12/11/13 13:13:18.558]:Codex-KMS ST:Received state change event.
[12/11/13 13:13:18.559]:Codex-KMS ST:Transitioned from state '%+C%14CStopped%-C' to state '%+C%14CStarting%-C'.
[12/11/13 13:13:18.566]:Codex-KMS ST:Successfully processed state change event.
[12/11/13 13:13:18.568]:Codex-KMS ST:Submitting identification query to subscriber shim:
[12/11/13 13:13:18.568]:Codex-KMS ST:
<nds dtdversion="4.0" ndsversion="8.x">
  <source>
    <product edition="Advanced" version="4.0.1.0">DirXML</product>
    <contact>Novell, Inc.</contact>
  </source>
  <input>
    <query event-id="query-driver-ident" scope="entry">
      <search-class class-name="__driver_identification_class__"/>
      <read-attr/>
    </query>
  </input>
</nds>
[12/11/13 13:13:18.572]:Codex-KMS ST:SubscriptionShim.execute() returned:
[12/11/13 13:13:18.587]:Codex-KMS ST:
<nds dtdversion="2.0">
  <source>
    <product build="20110402_112430" instance="Codex-KMS" version="3.5.6">Identity Manager Driver for SOAP</product>
    <contact>Novell, Inc.</contact>
  </source>
  <output>
    <instance class-name="__driver_identification_class__">
      <attr attr-name="driver-id">
        <value type="string">SOAP</value>
      </attr>
      <attr attr-name="driver-version">
        <value type="string">3.5.6</value>
      </attr>
      <attr attr-name="min-activation-version">
        <value type="int">3</value>
      </attr>
    </instance>
  </output>
</nds>

但是,当驱动程序正在运行并且驱动程序运行状况作业检查跟踪如下:

[12/11/13 13:15:01.461]:Codex-KMS ST:Injecting User Agent XDS command document into Subscriber channel.
[12/11/13 13:15:01.462]:Codex-KMS ST:Applying command transformation policies.
[12/11/13 13:15:01.463]:Codex-KMS ST:Applying policy: ...
[12/11/13 13:15:01.485]:Codex-KMS ST:Policy returned:
[12/11/13 13:15:01.487]:Codex-KMS ST:
<nds dtdversion="4.0" ndsversion="8.x">
    <source>
        <product edition="Advanced" version="4.0.1.0">DirXML</product>
        <contact>Novell, Inc.</contact>
    </source>
    <input>
        <query event-id="query-driver-ident" scope="entry">
            <search-class class-name="__driver_identification_class__"/>
            <read-attr/>
        </query>
    </input>
</nds>
[12/11/13 13:15:01.494]:Codex-KMS ST:Filtering out notification-only attributes.
[12/11/13 13:15:01.496]:Codex-KMS ST:Fixing up association references.
[12/11/13 13:15:01.498]:Codex-KMS ST:Applying schema mapping policies to output.
[12/11/13 13:15:01.500]:Codex-KMS ST:Applying policy: %+C%14CKMS-Mapping%-C.
[12/11/13 13:15:01.502]:Codex-KMS ST:  No mapping for class-name '__driver_identification_class__'.
[12/11/13 13:15:01.504]:Codex-KMS ST:Applying output transformation policies.
[12/11/13 13:15:01.509]:Codex-KMS ST:Applying XSLT policy: %+C%14CSOAP+Output+Transform%-C.
[12/11/13 13:15:01.513]:Codex-KMS ST:  %13Cxsl:message -> Output: Add SOAP Headers
[12/11/13 13:15:01.516]:Codex-KMS ST:Policy returned:
[12/11/13 13:15:01.518]:Codex-KMS ST:
<nds dtdversion="4.0" ndsversion="8.x">
  <source>
    <product edition="Advanced" version="4.0.1.0">DirXML</product>
    <contact>Novell, Inc.</contact>
  </source>
  <input>
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:spml="urn:oasis:names:tc:SPML:1:0">
      <soap-env:Body>
        <query event-id="query-driver-ident" scope="entry">
          <search-class class-name="__driver_identification_class__"/>
          <read-attr/>
        </query>
      </soap-env:Body>
    </soap-env:Envelope>
  </input>
</nds>
[12/11/13 13:15:01.525]:Codex-KMS ST:Applying XSLT policy: %+C%14CSPML+Output+Transform%-C.
[12/11/13 13:15:01.528]:Codex-KMS ST:  %13Cxsl:message -> Output: Convert XDS to SPML
[12/11/13 13:15:01.532]:Codex-KMS ST:Policy returned:
[12/11/13 13:15:01.533]:Codex-KMS ST:
<nds dtdversion="4.0" ndsversion="8.x">
  <source>
    <product edition="Advanced" version="4.0.1.0">DirXML</product>
    <contact>Novell, Inc.</contact>
  </source>
  <input>
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:spml="urn:oasis:names:tc:SPML:1:0">
      <soap-env:Body>
        <searchRequest derefAliases="neverDerefAliases" sizeLimit="1000">
          <filter>
            <and>
              <equalityMatch name="objectclass">
                <value>__driver_identification_class__</value>
              </equalityMatch>
            </and>
          </filter>
          <attributes>
            <attribute name="1.1"/>
          </attributes>
          <operation-data parent-node-1="searchResponse">
            <return-to-me command="query" event-id="query-driver-ident" scope="entry"/>
          </operation-data>
        </searchRequest>
      </soap-env:Body>
    </soap-env:Envelope>
  </input>
</nds>
[12/11/13 13:15:01.543]:Codex-KMS ST:Submitting document to subscriber shim:
[12/11/13 13:15:01.545]:Codex-KMS ST:
<nds dtdversion="4.0" ndsversion="8.x">
  <source>
    <product edition="Advanced" version="4.0.1.0">DirXML</product>
    <contact>Novell, Inc.</contact>
  </source>
  <input>
    <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:spml="urn:oasis:names:tc:SPML:1:0">
      <soap-env:Body>
        <searchRequest derefAliases="neverDerefAliases" sizeLimit="1000">
          <filter>
            <and>
              <equalityMatch name="objectclass">
                <value>__driver_identification_class__</value>
              </equalityMatch>
            </and>
          </filter>
          <attributes>
            <attribute name="1.1"/>
          </attributes>
          <operation-data parent-node-1="searchResponse">
            <return-to-me command="query" event-id="query-driver-ident" scope="entry"/>
          </operation-data>
        </searchRequest>
      </soap-env:Body>
    </soap-env:Envelope>
  </input>
</nds>
[12/11/13 13:15:01.556]:Codex-KMS ST:Codex-KMS: Value of boolean flag 'remove-existing' is : false
[12/11/13 13:15:01.560]:Codex-KMS ST:Codex-KMS: HTTPSubscriberTransport.send()
[12/11/13 13:15:01.561]:Codex-KMS ST:Codex-KMS: Preparing HTTP POST connection to ...
[12/11/13 13:15:01.563]:Codex-KMS ST:Codex-KMS: Setting the following HTTP request properties:
[12/11/13 13:15:01.565]:Codex-KMS ST:Codex-KMS:   Authorization: <credentials suppressed>
[12/11/13 13:15:01.567]:Codex-KMS ST:Codex-KMS:   SOAPAction: #batchRequest
[12/11/13 13:15:01.569]:Codex-KMS ST:Codex-KMS:   Content-Type: text/xml; charset=utf-8
[12/11/13 13:15:01.573]:Codex-KMS ST:Codex-KMS: Did HTTP POST with 423 bytes of data to ...
[12/11/13 13:15:01.600]:Codex-KMS ST:Codex-KMS: Response code and message: 200 OK
[12/11/13 13:15:01.603]:Codex-KMS ST:SubscriptionShim.execute() returned:
[12/11/13 13:15:01.604]:Codex-KMS ST:
<nds dtdversion="2.0">
  <source>
    <product build="20110402_112430" instance="Codex-KMS" version="3.5.6">Identity Manager Driver for SOAP</product>
    <contact>Novell, Inc.</contact>
  </source>
  <output>
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<spml:searchResponse error="urn:oasis:names:tc:SPML:1:0#unsupportedOperation" requestID="rid-2abd6523-d4c6-45c2-9d54-3448bb10aeb7" result="urn:oasis:names:tc:SPML:1:0#failure" xmlns:dsml="urn:oasis:names:tc:DSML:2:0:core" xmlns:spml="urn:oasis:names:tc:SPML:1:0">
  <spml:errorMessage>UNSPECIFIED_ERROR</spml:errorMessage>
</spml:searchResponse>
</SOAP-ENV:Body>
<operation-data parent-node-1="searchResponse" xmlns="urn:oasis:names:tc:SPML:1:0">
        <return-to-me command="query" event-id="query-driver-ident" scope="entry"/>
      </operation-data>
    </SOAP-ENV:Envelope>
  </output>
</nds>

该错误UNSPECIFIED_ERROR是由我的应用程序在未为此查询准备的 Web 服务端点上生成的。

4

1 回答 1

2

恕我直言,您的第一个问题的答案是因为编写了驱动程序垫片,以便仅在启动后第一次回答 ident 查询。

至少有两种方法可以用来克服此错误: 1. 将驱动程序运行状况作业(位于驱动程序集下)配置为不使用“订阅者心跳”。此设置影响所有驱动程序。2.在子ctp中否决这样的查询: if (operation="query" and @event-id="query-driver-ident") then veto();

于 2016-07-07T15:17:03.340 回答