OC4Jにおける空間Webサービスのインストールと構成
このチュートリアルでは、空間データを使用してWebサービスを公開する方法について説明します。
約1時間
このチュートリアルでは、以下のトピックについて説明します。
このアイコンの上にカーソルを置くと、すべてのスクリーンショットがロードし、表示されます。 (警告:すべてのスクリーンショットが同時にロードされるため、ご使用のインターネット接続によってはレスポンス・タイムが遅くなる場合があります。)
注:各手順に関連したスクリーンショットのみを表示する場合は、それぞれの手順にあるアイコンの上にカーソルを置いてください。 スクリーンショットをクリックすると、非表示になります。
このチュートリアルでは、Oracle Spatialの空間Webサービスのサポートについて紹介します。 Oracle Spatialには、次の種類のWebサービスがあります。
 |
Web Feature Services(WFS)は、位置との関係および非空間属性に基づいて、地物(道路や河川など)を検索および更新できます。 このWebサービスは、WFS 1.0.0のOpen GIS Consortium(OGC)仕様のOracle Spatialの実装です。 |
 |
Catalogue services for Web(CSW)は、データ、サービス、関連情報オブジェクトの説明(メタデータ)の集合を公開および検索する機能をサポートします。 このWebサービスは、CSW 2.0.0のOGC仕様のOracle Spatialの実装です。 |
 |
Open Location Services(OpenLS)は、ジオコーディング、マッピング、ルーティング、イエロー・ページなど、位置ベースのサービスを提供します。 ジオコーディングを使用すると、空間位置(経緯度座標)と住所を関連付けることができます。
マッピングを使用すると、空間位置情報に基づいてマップを作成できます。 イエロー・ページを使用すると、位置との関係に基づいて、企業を名前またはカテゴリで検索できます。 ルーティングは、個別ルートまたは複数ルートの運転情報および運転指示を提供します。
このWebサービスを使用して、OGCにより定義されたOpenLS 1.1仕様に適合するルーティング、ジオコーディング、マッピング、ディレクトリ機能など、Oracle Spatialのさまざまな既存機能にアクセスできます。 |
このチュートリアルでは、OC4J(Oracle Containers for Java)における空間Webサービスのインストール方法および構成方法について学習します。
『Oracle Spatial Webサービスの実行』のチュートリアルでは、前述のさまざまなWebサービス(WFS、CSWおよびOpenLS)でWebサービス・クライアントのデモを実行する方法について学習します。
トピック・リストに戻る
このチュートリアルを始める前に、次のことを実行してください。
 |
Oracle Database 11gソフトウェアがインストールされ、データベースが作成されていること。 |
 |
OTNからOracle JDeveloperをダウンロードして、任意のディレクトリに解凍すること。 |
 |
Javasoftから最新のJ2SEをダウンロードしてインストールすること。 |
 |
作業ディレクトリを作成して、$ORACLE_HOME/md/demo/ws/clientディレクトリのwsclient.jarを作業ディレクトリにコピーすること。 |
 |
xsds.jarファイルを作業ディレクトリにダウンロードすること。 |
 |
次のユーザーのロックが解除されているかどうか確認すること。 mdsys、spatial_csw_admin_usr、spatial_wfs_admin_usr。SQL*Plusを開いて、次のコマンドを実行します。
connect sys/oracle as sysdba
alter user mdsys identified by oracle account unlock;
alter user spatial_csw_admin_usr identified by oracle account unlock;
alter user spatial_wfs_admin_usr identified by oracle account unlock;
|
トピック・リストに戻る
この項では、OC4Jを構成して空間Webサービスおよび空間Webサービスのデモ・ユーザーをインストールする手順について説明します。 以下の手順を実行します。
トピック・リストに戻る
テスト・ユーザーの構成
| 1. |
端末ウィンドウで次のコマンドを入力します。
cd <jdevhome directory>/j2ee/home/config
gedit system-jazn-data.xml
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。

|
| 2. |
ここからexampleusers.txtファイルを開きます。 すべてのテキストを選択し、[Ctrl]+[C]を押してコピーします。 Linuxデスクトップのgeditウィンドウに切り替えます。 [Ctrl] + [V]を押して、system-jazn-data.xmlファイルの最後の<user>セクションの後に次の文を追加します。
<user> <name>SpatialWsUser0</name> <display-name>Spatial WS user 0</display-name> <description>Used for SpatialWs</description> <credentials>!welcome</credentials> </user> <user> <name>SpatialWsUser1</name> <display-name>Spatial WS user 1</display-name> <description>Used for SpatialWs</description> <credentials>!welcome</credentials> </user> <user> <name>SpatialWsUser2</name> <display-name>Spatial WS user 2</display-name> <description>Used for SpatialWs</description> <credentials>!welcome</credentials> </user> <user> <name>SpatialWsUser3</name> <display-name>Spatial WS user 3</display-name> <description>Used for SpatialWs</description> <credentials>!welcome</credentials> </user> <user> <name>wfs_rel_user</name> <display-name>wfs_rel_user</display-name> <description>Spatial WFS user </description> <credentials>!wfs_rel_user</credentials> </user> <user> <name>wfs_doc_user</name> <display-name>wfs_doc_user</display-name> <description>Spatial WFS user </description> <credentials>!wfs_doc_user</credentials> </user> <user> <name>csw_user</name> <display-name>csw_user</display-name> <description>Spatial CSW user </description> <credentials>!csw_user</credentials> </user>
geditウィンドウの「ファイル」メニューから、「保存」を選択して変更を保存するか、またはツールバーの「保存」アイコンをクリックします。 「ファイル」メニューから「閉じる」を選択して、エディタを終了します。 |
トピックに戻る
OC4Jパス設定の構成
| 1. |
端末ウィンドウで次のコマンドを入力します。
cd <jdevhome directory>/bin
gedit oc4j
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。

注:ファイルが読取り専用モードで開かれる場合は、エディタを終了してください。 端末ウィンドウでrootとしてログインし、chmodコマンドを使用して、読取り/書込みおよび実行可能にアクセスを変更します。 その後、geditで再びファイルを開きます。 アクセス・モードを変更するコマンドは、以下のとおりです。
chmod 777 oc4j |
| 2. |
ファイルの先頭に次の文を追加します。
ORACLE_HOME=<jdevhome directory> JAVA_HOME=<jdk home directory>
ファイルを保存して、エディタを終了します(oracleユーザーとしてファイルを保存することはできません。スーパーユーザー(su)としてログインした場合は、ファイルを保存できます)。
|
トピックに戻る
共有ライブラリの作成と登録
| 1. |
端末ウィンドウから、次のコマンドを入力して共有ライブラリ・ディレクトリを作成します。
mkdir <jdevhome directory>/j2ee/home/shared-lib/sdows mkdir <jdevhome directory>/j2ee/home/shared-lib/sdows/1.0
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。


|
| 2. |
server.xmlファイルにライブラリを登録するには、次のコマンドを入力します。
cd <jdevhome directory>/j2ee/home/config
gedit server.xml

次に、rmi-config文の直前に次の文を追加します。
<shared-library name="sdows" version="1.0"> <code-source path="*"/> <import-shared-library name="oracle.xml"/> <import-shared-library name="oracle.jdbc"/> </shared-library>
ファイルを保存して、エディタを終了します。
|
| 3. |
現在の作業ディレクトリが<jdevhome directory>/j2ee/home/configであることを確認します。 application.xmlファイルにライブラリを登録するには、次のコマンドを入力します。
gedit application.xml

次に、</imported-shared-libraries>文の直前に次の文を追加します。
<import-shared-library name="sdows"/>
ファイルを保存して、エディタを終了します。
|
トピックに戻る
共有ライブラリ・ディレクトリへのファイルのコピー
| 1. |
端末ウィンドウで次のコマンドを入力して、$ORACLE_HOME/md/jlibおよび$ORACLE_HOME/rdbms/jlibのファイルを、作成した共有ライブラリ・ディレクトリにコピーします。
cd <jdevhome directory>/j2ee/home/shared-lib/sdows/1.0
cp $ORACLE_HOME/md/jlib/sdowfscs.jar . cp $ORACLE_HOME/md/jlib/sdoutl.jar . cp $ORACLE_HOME/md/jlib/sdotype.jar .
cp $ORACLE_HOME/md/jlib/sdoapi.jar . cp $ORACLE_HOME/md/jlib/sdowshandlers.jar . cp $ORACLE_HOME/md/jlib/sdowspool.jar . cp $ORACLE_HOME/md/jlib/sdowshandlerols.jar .
cp $ORACLE_HOME/rdbms/jlib/xdb.jar .
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。$ORACLE_HOMEは、Oracle Databaseのホーム・ディレクトリです。

|
トピックに戻る
xmlparserv2.xdkファイルへのパッチ適用
| 1. |
端末ウィンドウで次のコマンドを入力して、xmlparserv2.jarファイルを$ORACLE_HOME/libから<jdevhome directory>/libディレクトリにコピーします。
cd <jdevhome directory>/lib cp $ORACLE_HOME/lib/xmlparserv2.jar .
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。$ORACLE_HOMEは、Oracle Databaseのホーム・ディレクトリです。

|
トピックに戻る
wsclient.jarファイルの抽出
| 1. |
端末ウィンドウで次のコマンドを入力して、このチュートリアルで提供されているwsclient.jarファイルを抽出します。
端末ウィンドウで次のコマンドを入力します。
cd $CLIENT_HOME
jar -xvf wsclient.jar
$CLIENT_HOMEは、wsclient.jarファイルを抽出するディレクトリです。 wsclient.jarファイルは、任意のディレクトリに抽出できます。
|
トピックに戻る
この項では、OC4Jインスタンスを起動する方法について説明します。 以下の手順に従います。
| 1. |
端末ウィンドウで次のコマンドを入力します。
cd <jdevhome directory>/bin ./oc4j -start
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。
注:パスワードを指定するよう要求されたら、adminと入力してください。 再度adminと入力して、パスワードを確認します。 OC4Jサーバーが起動されたことを示す"Oracle Containers for J2EE 10g(10.1.3.1.1)initialized"というメッセージが表示されます。

|
トピック・リストに戻る
この項では、前の手順で起動したOC4Jインスタンスに、空間Webサービスを配置する方法について説明します。以下の手順に従います。
| 1. |
別の端末ウィンドウを開き、次のコマンドを入力して$JAVA_HOME変数を設定します。 ORACLE_HOME変数が設定されていることを確認します。 設定されていない場合は、exportコマンドを使用して、ORACLE_HOME変数をOracle Databaseのホーム・ディレクトリに設定してください。
export JAVA_HOME=/usr/java/<jdk dir>/

|
| 2. |
EARファイルを配置する準備ができました。 端末ウィンドウで次のコマンドを入力します。
$JAVA_HOME/bin/java -jar <jdev_home>/j2ee/home/admin.jar ormi://localhost oc4jadmin admin
-deploy -file $ORACLE_HOME/md/jlib/sdows.ear -deploymentName sdows -bindWebApp
default-web-site
$ORACLE_HOMEは、Oracle Databaseのホーム・ディレクトリです。

|
トピック・リストに戻る
この項では、空間Webサービスで使用するデータソースを構成する方法について説明します。 以下の手順を実行します。
| 1. |
データソースを構成する前に、OC4Jを停止します。 端末ウィンドウで次のコマンドを入力します。
cd <jdevhome directory>\bin
./oc4j -shutdown -port 23791 -password admin
注:ポート番号は<jdevhome directory>/j2ee/home/config/rmi.xmlファイルで確認できます。

|
| 2. |
端末ウィンドウで次のコマンドを入力します。
cd <jdevhome directory>/j2ee/home/applications/sdows/META-INF
gedit data-sources.xml
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。
ネイティブ・データソースのURLパラメータ、ユーザー・パラメータ、およびパスワード・パラメータをそれぞれ設定します。
次のネイティブ・データソースについて、変更を行います。
 |
jdev-connection-WfsProxyConnection |
 |
jdev-connection-NdmProxyConnection |
 |
jdev-connection-CatalogProxyConnection |
 |
jdev-connection-OpenLsProxyConnection |
 |
jdev-connection-ConferenceProxyConnection |
URLパラメータ、ユーザー・パラメータ、およびパスワード・パラメータをそれぞれ次のように変更します。
url="jdbc:oracle:thin:@localhost:1521:orcl"
user="mdsys"
password="oracle"

jdev-connection-CSW_ADMIN_CONN_NAMEおよびjev-connection-WFS_ADMIN_CONN_NAMEのネイティブ・データソースについては、URLパラメータとパスワード・パラメータのみを次のように変更します。
url="jdbc:oracle:thin:@localhost:1521:orcl"
password="oracle"

終了したら、ファイルを保存して閉じます。
|
| 3. |
OGC WFS XSDを、任意のURLにロードします。 xsds.jarファイルを<jdevhome directory/j2ee/home/default-web-app/examples/servlets/ディレクトリに抽出します。 このディレクトリは、xsds.jarファイルから抽出したファイルが保存される場所です。
xsds.jarファイルを抽出するディレクトリを変更するには、次のコマンドを入力します。
cd <jdevhome directory/j2ee/home/default-web-app/examples/servlets/
xsds.jarファイルは、前提条件の項のリンクから任意のディレクトリにダウンロードしています。 xsds.jarファイルからファイルを抽出するには、次のコマンドを入力します。
jar -xvf <directorylocation where you downloaded the xsds.jar file>/xsds.jar
|
| 4. |
WSConfig.xmlファイルを編集して、xsdファイルのURLを指定します。 端末ウィンドウで次のコマンドを入力します。
cd <jdevhome directory>/j2ee/home/applications/sdows/sdows/WEB-INF/conf
gedit WSConfig.xml
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。
次に示すように、WSConfig.xmlファイルのwfs-xsd-loc-urlをXSDSが保存されるパスに変更します。
<wfs_xsd_loc_url>http://<machine_name>:8888/examples/servlets/xsds/</wfs_xsd_loc_url>
コメント・タグを必ず削除してください。

ファイルを保存して、エディタを終了します。
|
| 5. |
wfsrelmd.sql、wfsdocmd.sql、およびcswmd.sqlを編集して、$DATA_DIR_PATHをsrcディレクトリのある場所に変更します。 srcディレクトリは、wsclient.jarファイルを抽出したときに作成されています。
端末ウィンドウで次のコマンドを入力します。
cd $CLIENT_HOME/src/sql
gedit wfsrelmd.sql
ここで、$CLIENT_HOMEhはwsclient.jarファイルを抽出したディレクトリです。
以下のスクリーンショットに示すように、$DATA_DIR_PATHをsrcディレクトリのパスに変更します。
変更を保存します。
同様に、以下のスクリーンショットで示すように、同じフォルダ内のwfsdocmd.sqlを編集して、$DATA_DIR_PATHをsrcディレクトリのパスに変更します。 ファイルを保存します。

スクリーンショットに示すように、cswmd.sqlを編集します。 ($DATA_DIR_PATH変数は、ファイルのほぼ最後にあります。下方向にスクロールしてください。)

ファイルを保存し、エディタを終了します。
|
| 6. |
接続文字列(データベースのマシン名、ポート番号、Oracle SIDなど)を変更し、実際の情報を次のファイルに反映させます。
- WFSの場合:oracle.spatial.ws.admindemo.WFSAdminDemo.javaファイル - CSWの場合:oracle.spatial.ws.admindemo.CSWAdminDemo.javaファイル
端末ウィンドウで次のコマンドを入力します。
cd $CLIENT_HOME/src/oracle/spatial/ws/admindemo
gedit WFSAdminDemo.java
ここで、$CLIENT_HOMEhはwsclient.jarファイルを抽出したディレクトリです。
次に示すように編集します。
OracleConnection conn = (OracleConnection) DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:orcl","WFS_ADMIN_USR","WFS_ADMIN_USR");

ファイルを保存します。
同様に、CSWAdminDemo.javaファイルを編集します。
OracleConnection conn= (OracleConnection) DriverManager.getConnection
("jdbc:oracle:thin:@localhost:1521:orcl","csw_admin_usr","csw_admin_usr");

ファイルを保存して、エディタを終了します。
|
| 7. |
TestWfsCsBase.javaファイルのmyPort.setEndpoint("http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort")を変更して、OC4Jのサーバー・マシン名とポート番号を反映させます。 このチュートリアルでは、マシン名をlocalhost、ポート番号を8888と入力します。
端末ウィンドウで次のコマンドを入力します。
cd $CLIENT_HOME/src/oracle/spatial/ws/svrproxy
gedit TestWfsCsBase.java
$CLIENT_HOMEは、wsclient.jarファイルを抽出したディレクトリです。
次のように変更します。
myPort.setEndpoint
("http://localhost:8888/SpatialWS-SpatialWS-context-root/SpatialWSSoapHttpPort");
|
| 8. |
ここで、OC4Jを再起動してください。 端末ウィンドウで次のコマンドを入力します。
cd <jdevhome directory>/bin ./oc4j -start
<jdevhome directory>は、Oracle JDeveloperを解凍したディレクトリです。

|
トピック・リストに戻る
次の手順で、デモに必要なデータソース・パラメータが正しく設定されていることを確認できます。 以下の手順を実行します。
| 1. |
ブラウザ・ウィンドウを開いて、次のURLを入力します。
http://<hostname>:8888/em
このチュートリアルでは、ホスト名にlocalhostを使用します。 oc4jadminとしてログインし、パスワードにadminと入力します。 このパスワードは、OC4Jを起動したときに作成したパスワードです。 次に、「Login」をクリックします。
|
| 2. |
Supply Administration Credentialsページで、oc4j-administratorsグループのユーザーの資格証明を入力します。 この資格証明は、Application Server Controlがプロキシ接続を維持するために必要です。 パスワードにadminを入力します。

|
| 3. |
「Administration」タブをクリックします。

|
| 4. |
「Services」→「JDBC Resources」タスクの「Go to Task」アイコンをクリックします。

|
| 5. |
データソースのリストが表示されます。 任意のデータソースの「Test Connection」アイコンをクリックします。

Test Connectionページが表示されたら、「Test」をクリックします。

接続が確立したことが確認できます。

「Logout」をクリックします。
|
トピック・リストに戻る
クライアントのコンパイルと実行の準備ができました。 以下の手順を実行します。
| 1. |
compileAndRunClient.shファイルに、次の変数を設定します。
 |
JAVA_HOME |
JDKの場所に設定します。 |
 |
spatialws_lib |
Oracle JDeveloperのインストール・ディレクトリに設定します。 |
 |
spatialws_server_lib |
OC4Jサーバーのsdows共有ライブラリに設定します。 |
 |
spatial_ws_srcpath |
wsclient.jarファイルから抽出したsrcディレクトリに設定します。 |
 |
spatialws_target |
生成されるクラス・ファイルのターゲット・パスに設定します。 ソース・パスを再利用します。 |
次のコマンドを入力します。
cd $CLIENT_HOME/src
gedit compileAndRunClient.sh
$CLIENT_HOMEは、wsclient.jarファイルを抽出したディレクトリです。
スクリーンショットは、設定されたパラメータを示します。

ファイルを保存して、エディタを終了します。
|
| 2. |
端末ウィンドウで次のコマンドを入力します。
./compileAndRunClient.sh

|
トピック・リストに戻る
このチュートリアルで学習した内容は、次のとおりです。
 |
OC4Jの構成と起動 |
 |
EARファイルの配置 |
 |
データソースの構成と確認 |
 |
クライアントの構成と実行 |
トピック・リストに戻る
このアイコンの上にカーソルを置くと、すべてのスクリーンショットが非表示になります。
|