0) { obj.className = "imgborder_on"; } } } function hideImage(obj) { if (obj.className.substr(0, 10) == "imgborder_") { obj.src = eyeglass.src; obj.className = "imgborder_off"; } } function showAllImages() { imgs = document.images; for (i=0; i < imgs.length; i++) { showImage(imgs[i]); } } function hideAllImages() { imgs = document.images; for (i=0; i < imgs.length; i++) { hideImage(imgs[i]); } } //-->

サービス指向アーキテクチャにおけるOracle XML DB Webサービスの使用方法

目的

このチュートリアルでは、サービス指向アーキテクチャにおけるOracle XML DB Webサービスの使用方法について説明します。

所要時間

約30分

トピック

このチュートリアルでは、以下のトピックについて説明します。

 概要
 前提条件
 バイナリXML表の作成
 Oracle JDeveloperでのXMLスキーマの確認
 サービス指向アーキテクチャにおけるOracle XML DB Webサービスの使用方法
 まとめ

スクリーンショットの表示

 このアイコンの上にカーソルを置くと、 すべてのスクリーンショットがロードし、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)

注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。

概要

Oracle9i Database Release 2以降、Oracle XML DBはOracleデータベースとシームレスに統合され、XMLデータの格納、取得、管理においてデータベース固有の高いパフォーマンスを提供できるようになりました。 新しいOracle Database 11gのリリースにおいて、Oracle XML DBはさらに一歩進み、XMLおよびSOAアプリケーション開発者を強化しながら、DBAがXMLデータを簡単に管理できる豊富な新機能を提供することができます。 Oracle XML DBは、現在、複数のデータベースのネイティブなXML記憶域モデルとXML索引付けスキーマ、SQL/XML標準操作、W3C標準XQueryデータ・モデルとXQuery/XPath言語、インプレースXMLスキーマ・エボルーション、データベース・ネイティブなWebサービス、高パフォーマンスのXMLパブリッシング、XML DBリポジトリ、およびバージョニングとアクセス制御をサポートします。 このチュートリアルでは、サービス指向アーキテクチャにおけるOracle XML DB Webサービスの使用方法について説明します。

Oracle XML DB Webサービス

Webサービスは、情報交換およびビジネス・ロジックへのアクセスを提供するという両面に対する企業の標準的な手法となりました。 新しいOracle XML DB Webサービス機能は、SQL、XQuery、PL/SQL、およびそのデータベース要素にWebサービスとしてアクセスできるようにします。 たとえば、SQLおよびXQueryの問合せをユーザーが発行して結果をXMLで受け取るWebサービスや、DB内に格納されたすべてのPL/SQL機能およびプロシージャへWebサービスとしてアクセスできるようにするWebサービスなどがあります。

トピック・リストに戻る

前提条件

このチュートリアルを始める前に、次の手順を完了している必要があります。

1.

Oracle Database 11gがインストールされ、 OE HR ユーザーがアンロックされていること。

2. Oracle JDeveloper(10.1.3.3)のStudio Editionをダウンロードして、基本インストールを選択すること。
3. Oracle Database 11g に接続するよう、環境変数を設定します。
4.

xmldb2_b.zipファイルをダウンロードし、作業ディレクトリ(wkdir等)に解凍すること。

:前のバージョンのOracle JDeveloperを使用している場合、スクリーンショットは若干異なる可能性があります。

前提条件の追加情報

Oracle Database 11gのインストール時に、 OEおよび HRユーザーがアンロックされていない場合、以下を実行します。

a. 端末ウィンドウを開き、以下のコマンドを入力します。

sqlplus sys/oracle as sysdba;

b. sysとして接続できたら、OEおよびHRアカウントをアンロックします。そして、OEおよびHRに対して dbaロールを与えます。 OEに SELECT_CATALOG_ROLEロールを与えます。 SQL*Plusウィンドウで、以下のコマンドを入力します。 もしくは accounts.sqlスクリプトを実行します。

ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;
ALTER USER OE IDENTIFIED BY OE ACCOUNT UNLOCK;
GRANT DBA to OE, HR;
GRANT SELECT_CATALOG_ROLE TO OE;

必ずHTTPポートを 8080に設定してください。 端末ウィンドウを開き、以下の文を実行します。

sqlplus sys/oracle as sysdba;
exec dbms_xdb.sethttpport('8080');

Oracle XML DBを使用したXMLとリレーショナル・データの格納、問合せ、およびアクセス』Oracle by Example(OBE)をすでに実行している場合は、HTTPポートを再度8080に設定する必要はありません。

Oracle Database 11g に接続するよう環境変数を設定するには、以下を実行します。

a. 端末ウィンドウを開き、 .bash_profileを検索します。

b. .bash_profileを編集し、以下について確認します。

  • ORACLE_HOME環境変数が設定されている
  • ORACLE_HOME/libが LD_LIBRARY_PATH環境変数に追加されている

たとえば、 ORACLE_HOMEが $ORACLE_BASE/product/11.1.0/db_1であれば、 .bash_profileに以下のエントリが含まれていることを確認します。

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.1.0/db_1
ORACLE_SID=orcl
PATH=$ORACLE_HOME/bin:$PATH

export PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID LD_LIBRARY_PATH

c. .bash_profileに変更を加えた場合、スクリプトを以下のとおり実行します。

./.bash_profile

 

トピック・リストに戻る

バイナリXML表の作成

このチュートリアルでは、Oracle SQL Developerツールを使用します。 データベース接続の作成後、Oracle SQL Developerでスクリプト・パス参照を設定します。 バイナリXML表を作成し、 PURCHASEORDER表から選択したデータの行を挿入します。

以下の手順を実行します。

 

1.

端末ウィンドウを開き、Oracle SQL Developerをインストールした場所に移動します。 次に、Oracle SQL Developerを開始します。 以下のコマンドを使用します。

cd /u01/app/oracle/product/11.1.0/db_1/sqldeveloper
sh sqldeveloper.sh


2.

Oracle SQL Developerでは、OEユーザーとしてデータベース接続を作成する必要があります。 以下の手順を実行します。

a. Connectionsタブで「 Connections」を右クリックし、「 New Connection」を選択します。

b. New/Select Database Connectionウィンドウが表示されます。 以下の詳細を入力し、「 Test」をクリックして接続が正しく設定されていることを確認します。

Connection Name: oe
UserName: oe
Password: oe
Hostname: localhostまたはリモート・マシンを使用している場合は< hostname>
Port: 1521
SID: orcl

Save Password」チェック・ボックスを選択した場合、パスワードはXMLファイルに保存されます。 よって、Oracle SQL Developer接続を閉じてから再度開くと、パスワードは要求されません。



c. テストのステータスに成功したことが表示されます。 「 Connect」をクリックします。

 

3.

@構文を使用してスクリプトを実行するには、Oracle SQL Developerでスクリプト・パス参照を設定します。 以下の手順を実行します。

a. 「 Tools」→「 Preferences」→「 Database」→「 Worksheet Parameters」の順に選択します。 次に、「 Browse」をクリックします。

b. SQLスクリプトのある作業ディレクトリの場所へ移動します。 次に「 Open」をクリックします。

c. Preferencesウィンドウで、スクリプト・フィールドを検索するためにSelectデフォルト・パスのスクリプト・パスを確認します。 「 OK」をクリックします。

 

4.

create_sl_bix_table.sql スクリプトを実行します。

@create_sl_bix_table.sql

DROP TABLE po_sl_bix_table PURGE;

CREATE TABLE PO_SL_BIX_TABLE OF XMLType
XMLType STORE AS SECUREFILE BINARY XML;
/
INSERT INTO po_sl_bix_table
SELECT object_value FROM purchaseorder;
/

SELECT COUNT(*) FROM po_sl_bix_table
/

COMMIT
/

 

上記の項では、Oracle SQL Developerに接続し、スクリプト・パス参照を設定する方法について学習しました。 また、バイナリXML記憶域を使用して XMLType表を作成し、データとともに表を移入する方法についても学習しました。

トピックに戻る

 

トピック・リストに戻る

Oracle JDeveloperでのXMLスキーマの確認

以下の作業を実行します。

 WebDAV接続の作成
 XMLスキーマの確認

トピック・リストに戻る

WebDAV接続の作成

Oracle XML DB内のXMLスキーマ・ドキュメントへアクセスする前に、WebDAV接続を作成する必要があります。 以下の手順を実行します。

1.

Oracle JDeveloperを起動します。 <jdev_install>/jdev/bin/jdevファイルを実行します。

cd /JDeveloper/jdev/bin
./jdev

または、デスクトップ上の「 JDeveloper」アイコンをダブルクリックします。

 

2.

Connections Navigator」タブをクリックします。 Connectionsタブで「 Connections」を右クリックし、「 New Connection」を選択します。

 

3.

Create WebDav Connectionウィンドウが表示されます。 以下の情報を入力したら、「 Test Connection」をクリックします。

URL location: <hostname>:8080/
Connection Name: WebDavConnection1
User Name: oe
Password: oe

 

4.

テストのステータスに成功したことが表示されます。 「 OK」をクリックします。

 

5.

作成したばかりの「 WebDavConnection1」接続を開きます。

 

トピックに戻る

XMLスキーマの確認

これで、XMLスキーマを確認できるようになりました。 以下の手順を実行します。

1.

home」→「 OE」→「 PurchaseOrders」→「 2002」→「 Apr」の順に開きます。リストで最初のドキュメントをクリックし、「 Open」を選択します。 これでXMLドキュメントが開きます。

 

2.

Connectionsウィンドウの下までスクロールし、「 purchaseOrder.xsd」を右クリックします。 次に「 Open」を選択します。

 

3.

XMLスキーマがグラフ化されて表示されます。 「 PurchaseOrder」を開きます。

 

4.

Actions」を開きます。

 

5.

Actionを開くと、UserおよびDateの2つのオブジェクト・タイプが表示されます。

 

6.

次にXML Documentに戻り、定義を確認します。 「 XML Document」タブをクリックします。 Actionオブジェクトに、KPARTNERというユーザー・タイプが含まれていることを確認します。

 

トピック・リストに戻る

サービス指向アーキテクチャにおけるOracle XML DB Webサービスの使用方法

Oracle XML DBにネイティブな新しいWebサービス・エンドポイントを使用して、サービス指向アーキテクチャを実装することができます。 以下のタスクを実行します。

Oracle XMLDBでのデータベース・ネイティブのWebサービス・エンドポイントの有効化

Webサービス・クライアント・アプリケーションの開発

Http AnalyzerによるWebサービスの要求および応答の表示

トピック・リストに戻る

Oracle XMLDBでのデータベース・ネイティブのWebサービス・エンドポイントの有効化

1.

端末ウィンドウを開き、以下のコマンドを入力します。

cd wkdir
sqlplus sys/oracle as sysdba

 

2.

Oracle XML DBでデータベース・ネイティブのWebサービス・エンドポイントを有効化します。 以下のスクリプトを実行します。

@setWebServiceEvent11g.sql

create or replace procedure addServletMapping (pattern varchar2,
servletname varchar2,
dispname varchar2,
servletclass varchar2,
servletschema varchar2,
language varchar2,
description varchar2,
securityRole xmltype) as
xdbconfig xmltype;
begin
xdbconfig := dbms_xdb.cfg_get();
select deleteXML
(
xdbconfig,
'/xdbconfig/sysconfig/protocolconfig/httpconfig/webappconfig/servletconfig/servlet-list/servlet[servlet-name="' || servletname || '"]'
)
into xdbconfig
from dual;

if (language = 'C') then
select insertChildXML
(
xdbconfig,
'/xdbconfig/sysconfig/protocolconfig/httpconfig/webappconfig/servletconfig/servlet-list',
'servlet',
xmlElement
(
"servlet",
xmlAttributes('http://xmlns.oracle.com/xdb/xdbconfig.xsd' as "xmlns"),
xmlForest
(
servletname as "servlet-name",
language as "servlet-language",
dispname as "display-name",
description as "description"
),
securityRole
)
)
into xdbconfig
from dual;
else
select insertChildXML
(
xdbconfig,
'/xdbconfig/sysconfig/protocolconfig/httpconfig/webappconfig/servletconfig/servlet-list',
'servlet',
xmlElement
(
"servlet",
xmlAttributes('http://xmlns.oracle.com/xdb/xdbconfig.xsd' as "xmlns"),
xmlForest
(
servletname as "servlet-name",
language as "servlet-language",
dispname as "display-name",
description as "description",
servletclass as "servlet-class",
servletschema as "servlet-schema"
)
)
)
into xdbconfig
from dual;
end if;

select deleteXML
(
xdbconfig,
'/xdbconfig/sysconfig/protocolconfig/httpconfig/webappconfig/servletconfig/servlet-mappings/servlet-mapping[servlet-name="' || servletname || '"]'
)
into xdbconfig
from dual;

select insertChildXML
(
xdbconfig,
'/xdbconfig/sysconfig/protocolconfig/httpconfig/webappconfig/servletconfig/servlet-mappings',
'servlet-mapping',
xmltype
(
'<servlet-mapping xmlns="http://xmlns.oracle.com/xdb/xdbconfig.xsd">
<servlet-pattern>'||pattern||'</servlet-pattern>
<servlet-name>'||servletname||'</servlet-name>
</servlet-mapping>'
)
)
into xdbconfig
from dual;

dbms_xdb.cfg_update(xdbconfig);

end;
/

call addServletMapping(
'/orawsv/*',
'orawsv',
'Oracle Query Web Service',
null,
null,
'C',
'Web Services Servlet',
xmltype(
'<security-role-ref>
<role-name>XDB_WEBSERVICES</role-name>
<role-link>XDB_WEBSERVICES</role-link>
</security-role-ref>'
)
)
/

call addServletMapping(
'/orawsdl/*',
'orawsdl',
'Oracle WSDLs',
null,
null,
'C',
'WSDL Servlet',
xmltype(
'<security-role-ref>
<role-name>XDBWEBSERVICES</role-name>
<role-link>XDBWEBSERVICES</role-link>
</security-role-ref>'
)
)
/

grant XDB_WEBSERVICES to oe
/

-- For 11g only
grant XDB_WEBSERVICES_OVER_HTTP to oe
/
grant XDB_WEBSERVICES_WITH_PUBLIC to oe
/

-- Clean up afterward
drop procedure addServletMapping
/

 

トピックに戻る

Webサービス・クライアント・アプリケーションの開発

1.

Oracle JDeveloperに戻ります。 Navigatorウィンドウで「 Add to Applications」アイコンをクリックします。

 

2.

Select application(s) to addウィンドウで、 <working directory>/DBWSディレクトリに移動します。 次に、 OBE_DBWS.jws」を選択して、「 Open」をクリックします。

この時点で警告ウィンドウが表示されたら、「 Yes」をクリックします。 この警告ウィンドウは、最新のOracle JDeveloperバージョンのファイル形式にアプリケーションを移行したことで表示されます。

 

3.

OBE_DBWS 」を右クリックして、「 New Project...」を選択します。

4.

New Galleryウィンドウが表示されます。 項目リストで「 Empty Project」を選択し、「 OK」をクリックします。

 

5.

Create Projectウィンドウで、Project Nameに XQueryWSと入力します。 Directory Nameはデフォルトのままにして、「 OK」をクリックします。
注:デフォルトのディレクトリ名は、 <working directory>/DBWS/XQueryWSです。

 

6.

OBE_DBWS」を開きます。 「 XQueryWS」を右クリックして、「 New...」を選択します。

 

7.

Categoriesセクションで「 Business Tier」を開き、「 Web Services」を選択します。

 

8.

項目リストが右のウィンドウ・ペインに表示されます。 「 Web Service Proxy」を選択し、「 OK」をクリックします。

 

9

これでCreate Web Service Proxyウィザードが起動し、Webサービスを呼び出すJavaプロキシを生成します。 「 Next」をクリックします。

 

10.

サービスの詳細を含むWSDLドキュメントを選択したら、ドキュメント内のサービスを選択してプロキシを作成します。 <working directory>を表示して、 orawsdl.xmlファイルを選択します。 次に「 Open」をクリックします。


11.

Next」をクリックします。

 

12.

Building Modelウィンドウが一時的にポップアップし、 orawsdl.xmlのサービスのモデル構築状況を表示します。次は、サービスのポートを受け入れるためにプロキシが使用するエンドポイントURLを選択します。 デフォルトのラジオ・ボタン Run against a service deployed to Embedded OC4Jは変更しません。 Next」をクリックします。


13.

Next」をクリックします。

 

14.

ここでは、 ORAWSVPortが Portsノードの下に表示されていることを確認します。 「 Next」をクリックします。

 

15.

マッピング・オプションのデフォルトを受け入れて、「 Reuse Existing Type Classes」チェック・ボックスを選択します。 「 Next」をクリックします。

 

16.

Next」をクリックします。 次に、「 Finish」をクリックします。 これで、プロキシの作成は終了しました。

これで、 Generation in Progressウィンドウが表示されます。

 

17.

Oracle JDeveloperは、WSDLファイルに定義されたWebサービスを起動するコードを生成します。 このチュートリアルの主要なクライアント・プログラム・ファイルは、 ORAWSVPortClient.javaとなります。

「 ORAWSVPortClient.txt」ファイルを開きます。 テキスト・エディタを使用して、このファイルの内容をコピーします。 Oracle JDeveloperウィンドウで、 //Add your own code hereと書かれた行の後に以下のコードを貼り付けます。

myPort.setUsername("oe");
myPort.setPassword("oe");
String endPoint = myPort.getEndpoint();
xqueryws.proxy.Query_text xq_text = new Query_text();
xqueryws.proxy.Query xq = new Query();
xq_text.setType(xqueryws.proxy.Query_textType.XQUERY); xq_text.set_value("ora:view(\"PO_SL_BIX_TABLE\")/PurchaseOrder/Reference");
xq.setQuery_text(xq_text);
System.out.println("Invoking the web service");
SOAPElement res = myPort.XMLFromQuery(xq);
System.out.println("Done. You can now check your result with HTTP Analyzer.");

 

18.

コードのコンパイルを成功させるには、 javax xml.soap.SOAPElementをインポートします。この時点で、Oracle JDeveloperから javax.xml.soap.SOAPElementをインポートするよう指示するコードを受け取ります。[ Alt]+[ Enter]キーを押してインポートします。

 

19.

次に、「 import...,」ノードを開きます。 javax.xml.soap.SOAPElementが追加されたことを確認します。

 

20.

ナビゲータで、「 OBE-DBWS」→「 XQueryWS」→「 Application Sources」→「 xqueryws.proxy」の順に開きます。 「 ORAWSVServiceProxy」をクリックして、ウィンドウ・ペインの下部にある構造を確認します。

 

21.

ORAWSVServiceProxy-Structureウィンドウ・ペインで、「 ORAWSVBinding_Stub.java」をダブルクリックします。

22.

右のウィンドウに ORAWSVBinding_Stub.javaのコードが表示されます。 ENDPOINT_ADDRESS_PROPERTYのすべての発生要件が http://localhost:8080/orawsvに設定されていることを確認します。

 

23.

次に、 ORAWSVPortClient.javaウィンドウ・ペインに戻ります。 コードを右クリックして、「 Make」を選択します。 ウィンドウの下部にあるMessages- Logで、コンパイルが成功したことが表示されます。

トピックに戻る

Http AnalyzerによるWebサービスの要求および応答の表示

1.

HTTP Analyzerを使用してWebサービスの要求および応答を表示するには、まずOracle JDeveloperにWebブラウザおよびプロキシ設定を設定する必要があります。

Oracle JDeveloperウィンドウで「 Tools」に移動し、「 Preferences...」を選択します。

 

2.

Preferencesウィンドウで、「 Web Browser and Proxy」を選択します。 以下について確認し、「 OK」をクリックします。

  • Use HTTP Proxy Server」チェック・ボックスが選択されている
  • Host Nameが localhostである
  • Port Numberが 8080である
  • Exceptionsテキスト・ボックスが空白である

 

3.

Oracle JDeveloperウィンドウで「 View」に移動し、「 Http Analyzer」を選択します。

4.

ウィンドウの下部にHttp Analyzerが表示されます。 「 Start Http Analyzer」アイコンをクリックします。

 

5.

次に、プロジェクトを実行します。 Oracle JDeveloperウィンドウで「 Run」に移動し、 Run XQueryWS.jpr」を選択します。

 

6.

Choose Default Run Targetウィンドウが表示されたら、以下の手順を実行します。

a. 「 Browse」をクリックします。

b. <working directory>/DBWS/XQueryWS/src/xqueryws/proxy に移動します。 次に、「 ORAWSVPortClient.java」を選択して、「 Open」をクリックします。

c. 「 OK」をクリックします。

 

7.

下部に表示されるLogウィンドウに、以下のメッセージが表示されます。

calling http://localhost:8080/orawsv
Invoking the web service
Done. You can now check your result with HTTP Analyzer.
Process exited with exit code 0.

 

8.

ウィンドウ・ペインの下部にあるHttp Analyzerに戻ります。 最後の項目をダブルクリックします。

または、最後の項目を選択して「 Data」をクリックします。

 

9.

Http Analyzerウィンドウで、下部の左ペインにはWebサービスの要求が表示され、下部の右ペインには応答が表示されます。

 

トピック・リストに戻る

まとめ

このチュートリアルで学習した内容は、次のとおりです。

 バイナリXML表の作成
 Oracle JDeveloperにおけるXMLスキーマの確認
 サービス指向アーキテクチャにおけるOracle XML DB Webサービスの使用方法

トピック・リストに戻る

 このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。


Copyright (c) Oracle Corporation 2007 All Rights Reserved
Oracle Corporation発行の「Using Oracle XML DB Web Services for Service-Oriented Architecture」の翻訳版です。

この文書はあくまで参考資料であり、 掲載されている情報は予告なしに変更されることがあります。 万一、誤植などにお気づきの場合は、オラクル社までお知らせください。 オラクル社は本書の内容に関していかなる保証もしません。 また、本書の内容に関連したいかなる損害についても責任を負いかねます。

Oracleはオラクル社の登録商標です。
その他の会社名および製品名は、 あくまでその製品および会社を識別する目的にのみ使用されており、 それぞれの所有者の商標または登録商標です。