Web サービス API の問題のトラブルシューティング

内容
casp1032jp
内容
一般的な問題
CA Spectrum
 Web サービス API を使用している際に問題が発生した場合は、以下を確認してください。
  • URL が正しく構成されていますか?
  • 動詞は名詞と共に正しく使用されていますか?
  • GET トンネリングの要求 XML は正しく構成されていますか?
  • 適切な認証情報が入力されていますか?
  • 「accept」ヘッダおよび「Content-type」は XML または JSON について正しく設定されていますか?
  • CA Spectrum
     Web サービス API エラーが tomcat ログに表示されていますか?
[次へ]リンクが動作しない
問題の状況:
次のスロットル制御されている一連の結果を取得しようとすると、応答で生成された[次へ]リンクが正しく動作しません。
解決方法:
生成されたリンク内のパラメータの形式は、ご使用の環境によって異なる場合があります。たとえば、「&」は「&」として生成される場合があります。これは、XML、HTTP、および JSON 形式標準の間の差異によるものです。以下の URL の start パラメータと throttlesize パラメータのプレフィックスの違いに注意してください。
http://localhost/spectrum/restful/models?id=5b03b5ba-64ed-4603-b3e1-8e71919fccd8&start=2&throttlesize=2 http://localhost/spectrum/restful/models?id=5b03b5ba-64ed-4603-b3e1-8e71919fccd8&start=2&throttlesize=2
修正するには、URL の「&amp」を「&」に変更します。
注:
 これは XML にのみ適用されます(JSON には適用されません)。
Web サービス API 検索で SpectroSERVER がクラッシュする
問題の状況
Web サービス API 検索の実行直後に、CA Spectrum SpectroSERVER がクラッシュします。
スタック出力は以下のようになります(キーは beingCsModelDomainSrvc::getModelIDListByXmlSearchCriteria)。
#0 0x00002b2f85bc9ca0 in CsBuffer::makestr(int, char) const () from /opt/SPECTRUM/lib/libGlobl.so.1 #0 0x00002b2f85bc9ca0 in CsBuffer::makestr(int, char) const () from /opt/SPECTRUM/lib/libGlobl.so.1 #1 0x00002b2f7e8d46cb in CsLandscape::search_keyed_models(CsFindSpec const*, CsULHashTable*, CsFindSpec::LogicalOp_e, CsULHashTable*, int) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 #2 0x00002b2f7e8d4ad7 in CsLandscape::terminal_find_model_handles(CsFindSpec const*, CsULHashTable*, CsFindSpec::LogicalOp_e, CsError::CsError_e*, int) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1  #3 0x00002b2f7e8d4ee6 in CsLandscape::find_model_handles(CsFindSpec const*, CsError::CsError_e*, CsSecurityIf const*, int) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 #4 0x00002b2f7e8d5786 in CsLandscape::find_models(CsFindSpec const*, CsSecurityIf const*, int) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 #5 0x00002b2f7e8d5871 in CsLandscape::find_models(CsFindSpec const*, CsSecurityIf const*) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 #6 0x00002b2f7e8f8d04 in CsModelDomainSrvc::get_model_desc_list(CsSecurityIf const&, char const*, char const*, CsULHashTable*) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 #7 0x00002b2f7e8f9b4c in CsModelDomainSrvc::getModelIDListByXmlSearchCriteria(CsCAttribute::CsCValue const&, CsSecurityIf const&) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 #8 0x00002b2f7e858217 in CModelDomainItcM::processItcRequest(ITC_Request_Parms*) () from /opt/SPECTRUM/lib/../SS/libsskrnl.so.1 #9 0x00002b2f80fb30d4 in ITC_Request_Parms_Corba::processRequest_TransferExceptions() () from /opt/SPECTRUM/lib/libitc.so.1 #10 0x00002b2f80fb28e1 in ItcWorkQueue::process_work_item(ItcQdItem*) () from /opt/SPECTRUM/lib/libitc.so.1 #11 0x00002b2f80fb26a2 in ItcWorkQueue::process_work_node(CsWorkNode*) () from /opt/SPECTRUM/lib/libitc.so.1 #12 0x00002b2f8340d3aa in CsWorkScheduler::do_work() () from /opt/SPECTRUM/lib/libwkmgr.so.1 #13 0x00002b2f7ebde7a3 in moot_thread_start () from /opt/SPECTRUM/lib/libmoot.so.1 #14 0x00000031a16419e0 in ?? ()
原因:
web サービス クエリ内の互換性のない検索タイプが原因です。
たとえば、isManaged 属性(0x1295d)では「equal」値のみがサポートされます。
「has-substring」または「has-substring-ignore-case」はサポートされません。
解決方法:
web サービス検索を確認します。検索する属性に対して「不正な」検索タイプを使用している場合、修正する必要があります。不正な検索タイプを使用しているかどうかがわからない場合、OneClick ロケータで同じ検索を作成し、検索を保存することができます。<SPECROOT>/custom/console/config ディレクトリの OneClick web サーバ上で検索に関連付けられた xml を確認します。
たとえば、この isManaged 属性(0x1295d)の検索では、isManaged 属性がサブストリング検索で動作しないため、SpectroSERVER がクラッシュします。
<has-substring-ignore-case>
<attribute id="0x1295d">
<value>no</value>
</attribute>
</has-substring-ignore-case>
これを以下のように更新する必要があります。
<equals>
<attribute id="0x1295d">
<value>no</value>
</attribute>
</equals>