忍者ブログ
にゅん。のにゅん。によるなにか。→衣谷の衣谷による何か。 小説の事とか、いつものこととか、コーヒーの事とか、うつ展開なこととか。
[361] [360] [359] [358] [357] [356] [355] [354] [353] [352] [351
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

はい、あたいらしく技術系のお話。いやね、昨日から今日にかけてこの部分に四苦八苦したからなのさ。今使っているのがTomcat 6.xのバージョンで、JNDIを用いたDB接続を調べても出てくるのはどれも旧バージョンのものばかり。というわけで、こうやったらできたよー、という情報。

まず、Tomcatを用いたウェブアプリケーション、というかJavaでサーブレットやらなんやらが関わるアプリケーションの場合は、こんな感じのディレクトリ構成になっているわけで。

webapps
webapps/root
webapps/root/
webapps/root/WEB-INF
webapps/root/WEB-INF/classes
webapps/root/WEB-INF/lib
webapps/root/WEB-INF/web.xml

webappsはTomcatのアプリケーションが配置されるディレクトリで、warファイルはこの直下に配置するのが基本だと思う。
rootが各アプリケーションのルートとなるファイル。この部分はアプリケーションによって名前が異なる。rootの下のディレクトリにHTMLやJSPなどのファイルを設置して、さらにディレクトリを追加することも可能。
WEB-INFはwebアプリのロジック部分が入る部分で、classesディレクトリには動作するJavaクラスファイル、libには外部ライブラリファイル、web.xmlがアプリケーション動作を決定するディプロイメント指定ファイル。
各ディレクトリの名前については、rootと任意につけられたディレクトリを覗いて固定。

しかーし! JNDIを用いでデータベース接続をしようとするなら、これでは足りないわけさ。このときはこのような構成にしないとダメ。
webapps
webapps/root
webapps/root/
webapps/root/WEB-INF
webapps/root/WEB-INF/classes
webapps/root/WEB-INF/lib
webapps/root/WEB-INF/web.xml
webapps/root/META-INF
webapps/root/META-INF/context.xml

rootディレクトリの下にMETA-INFというディレクトリができ、その下にcontext.xmlというファイルが配置される状態。そしてこれこそ、JDNIを実現するに必要な部分なわけであるさ。context.xmlにデータベース接続に必要なパラメータを設定するのであるよ。
因みにこのディレクトリ構成、eclipseだと最初からこうやって生成されるよね。HTMLとかJSPはWebContentsディレクトリに配置されるぐらいかな。ただし、META-INF以下にcontext,xmlは生成されないけれど。

ここであれ、戸思った人はいろいろ調べた人。Tomcatとしてはwebappsと同レベルのディレクトリであるconf/以下、conf/Catalina/localhost/XXXX.xmlがコンテキスト設定ファイルとして用いられるから。でも安心、XXX.xmlに当たる該当ファイルが存在しなければ、META-INF/contect.xmlがコンテキスト設定ファイルとして配置される動きとなっている。依然に方法とされていたserver.xmlファイルはいじる必要がないのですよ。

さて、配置する場所が分かったところで、パラメータはどう設定するか、という点。これも旧バージョンと全く形式が変わっているわけで。
ただし、ここにあるのは一例なので、詳しくはBDCPの説明しているサイトを閲覧してくださいな。厳密にはあれだけれども、まあ、形式としてはこのような感じでつくればいいかな。
http://limy.org/program/java/commons_dbcp.html

<?xml version="1.0" encoding="utf-8" ?>
<Context reloadable="true">
    <Resource
        name="JNDI登録名"
        auth="Container"
        type="javax.sql.DataSource"
        username="DBログインユーザ"
        password="usernameに対応するパスワード"
        driverClassName="JDBCドライバ名"
        url="JDBC接続文字列"
        maxActive="同時接続最大数"
        maxWait="接続が最大数に達している時に利用可能となる時間(ミリ秒)"
        maxIdle="プールに存在可能なアイドル接続数"
        defaultAutoCommit="オートコミットの設定"
        timeBetweenEvictionRunsMillis="監視スレッド動作間隔(ミリ秒)"
    />
</Context>

これをcontext.xmlに保存してください。今回はMySQLを利用したのですが、調べても答えが出ないということもあり、FireBirdというRDBMSのJDBCドライバ名(JayBird)と接続文字列をついでに残しておきますね。
FireBird
ドライバ名:org.firebirdsql.jdbc.FBDriver
接続文字列:jdbc:firebirdsql:[localhost | IP]/3050:[ファイルパス | エイリアス]
ドライバ名はJayBirdのもの。
接続文字列について、FireBirdは3050番ポートを使用するので。あと、ファイルパスについてはC:\~のやつでFBのデータベースファイルまでのフルパスを指定すれば大丈夫。あるいはあらかじめエイリアスを設定するか。

今度は配置されたら外部に出てしまうcmotext.xmlの内容を内部で参照できるようにしておかなければなりません。そこで、内部でのコンテキストファイルであるweb.xmlにマークアップを追加します。

<resource-ref>
    <res-ref-name>JNDI登録名</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>]
    <res-auth>Container</res-auth>
</resource-ref>

なお、この<resource-ref>ブロック要素は<servlet-mapping>よりも後ろで設定する必要があるようです。

この設定を完了すれば、残るはサーブレットサイドでのDataSourceオブジェクトを用いたConnection取得、となるわけですが、これ以降については旧バージョンのものと同じソースなので、ここでは割愛します。

そしてできたアプリケーション一式はWARファイルにして配置、そうしてからTomcatを起動させればWARファイルから各データが配置されて、きっちり動作するようになるんさ。

これを解決するのに一日以上時間がかかったわけだよ。うー疲れたー

拍手[0回]

PR
この記事にコメントする
name
title
color
mail
URL
comment
pass   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
secret (チェックを入れると管理人だけに表示できます)
ついったー
かうんたー。
さいとますたー
らいほうなう。
カレンダー
12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
プロフィール
HN:
衣谷 創
HP:
性別:
男性
職業:
プログラマー見習い
自己紹介:
とりあえず、メンタルの波が激しい今日この頃。
小説を書いてます。素人ながら。
コーヒーを飲んでいます。素人ながら。
サークル「にの、にの?」の人だす。

ソフトウェア開発企業に就職しました。

あくせす解析

ジオターゲティング
ぶろぐらむ。
blogram投票ボタン
最新CM
[03/18 松浦筧]
[08/26 ねこう]
最新TB
バーコード
ブログ内検索
はんばいちゅう。

++++宣伝中++++

++++on SALE++++

夢うつつePUB版
¥105-

ばとねのかたまり2
¥105-

演者に来ない暁
¥420-

ごちゃまぜに。
¥105-

ごちゃまぜいち。
¥105-

ばとねのかたまり
¥105-

COMING out of the CLOSET
¥420-

黒い雨に赤く滴り
¥420-

またごうとしてとちる
¥420-

For Whom She Chirps #2
¥420-

傍から見れば勇者
¥420-

For Whom She Chirps #1
¥315に値下げー

ファインダー越しに
¥210

こちらのさいとではんばいちゅう。
Copyright ©   衣谷となにか。とコーヒー。   All Rights Reserved
Design by MMIT simple_plain Powered by NINJA TOOLS
忍者ブログ [PR]