- - PR -
Tomcatのコネクションプーリングを別のプログラムから利用
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-13 18:58
みなさん、こんばんは。
どんたくおです。 現在、Tomcat5を使ってWEBアプリケーションを運用しております。 Tomcat5からのデータベース接続はTomcatのコネクションプーリン グを使用しております。 server.xml <Resource auth="Container" name="jdbc/hoge" type="javax.sql.DataSource"/> のようにしています。 実は、JAVAのスタンドアローンなプログラムからもデータベースへ の接続を行う必要がでてきました。 そこで、ご質問なのですが、やはりTomcatで使用しているコネクシ ョンプーリングを、別のJAVAのプログラムから使用することは可能 でしょうか。 おそらく、無理だと思うのですが、もし、そのような方法をしって おられる方がおいでましたら、ご教授いただけると幸いです。 | ||||||||||||
|
投稿日時: 2006-01-13 21:16
Tomcatで使用しているものをスタンドアロンのPGから直接利用する
方法はわかりません。 が、そのスタンドアロンのプログラムでcommons dbcpで自前でコネクション プールを実装すればよいと思います。 簡単な例だと初期化処理で Properties prop = new Properties(); prop.put("driverClassName", "org.postgresql.Driver"); prop.put("url","jdbc:postgresql://localhost/ss"); prop.put("username", "postgres"); prop.put("password", "postgres"); DataSource ds = BasicDataSourceFactory.createDataSource(prop); Connection con = ds.getConnection(); DataSourceをどこかに保存すればよいと思います。 後始末としては、 ((BasicDataSource)ds).close(); が必要かと思います。 | ||||||||||||
|
投稿日時: 2006-01-14 19:08
起動している Tomcat が持っている JNDI DataSource を
外部のプログラムから lookup する事は出来ないと思いますが、 Tomcat 自体を自分のプログラムに組み込む事は出来るので、 この場合は lookup 可能なのかもしれません。 単に Tomcat と同様 Commons DBCP を利用するなら、 ここ (http://jakarta.apache.org/commons/dbcp/) の Examples や Depelopers Guide > JNDI Howto を見てみると 良いと思います。 | ||||||||||||
|
投稿日時: 2006-01-14 21:07
つばささん、はしもとさん、ご返信いただきまして、ありがとうございます。m(_|_)m
やはり、Tomcatが持っているDataSourceを外部からは利用できないのですね。 なるほどなるほど。 今回のスタンドアローンプログラムからデータベースへの接続は、多くても2回程度なのですが、もし可能ならTomcatのプーリングを使えればと思っていました。 みなさま、ご教授いただきまして、ありがとうございました。 | ||||||||||||
|
投稿日時: 2006-01-16 13:36
ちょっと変則的ですが、cactus を使うという方法が可能かもしれません。
テスティングフレームワークなので、JUnit 経由で使用しなければなりませんが、 JUnit もスタンドアローンプログラムであることには変わりがないので。 問題なければ、JUnit として実行してしまってもいいし、JUnit のソースを 解析して、自前のスタンドアローンアプリケーションから起動する、という 手段も可能だと思います(たぶん)。 | ||||||||||||
|
投稿日時: 2006-01-16 15:13
Cactusの仕組みを理解していればわかりますが、それってTomcatのVM上でスタンドアロンプログラムを実行させることになりますよね。 それなら適当なJSPを作り、そこに以下のようなスクリプトレットを書いた方がお手軽だと思います。
で、このJSPにリクエストを送るプログラムを実行します。ブラウザでもwgetでもいいですが。 ただしこの場合、スタンドアロンプログラムで使用するclassファイルがWebアプリケーションから使用できる必要があります。 Cactusの導入は、web.xmlを修正したり、Cactusのjarファイルやcactus.propertiesを置いたりといろいろ手間がかかった覚えがあるので、これだけのためにCactusを導入するのは無駄かな、と思います。 そもそもこんなことをしてしまっていいのか、という問題もありますけどね。 | ||||||||||||
|
投稿日時: 2006-01-16 15:52
そうです。あくまでも、そのあたりが問題なければ、ということです。 JSP にスクリプトレットを記述する方法でも、もちろんいいのですが、 「スタンドアローンプログラム」から、という点にこだわるのであれば、 cactus もありかな、と思います。 そもそも、JSP にスクリプトレット書けるぐらいなら、普通に、 Servlet なり、JavaBean なりに記述すればいいわけなので。
確かに面倒ですが、それらの設定は最初に1回書けばいいので、たとえば 問題のスタンドアロンプログラムが、数十個あるのであれば、無駄にはなら ないかもしれません。 と、書いていますが、別に、cactus を推奨しているわけではないです。 ひとつの可能性を提示しているだけです。 | ||||||||||||
|
投稿日時: 2006-01-16 19:32
これで良いなら
でも良いと思う。 これだと同一 VM 上にならないのかな ? [ メッセージ編集済み 編集者: はしもと 編集日時 2006-01-16 19:34 ] |