- PR -

DBCPのDBセッションについて

投稿者投稿内容
おかもと
大ベテラン
会議室デビュー日: 2003/06/08
投稿数: 182
投稿日時: 2004-10-26 09:39
引用:

kitoさんの書き込み (2004-10-26 00:33) より:
EJBHomeをキャッシュしてDataSourceをキャッシュしない理由が私にはわかりません。




すみません、「DataSourceをキャッシュしましょう」と言う内容のTipsが
中々見つからないので、「もしかしたら必要ないのかも」と言うぐらいの
感覚で書いています。
EJBを使うぐらいのプロジェクトに投入されるぐらいの開発者のスキルを
持ってすれば、EJBHomeをキャッシュするぐらいの発想はすぐに思い浮かぶような
気がするのです。
もし、JNDIの検索にコストが掛かるというのなら、JSP&Servletの開発者の方が
スキルの低い人は山ほど居そうなので、そこでこそ注意を喚起するべきかと
思いますが・・・。

ちなみに、私もはじめはkitoさんと同じように、「DataSourceをキャッシュする派」
でした。しかし、最近は「本当にそれって必要なの?」と迷いが出ているところです。

まあ、機会が有ればJMeterでも使って負荷を掛けてどれぐらいパフォーマンスに
問題があるか試してみようかと思います。もし、DataSourceをキャッシュすることの
有効性を検証している情報ソースが有れば教えて頂けると有りがたいです。
タマ
ベテラン
会議室デビュー日: 2004/08/08
投稿数: 56
投稿日時: 2004-10-26 20:34
ODBCのファイルの配置場所変えなども試してみたのですが、
同じエラーがでっぱなしで消えません。

同じようなエラーで解決した方アドバイスいただけないでしょうか。
おかもと
大ベテラン
会議室デビュー日: 2003/06/08
投稿数: 182
投稿日時: 2004-10-26 21:48
ODBCドライバでは駄目ですよ。JDBCドライバを用意して下さい。
あと、URLのipとportの部分は伏せ字で、本当は正しい値が
入っているのですよね?

[ メッセージ編集済み 編集者: おかもと 編集日時 2004-10-26 21:52 ]
タマ
ベテラン
会議室デビュー日: 2004/08/08
投稿数: 56
投稿日時: 2004-10-26 21:55
ODBC←JDBCの間違いでした。

PORTとIPはあっているはずです。
JNDIを使わないとつなげるんで。

宜しくお願いいたします。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2004-10-26 23:38
Tomcatの場合はどうかわかりませんが、
JNDIで使用しているクラスローダから
JDBCドライバが見えていないのではないでしょうか。
JNDIを使用しない場合に、コネクションのインスタンスobj_cnの
クラスローダはどうなっているでしょうか。
System.out.println(obj_cn.getClass().getClassLoader());
で確認できます。

これも参考にしてみてください。
JNDIデータソースの手引き
kito
ベテラン
会議室デビュー日: 2003/03/24
投稿数: 59
お住まい・勤務地: Osaka
投稿日時: 2004-10-27 01:06
>おかもとさん
ちょっと論点がわかりにくいのですが、、、
とりあえず、私が書いているのは
「『DataSourceをキャッシュすること』の有用性」というより
「『JNDI lookupをしないこと』の有用性」です。
それがDataSourceだろうが、EJBHomeだろうが、関係ないです。

>タマさん
既に書きましたがエラーメッセージをきちんと読みましょう。
そこにエラーの原因が書いてあります。
大方JDBCドライバの配置場所の間違いでしょうけど。
おかもと
大ベテラン
会議室デビュー日: 2003/06/08
投稿数: 182
投稿日時: 2004-10-27 10:25
引用:

kitoさんの書き込み (2004-10-27 01:06) より:
「『JNDI lookupをしないこと』の有用性」です。



ここが分からないのです。JNDIのlookupに時間が掛かる状況というのが、
いったいどういった場合なのかが不勉強な物で・・・。
EJBの場合は、JNDIで管理するリソースが多いので、毎回lookupしていると
コストが馬鹿にならないと言うのは理解が出来ますが、たかだかDataSource一個
lookupするだけでしたら、それほど問題にはならないのではないかと思うのです。

だから、EJBを用いないJSP&Servletのパフォーマンスの問題点として、
JNDIのlookupが取り上げられないのではないかと推測しております。
実際、JSP&ServletだけのシステムでDataSourceを毎回lookupすることが
問題になった事は一度もありません。

ただし、念のために「決めごと」として、DataSourceをキャッシュしておくことに
関しては異論はないです。

ところで、kitoさんところではDataSourceをキャッシュしたことにより
パフォーマンスが改善された実績がお有りなのでしょうか?

かなり、本題から離れておりますが、このスレッドはJSP&Servlet初心者が
見ている可能性も高いので、簡単に経験談を聞かせて頂ければ有りがたいです。
ぬべたそ
ベテラン
会議室デビュー日: 2003/12/18
投稿数: 72
投稿日時: 2004-10-27 13:48
引用:

タマさんの書き込み (2004-10-25 21:37) より:
=====conf/server.xml=====
<Context ・・・/>
<Resource name="jdbc/Oracle" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/Oracle">
<parameter>
<name>username</name>
<value>・・・</value>
</parameter>

<parameter>
<name>password</name>
<value>・・・</value>
</parameter>

<parameter>
<name>driverClassName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
</parameter>

<parameter>
<name>URL</name>
<value>jdbc:oracle:thin:@ip:port:sid</value>
</parameter>
</ResourceParams>



server.xmlに
コード:
  
<parameter>
  <name>factory</name>
  <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>


を追加したらどうなりますか?

スキルアップ/キャリアアップ(JOB@IT)