1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WebSphere Liberty - Oracle DB接続

Posted at

zipファイルを解凍するだけでインストールが完了する、お手軽 JavaEE ランタイム、WebSphere Liberty。
WebSphere Liberty から Oracle に接続したときの、構成方法のログです。

使ったアプリは、ServletからJDBCでOracle DBに接続して、SQL実行結果をJSPに出力するクラシックなもの。
OracleデータベースとJavaSEランタイムは導入済の環境に、Libertyを追加で導入しました。
ここからの手順は最適解でない可能性はありますが、ひとまずこれで出来ました、というメモです。

WebSphere Libertyのダウンロード

ここからダウンロードするモジュールを選べます。
https://developer.ibm.com/wasdev/downloads/

…Full profile と Web profile の違いって何でしたっけ。(← 残念なレベル感)

https://www.oracle.com/technetwork/java/javaee/tech/index.html
<--- このページで、WebProfile列にチェックが入っているAPIのみ包含されるのが、Web profile。

Servlet/JSON/JSF/JSP/EJB/JTA/JPA など Webアプリケーション開発で使われる主なAPIは全部入ってるので、Web Profileで十分、機能は足りそうです。

WAS Liberty with Java EE 8 Web Profile
https://developer.ibm.com/wasdev/downloads/#asset/runtimes-wlp-webProfile8
このページから任意のディレクトリに導入イメージ(zip)をダウンロードしておきます。

WebSphere Liberty のインストール(≒解凍)

ダウンロードしたzipファイルを解凍します。解凍ソフトは何でも良さそうで、今回は7zipを使いました。
ちょっと変なパス名になってしまいましたが、特に困らないのでこのまま使います。

image.png

アプリケーションの配置

配置先は下記のディレクトリ:
    <WLP_ROOT>\usr\servers<server_name>\apps ディレクトリ(※)

複数のアプリケーションサーバ間で共有されるアプリであれば「<WLP_ROOT>\shared\apps」ディレクトリに配置してもよさそうです。

JDBCドライバの配置

Oracle JDBCドライバ配置用のディレクトリ作成(任意)

ここでは、下記ディレクトリにドライバを配置することにします
   <WLP_ROOT>\usr\shared\resources\oracle ディレクトリを作成

ドライバ類が1個しかない環境なら、resources直下にそのまま置いても良いと思いますが
Oracle、Db2など複数のデータベースにつながる環境なので、一応ディレクトリを分けます。

Oracle JDBCドライバファイルの配置

Oracleサーバから入手できない場合は、以下のサイトからダウンロードします。
https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/jdbc-ucp-19c-5460552.html

Oracleサーバが導入済みであれば、下記のディレクトリにJDBCドライバファイルがあるので、1つ前の手順で作成しておいたディレクトリにコピーしてきます

   %ORACLE_HOME%\jdbc\lib

このディレクトリには以下のファイルがあります。
Oracle 19cに同梱されるファイルは下記の5つで、それぞれのファイルの位置づけ・役割をOracle社のページから引用しておきます。
今回は、ごく普通にThinドライバが使えればよいだけなので、ojdbc8.jar のみ使います。

ojdbc8.jar
Thinドライバで基本機能をサポートするためのすべてのクラス
ojdbc8_g.jar
ojdbc8.jarと同じ。ただし、デバッグ情報を含めるために-gオプションを指定してコンパイルし、java.util.loggingコールが含まれる点を除く
ojdbc8dms.jar
ojdbc8.jarと同じ。ただし、 Oracle Dynamic Monitoring Service(Oracle DMS)をサポートするためのコードが含まれる点を除く。また、JDBCロギング・サポートを含めた場合も除きます。このファイルが使用できるのは、dms.jarも クラスパスにある場合のみです。dms.jarファイルは、RDBMS製品の一部としては付属してい ません。Oracle Application Server製品の一部としてのみ使用できます。
ojdbc8dms_g.jar
ojdbc8dms.jarと同じ。ただし、デバッグ情報を含めるために-gオプションを指定してコンパイルし、全JDBCロギング・サポートが含まれる点を除く。
simplefan.jar
ONS経由でRACイベントをサブスクライブするためのJava API

(参考)Oracle JDBC FAQ
https://www.oracle.com/technetwork/jp/database/application-development/jdbc/overview/default-090281-ja.html

(参考)Windows環境で ORACLE_HOME がわからない場合は、環境変数やレジストリ変数にて確認します
https://www.shift-the-oracle.com/config/show-environment-variable.html
http://replication.hatenablog.com/entry/20130109/1357659799

server.xmlファイルの編集・配置

配置先は下記のディレクトリ:
    <WLP_ROOT>\usr\servers ディレクトリ

server.xmlの内容は、動いたものをそのまま添付しています。

  • featureとして、servlet-3.0/jdbc-4.0/jsp-2.2 を追加しておく
  • listen port は 9080/9443
  • LibraryエレメントにJDBCドライバの配置先ディレクトリ名とファイル名を記述(ファイル名はワイルドカード利用可)
  • dataSourceエレメントにはデータベースの接続情報(OracleサーバのURL、ユーザ名、パスワード)、JNDI名を記述
  • ドライバの種別(OCI or THIN)は、dataSource内のURL文字列で指定
  • アプリケーションと設定を一致させるべき箇所としては、DB接続アプリ側のデータソースのJNDI名と、server.xml側のデータソースJDNI名(jndiName)を一致させます。このserver.xmlの例では、jdbc/sample としています。

(server.xmlファイルの例)

<?xml version="1.0" encoding="UTF-8"?>
<server description="new server">

<!-- Enable features -->
<featureManager>
<feature>jsp-2.2</feature>
<feature>jdbc-4.0</feature>
<feature>servlet-3.0</feature>
</featureManager>

<!-- To access this server from a remote client add a host attribute to the following element, e.g. host="*" -->
<httpEndpoint id="defaultHttpEndpoint" host="*"
                  httpPort="9080"
                  httpsPort="9443" />

<!-- Automatically expand WAR files and EAR files -->
<applicationManager autoExpand="true"/>

<!-- DataSource Conig(oracle)  -->
<!-- Declare the jar files for Oracle access through JDBC. -->
<library id="OracleLib">
  <fileset dir="${shared.resource.dir}/oracle" includes="*.jar"/>
</library>

<!-- Declare the runtime database -->
<dataSource id="OrclDS-1" jndiName="jdbc/sample">
    <jdbcDriver libraryRef="OracleLib"/>
    <properties.oracle URL="jdbc:oracle:thin:@//myhost:1521/ORCL" user="kana" password="password"/>
</dataSource>

<!-- Declare the application -->
<application id="SessionTest" location="Session.ear" name="SessionTest" type="ear"/>
<application id="JDBCSample" location="JDBCsample.war" name="JDBCSample" type="war"/>

</server>

dataSource エレメントは以下のように書いても接続できます。
tnsnames.oraと同一形式の記述方法ができる意味では、上の書き方(URL)にアドバンテージあり。

<dataSource id="OrclDS-2" jndiName="jdbc/sample" transactional="false">
  <jdbcDriver libraryRef="OracleLib"/>
  <properties.oracle driverType="thin" databaseName="ORCL"
                     serverName="myhost"
                     user="kana" password="password"/>
</dataSource>

必要なフィーチャーのインストール

試しにサーバ起動してみたら、messages.logファイルにフィーチャーをインストールせよとの指令あり。
server-3.0 / jsp-2.2 / jdbc-4.0 のフィーチャーをコマンドでインストール。

C:\sw\ibm\was\wlp-webProfile8-19.0.0.6\wlp\bin>installUtility install jsp-2.2
構成されたリポジトリーへの接続を確立しています...
このプロセスは、完了するまでに数分間かかる場合があります。


構成されたすべてのリポジトリーへの接続が成功しました。


資産をインストールする準備をしています。 このプロセスは、完了するまでに数分間かかる場合があります。
ステップ 1 / 18: servlet-3.0 をダウンロード中...
ステップ 2 / 18: servlet-3.0 をインストール中...
ステップ 3 / 18: jsp-2.2 をダウンロード中...
ステップ 4 / 18: jsp-2.2 をインストール中...
ステップ 5 / 18: cdi-1.2 をダウンロード中...
ステップ 6 / 18: cdi-1.2 をインストール中...
ステップ 7 / 18: restConnector-1.0 をダウンロード中...
ステップ 8 / 18: restConnector-1.0 をインストール中...
ステップ 9 / 18: jaxrs-1.1 をダウンロード中...
ステップ 10 / 18: jaxrs-1.1 をインストール中...
ステップ 11 / 18: servlet-3.1 をダウンロード中...
ステップ 12 / 18: servlet-3.1 をインストール中...
ステップ 13 / 18: jaxrsClient-2.0 をダウンロード中...
ステップ 14 / 18: jaxrsClient-2.0 をインストール中...
ステップ 15 / 18: jaxrs-2.0 をダウンロード中...
ステップ 16 / 18: jaxrs-2.0 をインストール中...
ステップ 17 / 18: インストール済みフィックスを検証中...
ステップ 18 / 18: 一時ファイルをクリーンアップしています...




すべての資産が正常にインストールされました。


製品妥当性検査を開始します...
製品妥当性検査が正常に完了しました。


C:\sw\ibm\was\wlp-webProfile8-19.0.0.6\wlp\bin>installUtility install jdbc-4.0
構成されたリポジトリーへの接続を確立しています...
このプロセスは、完了するまでに数分間かかる場合があります。


構成されたすべてのリポジトリーへの接続が成功しました。


資産をインストールする準備をしています。 このプロセスは、完了するまでに数分間かかる場合があります。
ステップ 1 / 4: jdbc-4.0 をダウンロード中...
ステップ 2 / 4: jdbc-4.0 をインストール中...
ステップ 3 / 4: インストール済みフィックスを検証中...
ステップ 4 / 4: 一時ファイルをクリーンアップしています...




すべての資産が正常にインストールされました。


製品妥当性検査を開始します...
製品妥当性検査が正常に完了しました。


C:\sw\ibm\was\wlp-webProfile8-19.0.0.6\wlp\bin>


Oracle RACとつなぐ時の server.xml

Liberty の Oracle RAC を構成するには、以下のように server.xml に接続文字列を記述します。

<dataSource id="ds_id" jndiName="jdbc/ds_id ">
  <jdbcDriver>
    <library>
      <fileset dir="path_to_oracle_jar" includes="ojdbcX.jar"/>
    </library>
  </jdbcDriver>
  <properties.oracle 
  URL="jdbc:oracle:thin:@(DESCRIPTION=(FAILOVER=ON)(LOAD_BALANCE=OFF)(ADDRESS=(PROTOCOL=TCP)(HOST=host1)(PORT=port1))
  (ADDRESS=(PROTOCOL=TCP)(HOST=host2)(PORT=port2))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=name)))" 
  user="username" password="password" />
</dataSource>
1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?