レベル: 中級 Susan Malaika, XML 技術者,Web技術者,グリッド・コンピューティング,IBM Academy of Technology, IBM Christian Pichler, Data Server Solutions (Co-op), IBM
2008年 06月 19日 XML 文書インスタンスの構造および内容の検証における重要な側面は、検証の失敗を追跡できることです。このシリーズのパート 1 では、XML スキーマおよび Schematron による XML 文書インスタンスの構造および内容の検証について説明しました。検証は IBM WebSphere® DataPower® SOA アプライアンスによって実行されました。この記事では、簡単にアクセスおよび照会を行える監査ログを提供することにより、IBM DB2® pureXML が WebSphere DataPower SOA アプライアンスをさらに補完できる方法ついて確認してください。この記事で説明するサンプル・シナリオは、XML 文書インスタンスの交換が行われるあらゆる状況に適用できます。
前提条件
この記事で紹介する概念は、このシリーズのパート 1の「WebSphere DataPower および DB2 pureXML を使用した XML スキーマ検証および内容の検証」(developerWorks、2008 年 5 月) に続くものです。このトピックに関する理論的背景については、該当する記事を参照してください。
はじめに
このシリーズの前回の記事では、XML 文書インスタンスを DB2 pureXML データベースに保管する前に、IBM WebSphere DataPower SOA アプライアンスによって行われる XML 文書インスタンスの構造および内容の検証について説明しました。
今回の記事の目的は、簡単にアクセスおよび照会が行える、WebSphere DataPower アプライアンスの監査ログとして DB2 pureXML データベースを使用する方法について説明することです (図 1 を参照してください)。監査情報には、XML 文書インスタンスのロギングに加え、WebSphere DataPower アプライアンスによる XML 文書インスタンスのルーティング、変換、検証の詳細が含まれる場合があります。
図1. DB2 pureXML 監査ログ・シナリオ
シナリオの基本的な概念は、WebSphere DataPower アプライアンスが、送信元のエンドポイントから受け取った XML 文書インスタンスの XML スキーマ検証および Schematron 検証を実行した後、検証結果を DB2 pureXML 監査ログ・データベースに保管するというものです。送信元のエンドポイントの例には、XForms クライアントや、さらには XML 文書インスタンスの交換を行う別の情報システムなどが考えられます。WebSphere DataPower SOA アプライアンスは、監査ログ・データベースに成功または失敗のメッセージを保管します。メッセージには、検証が失敗した理由に関する詳細情報が含まれます。また WebSphere DataPower アプライアンスは、検証結果とは関係なく、検証済みの XML 文書インスタンスを受信エンドポイントに転送します。受信ポイントは、別の DB2 pureXML データベースの場合も、さらには別のアプリケーションや情報システムの場合もあります。
この記事で説明するソリューションの主な利点は、XML 文書インスタンスの交換が行われるあらゆるシナリオに適用できる点です。例えば、Web サービスを使用して 2 つの情報システムまたはアプリケーション・システム間で XML 文書インスタンスを交換できます。「Using DB2 9 pureXML with WebSphere ESB(US)」(developerWorks、2008 年 6 月) というタイトルの同様な記事に、DB2 pureXML を WebSphere Enterprise Service Bus (WESB) の監査ログとして使用する場合の説明があります。
シナリオのセットアップ
次のセクションでは、図 2 に示す簡略なシナリオのセットアップについて説明します。このシナリオでは、DB2 pureXML データベースを WebSphere DataPower SOA アプライアンスの監査ログとして使用する方法を紹介します。シナリオを簡略にするために、XML 文書インスタンスは、クライアントから WebSphere DataPower アプライアンスに送信されるものとします。WebSphere DataPower アプライアンスは、XML 文書インスタンスを検証してから、その XML 文書インスタンスを別の DB2 pureXML データベースに転送します。
図2. DB2 pureXML 監査ログのサンプル・シナリオ
図 2 に示すシナリオをセットアップするには、下記で概略を示すステップに従います。
ステップ 1:XML 文書、XML スキーマ、Schematron、および受信エンドポイントを作成する
図 2 に示すシナリオは、このシリーズのパート 1 で使用されたシナリオの拡張版です。この記事で使用されるシナリオを設定するには、最初のステップとしてパート 1 のステップ 1 および 2 を実行します。
ステップ 2:DB2 pureXML 監査ログ・データベースを作成する
このセクションでは、WebSphere DataPower アプライアンスからの検証結果の監査ログとして機能する DB2 pureXML データベースのセットアップについて説明します。
下記のリスト 1 および 2 に示すとおり、監査ログ・データベースのセットアップは 1 つの表と 1 つのストアード・プロシージャーのみから成ります。
リスト 1 : DB2 pureXML 監査ログ・データベースのセットアップ
DROP DATABASE AUDIT@
CREATE DATABASE AUDIT@
CONNECT TO AUDIT@
CREATE SCHEMA DB2ADMIN@
CREATE TABLE DB2ADMIN.AUDIT
(ID INT PRIMARY KEY NOT NULL GENERATED ALWAYS AS IDENTITY,
AUDITINFO XML,
RECORD XML)@
|
リスト 2 : 「Audit」表に監査情報を挿入するストアード・プロシージャーのセットアップ
CREATE PROCEDURE insertAuditRecord (IN xmlAuditInfo XML, IN xmlRecord XML)
SPECIFIC insertAuditRecord
P1: BEGIN
INSERT INTO DB2ADMIN.AUDIT (AUDITINFO, RECORD)
VALUES (xmlAuditInfo, xmlRecord);
END P1@
|
図 3 に示すとおり、次にストアード・プロシージャー insertAuditRecord を Data Web Service によって公開します。これにより、SOAP 要求または REST 要求によってストアード・プロシージャーを呼び出せるようになります。
図3. DB2 pureXML 監査ログ・データベース設定の概要
この記事では、Data Web Service を作成する方法について、これ以上は詳しく説明しません。詳細情報が必要な場合は、「IBM Data Studio: Get started with Data Web Services(US)」(developerWorks、2007 年 11 月) の解説を読んでください。
ステップ 3:WebSphere DataPower SOA アプライアンスを設定する
このシナリオに関連する WebSphere DataPower SOA アプライアンスの理論的背景が、このシリーズの最初の記事のステップ 3 で紹介されています。
最初のステップは、XML スキーマ検証の設定です。言い換えると、DataPower アプライアンス上の当該のポリシーに送信される XML 文書を、特定の XML スキーマに照らして検証します。XML スキーマ検証を設定するには、図 4 の (3)に示すとおり、XML スキーマ検証の処理アクションを処理規則に追加します。
図4. DataPower SOA アプライアンスの XML ファイアウォール設定
XML スキーマ検証のデフォルト動作では、検証アクションが失敗した場合は、DataPower アプライアンスが、最初に XML 文書を送信したクライアントの要求に対して、失敗メッセージおよび HTTP 500 エラー・コードの応答を返します。この場合の標準的なエラー・メッセージには、検証アクションが失敗した理由についての特定の情報は含まれません。
デフォルト動作をオーバーライドして、検証の失敗に関する詳細情報を示すために、この記事では図 4 の(2)に示すとおり、規則にエラー時アクションを含めています。エラー時アクションが契機となってポリシーが「Rule #2」という名前の別の規則を呼び出します (図 5 の(1))。Rule #2 が呼び出されると、リスト 3 に示す XSL スタイルシートを実行します。
図5. DataPower SOA アプライアンスの XML ファイアウォール設定のスクリーン・ショット
Rule #2 の実行後、エラー時アクションのデフォルト動作では、処理ポリシーが中止されます。そして、処理を継続するためにオーバーライドされる可能性があります。このシナリオでは、XML スキーマ検証中に致命的エラーが発生した場合には処理を継続するようにエラー時アクションを設定しています。
リスト 3: 検証の失敗の詳細を読み込んで、DB2 pureXML 監査ログ・データベースに監査レコードを挿入する XSL スタイルシート
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dp="http://www.datapower.com/extensions"
extension-element-prefixes="dp"
exclude-result-prefixes="dp">
<xsl:output method="xml"/>
<xsl:template match="/">
<dp:url-open
target="http://auditdb2:8080/audit/rest/audit/insertAuditRecord"
response="ignore"
data-type="xml"
content-type="text/xml">
<q0:insertAuditRecord xmlns:q0="urn:example">
<q0:_xFFFF_xmlAuditInfo>
<error>
<xsl:value-of select="dp:variable('var://service/error-message')"/>
</error>
</q0:_xFFFF_xmlAuditInfo>
<q0:_xFFFF_xmlRecord>
<xsl:copy-of select="." />
</q0:_xFFFF_xmlRecord>
</q0:insertAuditRecord>
</dp:url-open>
</xsl:template>
</xsl:stylesheet>
|
リスト 3 に示した XSL スタイルシートは、検証アクションが失敗した理由を説明する特定のエラー・メッセージを取得し、DB2 pureXML 監査ログ・データベースの Data Web Service によって監査ログ・データベースにエラー・メッセージを挿入します。次に、スタイルシートは、オリジナルの XML 文書インスタンスを受信エンドポイントに転送します。
これで、DataPower アプライアンスが実行しなければならない項目は、残り 2 つになりました。最初の項目は、Schematron XSL スタイルシートを着信要求の XML 文書インスタンスに適用することです。Schematron 検証の後、WebSphere DataPower アプライアンスは、Schematron 検証の結果を監査ログ・データベースの Data Web Services に転送し、Data Web Service が検証結果をDB2 pureXML 監査ログ・データベースに挿入します。また DataPower アプライアンスは、検証結果とは関係なく、要求 XML 文書インスタンスを受信エンドポイントに転送しますSchematron 検証および転送は、図 4 の(4)に示すように別の XSL スタイルシート変換アクションによって実行されます。その際には、リスト 4 に示す XSL スタイルシートが実行されます。
リスト 4: XSL スタイルシートの実行、DB2 pureXML 監査ログ・データベースへの結果の挿入、および受信エンドポイントへの XML 文書インスタンスの転送を行う XSL スタイルシート
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:dp="http://www.datapower.com/extensions"
extension-element-prefixes="dp"
exclude-result-prefixes="dp">
<xsl:output method="xml" />
<xsl:template match="/">
<xsl:variable name="schematronResult">
<error>
<xsl:value-of select="dp:transform('local:///simple.xsl', .)" />
</error>
</xsl:variable>
<dp:url-open
target="http://aduitdb2:8080/audit/rest/audit/insertAuditRecord"
response="ignore"
data-type="xml"
content-type="text/xml">
<q0:insertAuditRecord xmlns:q0="urn:example">
<q0:_xFFFF_xmlAuditInfo>
<xsl:choose>
<xsl:when test="$schematronResult/error/text()">
<xsl:copy-of select="$schematronResult" />
</xsl:when>
<xsl:otherwise>
<success>All validation Steps completed successfully!</success>
</xsl:otherwise>
</xsl:choose>
</q0:_xFFFF_xmlAuditInfo>
<q0:_xFFFF_xmlRecord>
<xsl:copy-of select="." />
</q0:_xFFFF_xmlRecord>
</q0:insertAuditRecord>
</dp:url-open>
<dp:url-open
target="http://endpointdb2:8080/patient/rest/patient/insertPatient"
response="xml"
data-type="xml"
content-type="text/xml">
<q0:insertPatient xmlns:q0="urn:example">
<q0:_xFFFF_xmlRecord>
<xsl:copy-of select="." />
</q0:_xFFFF_xmlRecord>
</q0:insertPatient>
</dp:url-open>
</xsl:template>
</xsl:stylesheet>
|

 |
デモンストレーション
 | |
cURL は、HTTP などの種々のプロトコルをサポートする、特定の URL にファイルを転送するコマンド行ツールです。このツールはダウンロードが可能です (「参考文献」セクションを参照してください。)。 |
|
このサンプルのセットアップが成功したら、いよいよ DataPower SOA アプライアンス、DB2 pureXML、および Data Web Service を連携させます。このデモンストレーションでは、この記事でこれまで定義してきた XML 文書インスタンスを使用します。
最初に、コマンド行ツールの cURL を使用して、WebSphere DataPower SOA アプライアンスに 3 つの XML 文書インスタンスを送信します。サンプル XML 文書インスタンスの送信は、下記のリスト 5 で示します。
リスト 5: サンプル XML 文書インスタンスの送信
cpichle@DAIRYFARM /tmp
$ curl --data-binary @simple_1.xml http://datapowerbox:2055/
<?xml version="1.0" encoding="UTF-8"?>
<ns1:insertPatientResponse
xmlns:ns1="urn:example"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
cpichle@DAIRYFARM /tmp
$ curl --data-binary @simple_2.xml http://datapowerbox:2055/
<?xml version="1.0" encoding="UTF-8"?>
<ns1:insertPatientResponse
xmlns:ns1="urn:example"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
cpichle@DAIRYFARM /tmp
$ curl --data-binary @simple_3.xml http://datapowerbox:2055/
<?xml version="1.0" encoding="UTF-8"?>
<ns1:insertPatientResponse
xmlns:ns1="urn:example"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
cpichle@DAIRYFARM /tmp
$
|
サンプル XML 文書インスタンスの送信後に、監査情報および受信エンドポイントの確認が可能です。それについては、次のセクションで説明します。
監査情報
DB2 pureXML を WebSphere DataPower SOA アプライアンスの監査ログとして使用する利点は、簡単にアクセスできるログが提供されることです。
3 つのサンプル XML 文書インスタンスを DataPower SOA アプライアンスに送信した結果として、監査ログ・データベースには 3 つの異なるエラー・メッセージおよび 1 つの成功メッセージが挿入されると予想されます。最初の XML 文書インスタンスは Schematron 規則に違反し、2 番目の文書は XML スキーマに定義されている構造および Schematron 規則に違反しています。3 番目の XML 文書インスタンスは、XML スキーマおよび Schematron の両方に準拠しています。
これで、DB2 pureXML 監査ログ・データベースに XML 文書インスタンスの検証結果を照会できるようになりました。これを実行する照会ステートメントをリスト 6 に示します。指定した照会ステートメントによって、監査ログに含まれているオリジナルの XML 文書インスタンスは返されないことに注意してください。
リスト 6: DB2 pureXML 監査ログ・データベースの監査レコードの照会
C:\scenario_2\>db2 CONNECT TO AUDIT
Database Connection Information
Database server = DB2/NT 9.5.1
SQL authorization ID = CPICHLE
Local database alias = AUDIT
C:\scenario_2\>db2 SELECT ID, AUDITINFO FROM DB2ADMIN.AUDIT
ID AUDITINFO
-- -------------------------------------------------------------------
22 <error>First name must not be 'christian'!</error>
23 <error>http://watdp.watson.ibm.com:2056/: cvc-particle 3.1: in
element person with anonymous type, found <name> (in
default namespace), but next item should be
identification
</error>
24 <error>First name must not be 'christian'!</error>
25 <success>All validation Steps completed successfully!</success>
4 record(s) selected.
C:\scenario_2\>
|
エラー・メッセージおよび成功メッセージに加え、監査ログ・データベースにはさらにメッセージが属する XML 文書インスタンスも保管されます。照会により、すべてのメッセージおよびリスト 7 に示される XML 文書インスタンスが取得されます。
リスト 7: オリジナルの XML 文書インスタンスが含まれる完全な監査ログ・レコードを取得する代替の照会
C:\scenario_2\>db2 SELECT ID, AUDITINFO, RECORD FROM DB2ADMIN.AUDIT
|
受信エンドポイント
WebSphere DataPower SOA アプライアンスが 3 つの XML 文書インスタンスの検証を実行したため、受信エンドポイントでは 3 つのレコードが予想されます。この記事のサンプルでは、受信エンドポイントは別の DB2 pureXML データベースとなっています。リスト 8 に示すように、このデータベースに対して照会を実行できます。
リスト 8: DB2 pureXML エンドポイント・データベースに保管される XML 文書インスタンスの照会
C:\scenario_2\>db2 CONNECT TO HOSPITAL
Database Connection Information
Database server = DB2/NT 9.5.1
SQL authorization ID = CPICHLE
Local database alias = HOSPITAL
C:\scenario_2\>db2 SELECT ID, COMMENT, RECORD FROM DB2ADMIN.PATIENT
ID COMMENT RECORD
-- ------- ----------------------------------------------------------
13 <person
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:noNamespaceSchemaLocation="simple.xsd">
<identification>1</identification>
<name>
<first>christian</first>
<last>pichler</last>
</name>
</person>
14 <person
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="simple.xsd">
<name>
<first>christian</first>
<last>pichler</last>
</name>
</person>
15 <person
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="simple.xsd">
<identification>3</identification>
<name>
<first>keith</first>
<last>wells</last>
</name>
</person>
3 record(s) selected.
C:\scenario_2\>
|
まとめ
この記事では、実用的かつ便利な方法で WebSphere DataPower SOA アプライアンスの監査ログとして DB2 pureXML を使用する方法を説明しました。この記事で示したシナリオは、XML 文書インスタンスの交換が行われるさまざまなシナリオに適用できます。この記事では、DB2 pureXML が監査ログへの容易な照会を提供することで、シナリオにいかに価値が付加されるかを示しました。データベースに保管される監査ログ情報は、さらに一歩進めた処理や XML 文書インスタンス検証の失敗の分析に使用できます。この記事では、WebSphere DataPower SOA アプライアンスと DB2 pureXML の組み合わせによって、XML 文書インスタンスの検証を実行する効果的で柔軟な環境を提供できることをあらためて示しました。
謝辞
知識およびアドバイスを提供することで記事に貢献してくださった Bob Callaway 氏、およびその他の方々に感謝します。
ダウンロード | 内容 | ファイル名 | サイズ | ダウンロード形式 |
|---|
| この記事に関連するダウンロード・ファイル | download.zip | 4KB | HTTP |
|---|
参考文献 学ぶために
製品や技術を入手するために
- cURL(US): HTTP などの種々のプロトコルをサポートする、特定の URL にファイルを転送するこのコマンド行ツールをダウンロードしてください。
- pureXML を使用した業界フォーマットおよびサービス(US):非常に多彩なサンプル (無料) があります。ダウンロードして使ってみてください。各サンプルは、XML ベースの業界フォーマットおよび pureXML を使用する方法を示します。サンプルでは、XML スキーマの登録方法、XML インスタンス文書の検証の実行方法、XQuery または SQL/XML を使用した XML データの照会方法など、非常に多くの方法が示されます。
- IBM Data Studio(US):Data Web Service の開発に使用する開発環境をダウンロードしてください。無料です。
- DB2 Express-C(US):pureXML テクノロジーなど、他の Data Server と同じコア機能が含まれる DB2 の無料版をダウンロードしてください。DB2 Express-C は無料であり、開発、デプロイ、配布に使用できます。
- developerWorks から直接ダウンロードできる IBM トライアル・ソフトウェア(US)を使用して、次の開発プロジェクトを構築してください。
議論するために
著者について  | 
|  | Susan MalaikaはIBMのInformation Management Groupで働いています。専門はXML技術とWeb技術であり、グリッド・コンピューティングも含まれます。Webに関する記事を発表しており、また共著もあります。IBM Academy of Technologyのメンバーです。 |
 | 
|  | Christian Pichler は、オーストリアの Technical University of Vienna の co-op (インターン) であり、ヘルスケアを中心とするコンピューター・エンジニアリングおよびコンピューター・サイエンスのダブルマスターの学位を取得するために論文を執筆中です。Christian は、IBM においては、XML を DB2 に保管して、Web サービス、フィード、および XForms によってアクセスするテクノロジーについて研究しています。ヘルスケアに関する XML 標準が専門です。 |
記事の評価
|