初めて質問させていただきます。
現在、C/S系のシステム開発で、プログラミング言語はJavaサーブレットを、データベースはDB2を使用してWeb画面を使用したシステム開発を行っています。
Javaサーブレットで、JDBC-ODBCを使用してデータベースへ接続するように、また切断の際もプログラムの中で切断できるようにプログラミングをしているのですが、Web画面のブラウザにある×マークで画面を閉じてもデータベースの接続は切断されるのでしょうか?
色んなサイトを探し回ったのですが、良い資料がありませんでした。
お分かりの方がいらしたら、是非ご教授お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

globe8さん、こんにちは。


 Javaのデータベース・コネクションは明示的なクローズがない場合、そのコネクションのインスタンスがガーベジ・コレクション(どの変数からも参照されなくなった領域を自動的に解放する仕組み)で回収される際に、自動的にクローズされるものとされています。
 よって、そのデータベース・コネクションを表す java.sql.Connection のインスタンスが有効期限をどこで迎えるかがポイントです。

有効期限を迎えるポイントとして多々ありますが、大きく分けて、以下の2つになると思います。
1.Javaの実行環境が終了したとき。
 サーブレットですと、webサーバー(より正確に言えば、サーブレット・コンテナ)の終了/停止処理を行ったときになると思います。

2.参照し始めたメソッドが終了したとき。
 たとえば、doPostメソッドやdoGetメソッド内で参照(新たにnewしたなど)場合、そのメソッドが終了すれば、有効期限を迎えます。doPost/doGetメソッドでレスポンスが完了したときはもちろん、処理途中に例外が発生して終了したときも、ガーベジ・コレクションの対象になります。
 ただし、HTTPセッションに登録したり、staticフィールドに代入したり、また、お使いのシステムがコネクションを一定期間プールするものであったりすれば、それらが途切れる瞬間まで有効期限が延びてしまいます。

よって、通常、正常に動作している範囲では、クライアント・ブラウザが閉じられても、コネクションはクローズされるはずです。

ここで重要なことは、あくまで有効期限が迎えても、ガーベジ・コレクションの対象になるだけで、すぐに回収される分けではありません。あくまで、実行環境の動作次第になります。
もうひとつ、回収されれば自動的にクローズされるのがJavaの仕様ですが、実行環境に不具合があれば、その時点でアウトです。
あるいは、Javaは良くても、通信の手違いなどで、、サーブレットがあるマシンは切断した扱いでも、DBサーバーがコネクト中の扱いのままになることも考えられます。

以上、不明瞭な部分があるかとは思いますが、参考になればと思います。
    • good
    • 0
この回答へのお礼

nisikitさん、こんにちは。globe8です。
データベースの切断についてのご回答、どうも有難うございました。
大変ご丁寧な回答でしたので、凄く参考になりました。
まだWEBシステムの開発に就いて半年弱でまだ難しい部分が沢山あり、データベースの切断について困っていたので本当に助かりました。
是非参考にさせて頂こうと思います。
改めて御礼を申し上げます。有難うございました。

お礼日時:2001/10/30 22:03

このQ&Aに関連する人気のQ&A

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

関連するカテゴリからQ&Aを探す

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q馬頭琴 & 日本伝統楽器

モンゴル楽器の馬頭琴を習いたいのですが、どこで教えてくれますか?
横浜在住です。
あと日本伝統楽器も何か始めてみたいのですが、何がよろしいですか?またどこで習えますか?

Aベストアンサー

中国楽器専門店で教室も併設しているところがあるようですよ。
あとは通信でも。

参考URL:http://www.dosodo.co.jp/batoukinkouza.htm

QJDBC対応のデータベース?

JAVAアプレット(JDK1.2)でデータベース(MS ACCESS97)へアクセスする場合
JAVAでのデータベースアクセスにはJDBCを使用し,
MS ACCESSに対してはODBCを使用し,
橋渡しとしてJDBC-ODBC BRIDGEドライバを使用する方法が本でよくとられているように僕は解釈しています。(違うかもしれませんが...)
しかし,MS ACCESS以外のデータベースでJDBCだけでアクセスしSQLをできるようなデータベースはあるのですか?
あるのならそちらのほうがいいのではないのでしょうか?
という質問でした。

Aベストアンサー

ありますよ。知っているところではOracle,Sybaseが対応しています。実際にOracleは操作もやってみました。
ドライバの場所を紹介しておきます。

http://otn.oracle.co.jp/software/db_connect/jdbc/jdbc.html
http://www.sybase.co.jp/download/down_jconnect.html

基本的にMS Accessは、データ量が小なく、更新はマルチでしない場合はOKです。極端な言い方をすると共有して使用するDBではないと思います。(読み書きをシリアル化して使うのならOKかも)

使用目的にあっていれば、Accessでいいと思いますし、Accessの能力を超える使い方をするのであれば、Oracle,Sybase,SQL Serverと言ったデータベースを使用する必要があるでしょう。

ただし、Webで使用する場合、クライアントライセンスの問題がありますので、注意してください。

Q友達に「和楽器バンド」というアーティストを薦められたのですが PVを見ると尺八?や太鼓、琴があったの

友達に「和楽器バンド」というアーティストを薦められたのですが
PVを見ると尺八?や太鼓、琴があったので(さすが和楽器バンドって言うだけあるな)と思ったらドラムやギターが映ってるのを見つけました
その時点で「和楽器」じゃないと思うのですが
太鼓や三味線、三線だと
限界があるのでしょうか?

Aベストアンサー

限界というか、和楽器も使ってますよ、という意味であって、
別に和楽器でしか演奏しません、と言ってるわけじゃないんじゃないでしょうか。

オフィシャルの説明を見ても「詩吟、和楽器とロックバンドを融合させた、新感覚ロックエンタテインメントバンド。」ということですので。

当然ながら和楽器だけで演奏することは出来ますよね。
(そもそも雅楽などの和楽(邦楽)はそうなのですし)
和楽器だけで洋楽を演奏することだって出来るでしょう。

限界というのが「和楽器で洋楽器を真似ること」であればその通りだと思いますけど、
それを目指してはいない、ということなんでしょうね。

QJavaデータベースプログラミング

Javaのプログラムを勉強しているのですが、
Webアプリケーションとはなにか、
Oracleとはなにか、RDBMSとはなにか、
JDBCとはなにか、
どこがどういう風につながって、ひとつのアプリケーションとして成り立ってるか。
そういう、アウトライン的なものを教えてください。

Aベストアンサー

Javaの勉強中ということなので、Webアプリケーションに付いてはServletやJSP関連をお調べになると良く分かるのではないでしょうか。
OracleはRDBMS製品です。やわらかく言うとクライアントサーバー型のデータベースソフトってところです。
RDBMSはリレーショナルデータベースマネージメントシステムの略称です。
JDBCはJavaプログラムからデータベースへ接続するためのプログラムでAPIとして提供されてます。
ODBCと混同しないで下さい。
JavaのプログラムはJDBCAPIを使ってOracleデータベースへ接続しデータを取得したり操作したりできます。

参考URL:http://www.t3.rim.or.jp/~yoko-k-h/java/servlet/index.html

Q和楽器(三味線、琴など)を習いたいのですが・・・

20代OLです。
三味線や琴、和太鼓などの和楽器に興味があり、
習おうと思っているのですが、今まで楽器演奏の経験がなくもちろん楽譜もよめません。

体験レッスンに行こうと思っているのですが、
全くの初心者でも受け入れてくれるものなのでしょうか?
楽譜がよめることが最低条件ですか?

非常に興味があるのですが、躊躇してしまいます・・・(>_<)

Aベストアンサー

こんにちは。

ピアノ教師です(^^;
なんでピアノ教師が登場?とお思いでしょうが 細かい事は気になさらずに?

私は小学生の頃 なんとな~くお琴を少し三味線を少し弾いてました。特別習いに行った訳ではなく なぜかうちにあったので。楽譜は西洋音楽とは違って 数字とか何か独特な書き方や言い方があったような記憶が…4436みたいな感じを口ずさんで弾いていたかなぁ。どちらかと言うと私はお琴のほうが音色も弾き方も好きでしたが 難しいという印象はなかったです♪

習いに行くなら もちろん楽譜など読めない状態で大丈夫ですよ。初心者で楽譜も含めて習うのが目的ですから。楽譜(というのかな?和楽器も)が読めて弾けたら 習いに行く必要ないですもんね(笑)

私の友人(女性)も和太鼓を長くやっていましたね。
大江戸助六太鼓…だったかな。カッコ良かったですよ。ただ叩くだけでなく舞いながら叩くんです。

私はバンドのキーボードを少しやっていたのですが 舞台で和太鼓とも 三味線とも 尺八.篠笛(字合ってるかしら^^;)とも共演して 和楽器の良さもとても体感しているので まず勇気を出して体験に行ってみて下さい!
で、お師匠さんと気が合わなそうだったり 怖かったら逃げましょう?体験に行ったからと言って無理に習う事はないのですから(笑)。体を動かしたり リズムっぽい動き?がお好きなら和太鼓がオススメです。逆にお淑やかな感じがお好きならお琴や三味線ですね。
西洋楽器にしても和楽器にしても 積極的な行動力と活発さ(同じかな^^;)物怖じしない度胸!が大切です。・・・但し。(小さい声で言いますが…)楽器に限らず 何かを習得するのには それなりの努力や忍耐 へこたれない根性が必要です。
やる!と決めたら根性据えて?頑張って下さいね。
人生一度きり。若い時は短いですよ~(と 経験者は語る^^;)やりたい事は臆せずチャレンジ♪だと私は思います。
・・・私もお琴。習いたくなっちゃった(笑)。

こんにちは。

ピアノ教師です(^^;
なんでピアノ教師が登場?とお思いでしょうが 細かい事は気になさらずに?

私は小学生の頃 なんとな~くお琴を少し三味線を少し弾いてました。特別習いに行った訳ではなく なぜかうちにあったので。楽譜は西洋音楽とは違って 数字とか何か独特な書き方や言い方があったような記憶が…4436みたいな感じを口ずさんで弾いていたかなぁ。どちらかと言うと私はお琴のほうが音色も弾き方も好きでしたが 難しいという印象はなかったです♪

習いに行くなら もちろん楽譜など読め...続きを読む

Qデータベースウィンドウを表示しないで、データベースウィンドウを更新する

http://support.microsoft.com/kb/304256/ja
マイクロソフト技術情報で、RefreshDatabaseWindow メソッド は、 Access2000形式で保存されたプロジェクト(ADP)で動作しませんと出ており、データベースオブジェクトの作成、削除、または名前の変更が行われた後で、データベース ウィンドウを更新する処理が、データベースウィンドウを表示している状態でしか更新できません。データベースウィンドウが表示されていない状態で、データ入力フォームが表示されて、何かの処理がされたときにデータベースウィンドウを最新の状態に更新したい場合、何か方法をご存知の方いらっしゃいましたらご指導ください。
テーブル作成をした後、テーブルにアクセスする処理をしようとするとテーブルがないため、エラーになってしまうことがあるのですが、一時的にデータベースウィンドウを表示させてF5を押下して最新にして作成したテーブルが表示されるとエラーは発生しません。

Aベストアンサー

こんにちは、
どうしてデータベースウィンドウが表示されていてはいけないのか、わかりませんが、
処理の実行中に
画面の描画をストップさせて、データベースウィンドウ
を表示→処理→データベースウィンドウを非表示→
画面の描画をスタートさせてはいかがでしょうか。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=2229389

Q金髪で女性で琴みたいな楽器を弾いて声の高い女性

テレビで何回か見たことがあるのですが、この人の名前がわかりません。金髪で女性で琴みたいな楽器(座って指で弾いて音を出す)を弾いていて、声が高く、芝居小屋で座って司会するような人です。年は20代後半から30代前半の印象を受けました。いくつかキーワードを入れて探してみたのですが、ヒットしてきません。どなたかご存じのかたお教えください!

Aベストアンサー

http://www.yamazaki-vanilla.com/
山﨑バニラでしょうか?

Qデータベースプログラミング言語を勉強したいのです。

初めての投稿です。

どうぞ宜しくお願いします。

標記の件。

データベース言語を勉強したいのですが

どれを勉強すべきか迷っています。

これはあまり聞きたくないと存じますが聞いてください。

ボクのキャリアとしては「dBASE PLUS」をかなりの

レベルまで以前お世話になった会社で教わりました。

12年間それをやっておりません。

それとそのプログラムの会社(Borland)は日本法人が

ありましたが今はニューヨークに小さな会社があります。

ボクは何年も迷った挙句、449ドルで購入しました。

サポートが英語だということ以外に

割愛しますが、色々な意味で失敗でした。

私はそれと同じ様なことがプログラミングできるソフトを

探しています。

多分「Access」が似ていると思います。

金銭的な問題ではなく、

色々考えた結果、Opensourceでやらなければいけないと

思います。

「データベースプログラミング言語」で検索しました。

「.NET」「C++」「JAVA」「php」「perl」「python」「ruby」「MySQL」

「Openoffice.org.Base」「Microsoft Visual Express」などが

出てきました。

「Microsoft Visual Express」は無償でダウンロードしていますが、有償版は一番高いのだと100万円以上するみたいです。

どんな違いが有るのか疑問です。

統合開発環境(Eclipseなど)は高嶺の花と感じています。

Emacsも操れればどんなに意欲がワクだろうと思います。

ただ、ボクが今こんなことができればいいと思っている事は

「dBASE PLUS」でやっていたことです。

例えば、excelやLotus1-2-3で5千行を超える膨大なデータがあったとします。

それをエラーデータがないかチェックして、無かった場合そのまま自動で次のプログラムに入り、ある規則性で伝票番号を振り、それをテキストデータに変換してホストコンピュータに取り込むプログラムです。

インプットしようとしたら10日かかるのもありました。

エラーが無く、15分で済み画期的でした。

もう1つは宛名シールです。郵便封筒に貼るものを作ることです。

その2つのプログラムが組めれば応用が効くと思っています。

これが現在の「dBASE PLUS」では色々と問題があるのです。

上記に記載した「データベースプログラミング言語」の中で何が最適だと思われますか?

アドバイスを頂ければ大変参考になります。

何卒、ご回答の程よろしくお願い致します。

初めての投稿です。

どうぞ宜しくお願いします。

標記の件。

データベース言語を勉強したいのですが

どれを勉強すべきか迷っています。

これはあまり聞きたくないと存じますが聞いてください。

ボクのキャリアとしては「dBASE PLUS」をかなりの

レベルまで以前お世話になった会社で教わりました。

12年間それをやっておりません。

それとそのプログラムの会社(Borland)は日本法人が

ありましたが今はニューヨークに小さな会社があります。

ボクは何年も迷った挙句、449ドルで購入しました。

サポ...続きを読む

Aベストアンサー

No.1さんもおっしゃってるように、いろいろな名称が出て来ますが、整理した方がいいと思います。

[DB管理システム]
・dBASE PLUS
・Access
・Openoffice.org.Base

[プログラミング言語]
・.NET
・C++
・JAVA
・php
・perl
・python
・ruby

[DB]
・MySQL

[DB管理システム]は、[プログラミング言語]と[DB]を組み合わせたようなものです。
[プログラミング言語]は、それ自体はDBをもっていないので[DB]と組み合わせて使う必要があります。
[DB]は(例外はありますが)データーベースだけなので、プログラミングはできません。

[DB管理システム]と[プログラミング言語]は、[DB]と組み合わせて使うことができます。
(もしかしたらDB管理システムとMySQLを組み合わせて使うことができないものもあるかも)

質問者さんは、dBASE PLUSをご存じですから、似たようなAccessやOpenoffice.org.Baseは理解しやすいかと思います。
もし、これでできない場合には、PHP+MySQLがいいかなと個人的には思いますが、自信はありません。

>もう1つは宛名シールです
これは、たとえばExcelで差し込み印刷などもできますし、別途考えた方がいいと思います。
(Openoffice.org.Baseでもいいのかな?)

No.1さんもおっしゃってるように、いろいろな名称が出て来ますが、整理した方がいいと思います。

[DB管理システム]
・dBASE PLUS
・Access
・Openoffice.org.Base

[プログラミング言語]
・.NET
・C++
・JAVA
・php
・perl
・python
・ruby

[DB]
・MySQL

[DB管理システム]は、[プログラミング言語]と[DB]を組み合わせたようなものです。
[プログラミング言語]は、それ自体はDBをもっていないので[DB]と組み合わせて使う必要があります。
[DB]は(例外はありますが)データーベースだけなので、プログラミングは...続きを読む

Q楽器(お琴、チェロ)が載る車を購入しようと考えてます。

定年間近を迎えた父に新しく車を買いたいと相談され悩んでいます。
現在、父はディアマンテに乗っていますが、そろそろスリーダイヤの縛りから開放されたいと考えてるようです。
現在乗っている車はこちらになります。
http://catalogue.carview.co.jp/spec/MITSUBISHI/DIAMANTE_SEDAN/2000/11929/

父の希望を箇条書きにすると。
・楽器が載ること(*若干大きめに見積もっています、今の車にはなんとか乗ります)
 (お琴)15x25x195
 (チェロ)30x50x140
・現在の車より乗り心地は落としたくない。
・ハイブリッドに惹かれている模様
・オートマもしくはCVT(母も運転できるように)
 *ちなみに、母はディアマンテにのって速攻ぶつけてます、今はペーパードライバー…
・スリーダイヤの車なら安く買えそう?

以前、ホンダに試乗しにいったのですが
ストリーム…安定感がない、今の車のほうが良い(母談)
オデッセイ…悪くない、だけど大きすぎる(父談)
との感想でした。父は大昔に自動車部でラリーにも出てるらしいので、それなりにパワーのある車が好みのようです(一方低燃費にも惹かれている様ですが)。なので、個人的にはプリウス、CIVICハイブリッド辺りがいいのではないかと考えています(プリウスはシートが平坦になるのでたぶん琴が載るのではないかと考えています、CIVICはわかりません)。これからディーラー巡りをしようと考えておりますが、アドバイスを頂けるとうれしいです。

定年間近を迎えた父に新しく車を買いたいと相談され悩んでいます。
現在、父はディアマンテに乗っていますが、そろそろスリーダイヤの縛りから開放されたいと考えてるようです。
現在乗っている車はこちらになります。
http://catalogue.carview.co.jp/spec/MITSUBISHI/DIAMANTE_SEDAN/2000/11929/

父の希望を箇条書きにすると。
・楽器が載ること(*若干大きめに見積もっています、今の車にはなんとか乗ります)
 (お琴)15x25x195
 (チェロ)30x50x140
・現在の車より乗り心地は落としたくない。
・ハ...続きを読む

Aベストアンサー

うちの母はお琴の先生なのでアドバイスをひとつ。。。
今の車は初代ヴィッツですが、助手席を倒せば5~6面は乗ります。
今までいろいろ車を買い換えましたが、乗せられない車はなかったです。
ただ、リアシートは分割可倒式のほうがいいと思います。
分割じゃないとリアシート倒して乗せた場合、運転手以外人が乗れなくなってしまいます。

QJava環境で使用するAccessデータベースについて

以下の様な開発環境でシステムを構築しています。
OS:windowsXP
DB:Microsoft Access 2002
j2sdk:1.4.2_05
Tomcat:4.1.30

Web上で登録画面を表示、登録されたデータをサーブレット経由でDBに登録しようとしたところ、「パラメータが少なすぎます」というメッセージが出て登録できませんでした。
DBおよびSQL構文のエリア名の記入ミスも調べましたが問題ない模様です。
AccessのODBCドライバ(MDAC2.5)について調べたところ、MDAC2.5を使用したSQL文では二重引用符(”)を文字列リテラルとして使用できないようです。
この問題を回避するよい方法があれば、ぜひ教示願います。

<コーディング内容>
//postされた内容を受け取る
String wkkanri = request.getParameter(“kanri_No”);
String wkroom = request.getParameter(“room_No”);
-------------------------------------------------
//ドライバクラスのロード、DB接続
Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver”);
Connection con = DriverManager.getConnection(“jdbc:odbc:syataku”);
Statement stmt = con.createStatement();

//insert用sql文の発行
String sql = “insert into kihon(kanri_No,room_No) values(wkkanri,wkroom)”;
Stmt.executeUpdate(sql);

以下の様な開発環境でシステムを構築しています。
OS:windowsXP
DB:Microsoft Access 2002
j2sdk:1.4.2_05
Tomcat:4.1.30

Web上で登録画面を表示、登録されたデータをサーブレット経由でDBに登録しようとしたところ、「パラメータが少なすぎます」というメッセージが出て登録できませんでした。
DBおよびSQL構文のエリア名の記入ミスも調べましたが問題ない模様です。
AccessのODBCドライバ(MDAC2.5)について調べたところ、MDAC2.5を使用したSQL文では二重引用符(”)を文字列リテラルとして使用で...続きを読む

Aベストアンサー

クォートが全角なのは記載ミスですよね。

例えば、wkkanri に K001 、wkroom に 101 とか入っている
として、Accessに渡したいSQLは

insert into kihon(kanri_No,room_No) values('K001',101)

になります。
しかしお書きになった内容は

insert into kihon(kanri_No,room_No) values(wkkanri,wkroom)

なので、Access側ではエラーになります。
String sql に連結させて、正しいSQLを動的に作ってあげないと。

String sql = "insert into kihon(kanri_No,room_No) values('" + wkkanri + "'," + wkroom + ")";

とかでは?
DB側の型がわからないので、その辺は自助努力で。

もしくはパラメータバインドと言う方法もありますが、まずは
今のやり方を完遂させた方がよいでしょう。

クォートが全角なのは記載ミスですよね。

例えば、wkkanri に K001 、wkroom に 101 とか入っている
として、Accessに渡したいSQLは

insert into kihon(kanri_No,room_No) values('K001',101)

になります。
しかしお書きになった内容は

insert into kihon(kanri_No,room_No) values(wkkanri,wkroom)

なので、Access側ではエラーになります。
String sql に連結させて、正しいSQLを動的に作ってあげないと。

String sql = "insert into kihon(kanri_No,room_No) values('" + wkkanri + "'," ...続きを読む


人気Q&Aランキング

おすすめ情報