• ベストアンサー

java サーブレットについて

プログラム初心者で困っています。 サーバ上で動作するプログラムを作成中です(Java)。サーバ上で常に動いているクラスを作成したのですが、画面からリクエストがあった際には、この常に動いているクラスに別の動作をさせたいと思っています。画面からのリクエストによって動きだすのはサーブレットですよね? ここで分からなくなってしまいました。常に動いているプログラムが、さらに画面からのリクエストで動き出したら2つ動いてしまうことになりますよね? 自分が行いたいことは、常に動いているクラスに画面からリクエストがあったという情報を渡したいのです。 お願いします!!!

  • Java
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • kana_m
  • ベストアンサー率40% (26/65)
回答No.2

ちょっと問題を整理しましょう。 > サーバにおいた時に最初に動きだすプログラムです。 > さらに数時間に一度処理を行うように実装されています。 バッチみたいなものでしょうか。 この数時間とは、どこでスケジュールされているのでしょう。 通常サーバに置いただけでJVMが動作してクラスをロードすることは無いので、 サーブレットコンテナなど何らかのトリガーたる部分があると思うのですが・・・。 推測での答えになりますが、上記のバッチみたいなものが リクエストを処理する部分と同じVM上で別スレッドであるなら 双方から参照できるstaticな値を使えばよいと思います。 別のVM上で動作するものであれば、双方から参照できる外部資産が必要です。 通常それはDBであったり、テキストファイルだったりしますね。 何となくですが、ご質問の説明に肝心な何かが足りないか もしくはサーブレットについての知識不足・勘違いがあると感じます。

arekore09
質問者

お礼

返信ありがとうございます。 サーブレットについて知識不足は否めないです…。 >この数時間とは、どこでスケジュールされているのでしょう >通常サーバに置いただけでJVMが動作してクラスをロードすることは無いので、サーブレットコンテナなど何らかのトリガーたる部分があると思うのですが・・・。 Timerクラスを実装してschedule()メソッドでスケジュール管理しています。 また、サーブレットはJboss上で動かしています。 static変数を使用して、情報の受け渡しができました!! ありがとうございます!!動作原理はいまいち分かってませんが…

その他の回答 (1)

  • kana_m
  • ベストアンサー率40% (26/65)
回答No.1

ご質問の意図が汲み取れません。 常に動いているクラスっていうのがちょっとわかりません。 自前のリスナーか何かでしょうか。無限ループではないと思いますが・・ サーブレットコンテナがリクエストによって動き出すことは通常ありません。 画面からのリクエストによって動き出すのは、ほとんどの場合スレッドですね。

arekore09
質問者

お礼

回答ありがとうございます。 分かりずらくてすいません。補足します! 例えば、クラス、StartUp.javaを作成するとします。このクラスは、サーバにおいた時に最初に動きだすプログラムです。さらに数時間に一度処理を行うように実装されています。 一定間隔で常に動くようになっています。 しかし、画面からのリクエストによって、このクラスの処理内容を変えたいと思っています。 画面からリクエストがあったという情報をStartUp.javaに渡すのに、良い方法はないでしょうか?

関連するQ&A

  • Javaサーブレット

    Javaサーブレットの初心者です。 「標準 MySQL 改訂第3版」(2007,3月発行)という本でMySQLを勉強しようと始めたのですが、それ以前の場所で詰まってしまいました。 本の流れは  Apache,MySQL,Tomcat,J2SEをインストール → Apacheの動作確認 → Tomcatの動作確認 → ApacheとTomcatを連携させる。(ここまでは正常に動いています。)→Javaサーブレットの動作確認 ここでブラウザから http://localhost/java/Test と入力すると 「Hello Java」と表示されるはずなのですが HTTPステータス 404 - /java/Test というエラー画面になってしまい、表示されません。 すべて本に書いてあるとおりにやりました。 ファイルの中身なども何度も見直しました。 なぜ表示されないのか教えてください。 お願いします。

  • Javaサーブレット

    Javaサーブレットの初心者です。 「標準 MySQL 改訂第3版」(2007,3月発行)という本でMySQLを勉強しようと始めたのですが、それ以前の場所で詰まってしまいました。 本の流れは  Apache,MySQL,Tomcat,J2SEをインストール → Apacheの動作確認 → Tomcatの動作確認 → ApacheとTomcatを連携させる。(ここまでは正常に動いています。)→Javaサーブレットの動作確認 ここでブラウザから ​http://localhost/java/Test​ と入力すると 「Hello Java」と表示されるはずなのですが HTTPステータス 404 - /java/Test というエラー画面になってしまい、表示されません。 すべて本に書いてあるとおりにやりました。 ファイルの中身なども何度も見直しました。 なぜ表示されないのか教えてください。 お願いします。

  • Java、サーブレットについて

    JavaをHP上で動かしたいです。 どうすればいいですか? hpは、fc2の無料のものを借りています。 アプレットはプラグインがサポートされていないので動きませんでした。 サーブレットを実行すれば、Webページをつくることができると思いますが、それはfc2のホームページとはどう違うのでしょうか? ちなみに、サーバーの知識があいまいです。 ユーザーがリクエストして...などは分かるのですが、サーバーというものはどこにあって、レンタルサーバーを借りるということはどういうことなのか?がいまいちわかりません。 目的は、Web上でJavaのプログラムを表現することです。 お詳しい方どうか教えてください。

  • jsp/サーブレット

    jsp サーブレットを勉強しています。 jspに入力された値を サーブレットに投げます。 サーブレットからjavaクラスに値を投げて javaクラスで値が正しいかどうかを判断します。 その結果をサーブレットに投げて、 サーブレットからjspに投げて jspで結果を表示する。というのは理解できました。 しかし私が行いたいのは、 クライアントがjspにアクセスしたときに、 javaクラスにある値をjspに表示させたいというものです。 この場合はサーブレットに何も投げるものがないのですが、 jsp→サーブレット→javaクラス→サーブレット→jsp このようにサーブレットを使って表示させるには、 どのようなプログラムを書いたらいいのでしょうか。 わかりにくい説明で大変申し訳ないですが、 具体的なプログラムを教えていただけるとありがたいです。 また、参考になりそうなURLがありましたら教えてください。 よろしくお願いします。

  • JavaアプレットはWebブラウザ上で動作し、Javaサーブレットはサ

    JavaアプレットはWebブラウザ上で動作し、Javaサーブレットはサーバー上で動き、Javaアプリケーションは単独で動作するということは理解しました。 以上の3つには機能的な違いがありますか? JavaアプリケーションにはあってJavaアプレットには無いもの、Javaサーブレットにあって、Javaアプレットには無いもの、JavaサーブレットにあってJavaアプリケーションには無いものなど、もっと詳しく知りたいです。参考の本などもお待ちしています。皆さんの知恵をお貸しください。よろしくおねがいします。

    • ベストアンサー
    • Java
  • JAVAのいろいろ

    こんばんわ。 サーバサイドのサーブレットとJSP、 クライアントサイドのJAVAアプレットとJAVAスクリプト、 JAVA初心者で、これからプログラムを勉強してシステム構築していきたいのですが、どの組み合わせが一番容易でわかりやすいでしょうか? 作成したいシステムは以下のMr.camのようなライブカメラです。 <http://www.tvdo.net/>

    • ベストアンサー
    • Java
  • javaサーブレットから別サーバのバッチ起動

    お世話になります。 現在、javaサーブレットからDBサーバにあるバッチを起動するプログラムを作成しております。 HPなどで色々調査したのですが実現方法が、よくわからず困っております。 参考となるHPやコーディング例がありましたら教えて頂けないでしょうか。 javaサーブレットの環境は、  centOS 5.5、jdk 1.6、tomcat 5.5となります。 お手数お掛け致しますが、よろしくお願い致します。

    • ベストアンサー
    • Java
  • Tomcat で Java サーブレットを動かす方法

    こんにちわ Tomcat 3.3.1 でサーブレットを動作させる実験をしています。 現在サンプルプログラムが、http://[host_name]:8080/examples/ で動作しています。 ※ウェブサーバーは使用していません。 ここで質問です。 自分で任意のフォルダを作成し、その中にクラスファイルを格納して実行する場合の設定方法が分かりません。 examples フォルダ以下を見ると、 Web-inf servlets Meta-inf 等のフォルダが有ります。 サーブレットを実行する際に、この構成は必須なのでしょうか? この辺の設定方法が解説されているサイトまたは、書籍など有りましたら情報をください。 よろしくお願い致します。

    • ベストアンサー
    • Java
  • Javaサーブレット?がわかりません。

    質問です。 HTMLで作られた画面のテキストボックス(test1)に値を設定し、 ボタンを押下することによってJava(サーブレット?)に値を渡し、 Java側からHTML画面の別のテキストボックスに値を設定するのには どうしたら良いのでしょうか? 画面は <HTML><HEAD> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <TITLE></TITLE> </HEAD><BODY> <FORM name="Form" action="main"> <TR><TD><INPUT type="text" name="test1"> <INPUT type="text" name="test2"> </TD></TR><BR> <TR><TD><INPUT type="submit" value="試験"></TD></TR> </FORM></BODY></HTML> こんな感じです。 Java側のdoGetメソッドで String name = request.getParameter( "test1" ); で取得した値を画面のtest2のテキストボックスに値を設定したいのですが 新しくHTML画面を作成するのではなく、既存の画面のテキストボックスに値をいれることができるのでしょうか? よろしくお願いします

    • ベストアンサー
    • Java
  • サーブレットコンテナのメモリ解放について

    お世話になっております。 今回質問させていただきたいのはサーブレットコンテナ上のメモリ解放についてです。サーブレットの動作フローとしては、 (1)クライアントからHTTPリクエストが投げられる。 (2)Webサーバがリクエストを受け取り、コンテナへリクエストを委譲する。 (3)サーブレットコンテナは、リクエストとレスポンスのラッパーオブジェクトを生成し、リクエストへリクエスト情報をマッピングする。 (4)(3)で生成したリクエスト/レスポンスオブジェクトをサーブレットへ参照渡しする。 (5)サーブレットが処理を実行する (6)レスポンスを生成し、クライアントへ返す。 という流れかと思いますが、この際に(3)で生成されるラッパーオブジェクトや、ロードされたサーブレットが解放されるのは、レスポンスを返した後なのでしょうか。それとも次のリクエストに備え、オブジェクト本体は確保されたまま、次のマッピングに備えるのでしょうか。(サーブレットの解放はコンテナが終了した際?) はたまた、やはりJava特有のガベージコレクションが働き、メモリ解放はガベージコレクションのタイミングで行われるのでしょうか、、 よろしくお願い致します。。m(._.)m

    • ベストアンサー
    • Java

専門家に質問してみよう