アプリ版:「スタンプのみでお礼する」機能のリリースについて

サーブレットで使用しているBeanを通常のJavaプログラムで再利用したいと考えています。

通常のJavaプログラムというのは
サーバにtelnetログインし javaコマンドで実行するプログラムを指します。

サーブレット側では、
JDBCを利用したコネクションプーリング(JavaBean)を使用しています。
通常のJavaプログラムでも、このBeanをimportして使用したいのですが、

実行時エラーとして、
Exception in thread "main" Backend start-up failed:FATAL:
Sorry, too many clients already

とエラー表示されます。
DBは postgres を使用しています。
使用するために必要な設定等わかりましたら教えてください。

コネクションプーリング(JavaBean)全文を記載したかったのですが、
字数制限に引っかかりましたので省略します。
必要あれば補足に記載します。

A 回答 (2件)

> 通常のJavaプログラムでも、このBeanをimportして使用したいのですが



javaコマンドで実行する場合もプーリングが起こっているんですね。
では、Tomcat起動後は、コマンドラインでのpostgresへの接続は可能なのでしょうか?

> コネクションプーリングと同時接続件数とはどういう関係でしょうか?

ただ単にpostgresの同時接続数にプーリングのmax設定が合わせてあるだけだと思います。
プーリングのmax設定のほうが大きければTomcatnoログにエラーが出力されるでしょうし、小さければ上記のコマンドラインでの接続は可能だと思います。
イコールならば、ログ出力はないし、コマンドラインでの接続もエラーとなるはずです。

この回答への補足

たびたびありがとうございます。

コネクションプーリングは作成されていないときに
プーリング数として20を作成するようにしていたのですが、
javaコマンドで実行する場合は、
既にあるにも関わらず、さらに20個作成しようとして、
同時接続数(デフォルト32)を越えていたようです。

プーリング数を10個に設定しなおすことで動きましたが、
以下の疑問が残ります。

なぜサーブレット側で生成したプーリングを使用しないのか?
同じjavaプログラムを複数の端末から実行すると、同じように落ちてしまうが、回避策はないのか?

何人もがどの環境から使用しても落ちないように
コネクションプーリングを作成したのに・・・

このあたりを今後の解決としたいのですが、
何か良い方法は無いでしょうか?

補足日時:2004/02/09 17:27
    • good
    • 0
この回答へのお礼

ありがとうございました。

結局、プーリングのmax設定を引数とし、
サーブレット側は20件で作成し、
javaコマンド側は1件しか作成しないようにしました。

とりあえずはこれで様子を見てみます。
頻繁に越えるようであれば、同時接続件数を増やして対応します。

有難うございました。

お礼日時:2004/02/09 19:59

postgresの経験がないですが・・・



このエラーって
同時接続数オーバーってことですよね?
コンテナ(tomcat等)をシャットダウンして、javaコマンドで実行したらどうなるのでしょうか?

この回答への補足

早速の回答ありがとうございます。

tomcatを停止し、
javaコマンドで実行したところ問題なく動きました。
しかし、tomcatを再起動するとまた動かなくなります。

同時接続数を増やす方法。
(コネクションプーリングと同時接続件数とはどういう関係でしょうか?)
あるいは他の方法ありましたらお教えください。

補足日時:2004/02/09 16:28
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!