- - PR -
Strutsにおけるデータソース定義
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-05-06 14:36
こんにちは、Strutsアプリケーションにおけるデータベース接続に関する質問です。
環境 ・Tomcat 5 ・Struts 1.1 ・PostgreSQL 7.3 Strutsアプリケーションはデータベースに接続して、情報を保存したり取り出したりします。 現在はstruts-config.xml の data-sourcesエレメントにDB接続情報(URL,User,Password)を記述しています。 Javaコードからは Action#getDataSource() を利用して、Connectionオブジェクトを取得しています。 さて、ユーザ認証機能を追加しようということで、データベースにユーザ情報、ロール情報を定義しました。 これをTomcat5のJDBCレルム、またはデータソースレルムにより利用するつもりです。 この場合には、server.xmlにもDB接続情報を追加してあげる必要があるはずです。 ここで質問なのですが、次のような要求を満たすよいアイディアはありませんでしょうか? 1)データベース接続情報はできれば一箇所で管理したい 2)アプリケーションコードはできれば変更したくない (今のままAction#getDataSource()を使いたい) server.xmlにJNDIリソースを定義し、認証にはJNDIレルムを使用、同じJNDIリソースをStrutsデータソースでも利用できたりするとありがたいのですが。 どなたかよい方法を知っていれば教えてください。 [ メッセージ編集済み 編集者: カーニー 編集日時 2004-05-06 14:40 ] | ||||
|
投稿日時: 2004-05-06 20:24
ご存じだとは思いますがstruts側でのデータソース、JNDIは推奨されていませんので、tomcatなどコンテナ側でのJNDIやプーリングを行うように変更した方が良いと思います。
どうしても Action#getDataSource() を利用したいというのであれば、Actionのサブクラスを作成してオーバーライドするというのはいかがでしょうか。うまくいきますかねえ(^^; | ||||
|
投稿日時: 2004-05-06 23:49
Action.java を見ると、getDataSource() は ServletContext から
DataSource を getAttribute() してるだけです。 という事で、それを予め setAttribute() しておくだけ、 などという簡単な対応では無理っぽいでしょうか。 例えば PlugIn を実装し、init() 内でそれを行うとか。 しかしこれだと ActionServlet#findDataSource() には 間違い無く対応出来ない。 | ||||
|
投稿日時: 2004-05-07 13:08
aaさん、はしもとさん、ご返答どうもありがとうございます。
確かにマニュアルにはそう書いてあるんですが、何か理由があって結局Strutsのデータソースマネージャを使うことにしたんですよね・・・理由が思い出せない。 思い出せないってことは大した理由じゃなかったのかな・・・。 うーん、規模も小さいアプリケーションだし、書き直しちゃおうかなー。 それにstruts-config.xmlに定義を書くのって、最終的にアプリケーションをwarファイルで配布することを考えるといまいちだったんですよね。 配布先でwarを解凍した後にstruts-config.xmlを編集しないといけない点が。 今回はコードを書き直す方向で考えたいと思います。 アドバイスどうもありがとうございました。 | ||||
1
