Javaプログラム同士のプロセス間通信について

このQ&Aのポイント
  • Javaプログラム同士のプロセス間通信について悩んでいます。デーモン化したJavaプログラムとJavaサーブレット間の通信方法を探しています。
  • デーモン化したJavaプログラムは、Socket通信でデータを受信し、DBに格納した後、クライアントからの要求に応じてデータを加工して送信します。一方、Javaサーブレットではブラウザ上からデーモン化プログラムの設定を変更できるようにしたいと考えています。
  • デーモン化したJavaプログラムとJavaサーブレット間の通信には、どのようなプロセス間通信を使えばいいのか悩んでいます。また、2つのプログラムを1つのプログラムに統合する方法も探しています。ご意見がありましたら、教えてください。
回答を見る
  • ベストアンサー

Javaプログラム同士のプロセス間通信について

Java初心者です。 デーモン化したJavaプログラムとJavaサーブレット間のプロセス間通信を 行いたいと思っていますがどのようにしたものか悩み中です。 ○デーモン化したJavaプログラムは、 1、あるポートからSocket通信でデータを受信し、受信したデータをDBに格納する 2、クライアントからの要求で1で保存したデータを加工して送信 ○サーブレットプログラムでは、 上記のデーモン化プログラムの設定等をブラウザ上から変更できるようにしたいと考えています。 設定とは、例えば受信したデータを全てDBに保存せずに ブラウザから条件を設定できてフィルターするような動作に変更できたり、 また、デーモン化プログラムの動作をブラウザ上から停止、開始できるようにしたいのです。 上記の様な構成の場合にプロセス間通信をする必要があると思いますが、 どの様なプロセス間通信を使えばいいのか悩んでいます。 ほんとうは上記の様な2つのプログラムを1つのプログラムで出来ればいいなぁ~と考えているのですが、、 実現方法が判りません。。 なにか名案はございませんでしょうか? わかりづらい説明でもうしわけございません。 参考になるかわかりませんが、イメージ図を、 <イメージ図> デ  data   開  data    ク ー --------> 発 -------->  ラ タ        中         イ 鯖        鯖         アント          ↑          |          |設定変更          |       管          └--------- 理                   者 よろしくおねがいします。

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

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

  • ベストアンサー
回答No.1

JavaであればRMIが良いと思います。ネットワーク間をほとんど同じように扱うことが出来ます。 http://ash.jp/java/rmi.htm 等、検索すれば沢山あります。

hachimi55
質問者

お礼

連絡おくれましてすみません。 回答有難う御座いますっ。 RMIですか、初めて聞きました調べてみます。 全てソケット通信にすると1つのプログラムで3つのポートを使用することになり、 ちょっとやだなとおもっていたのでRMIはよさそうです。 どうも有難う御座います。

関連するQ&A

  • Javaのプログラムで削除したいのですが・・・

    パソコンの容量が非常に少なくなっていて、不要なプログラムを削除しています(削除前のCドライブ容量は2Gほど)。 そこでいろいろと削除しているのですが、Java関連のデータが多かったので、他の質問を参考に少しずつ削除してきました。 しかしどれを削除していいのかがよくわからずに困っています。 なお、Java関連で入っているプログラムは Java 2 Runtime Environment, SE v1.4.2_01 Java DB 10.3.1.4 Java(TM)6 Update6 Java(TM)SE Development kit 6 Update 6 ・・・です(Javaとついたものはこれだけでした)。 あと何故か「Java 2 Runtime Environment, SE v1.4.2_01」は再インストール(変更)が出来ずにいて、どうしたらいいのかがわかっていません。 ・・・あとよろしければ、これらのプログラムの働きを教えていただきたいと思います(特に上記の「Java 2 Runtime Environment, SE v1.4.2_01」)。 無理な質問ばかりで申し訳ありませんが、どうぞよろしくお願いします。

  • サーバプロセスとクライアントプロセスの通信

    サーバプロセスとクライアントプロセスの通信がどのように行われているのか確認させてください。 現在、以下の認識でいます。 (1)TCPコネクション  サーバ側ポート番号【23】と、それぞれのクライアント側ポート番号【****】との間に確立する。   (2)通信処理  クライアント側のプロセスAは、サーバ側のプロセスA(子)  クライアント側のプロセスBは、サーバ側のプロセスB(子)  クライアント側のプロセスCは、サーバ側のプロセスC(子)  との間で通信を行う。 ※添付の図も参照ください。 認識に相違ないでしょうか。 サーバプロセスとクライアントプロセスの通信を行う際、プロセス間(ポート間?)の通信には、IPアドレスとポート番号を組み合わせたソケットを用いるため、サーバ側ではソケット【192.168.0.1:23】を1個作成し、クライアント側ではソケット【192.168.0.2:****】をプロセス分作成すると考えています。 このとき、クライアントプロセスAはサーバプロセスA(子)と通信を行いますが、サーバ側で作成されているソケットは1つであるため、どの子プロセスに対してデータをせばいいのか判別できないのではないかと考えています。 ※クライアントプロセス(A、B、C)はソケット(サーバ側)【192.168.0.1:23】に対して送信されるため。 上記について、何らかの仕組みがあるのでしょうか。 よろしくお願いします。

  • プロセス間通信について

    VisualBasic2005にてプログラムを作ったのですが、作ったあとに別のPCにインストールして実行してみると動作しないことに気づきました。 プログラムの内容は、Aというプログラムに引数をつけて実行すると常駐プログラムBに引数の値を渡すというシンプルなものです。AとBは同じクライアントPCにて実行します。 「VB2005逆引き大全500の極意」という書籍のプロセス間通信という産プルを参考に作ったのですが、どうもHTTPでデータを渡しているらしくWEBサーバが動作していないと動作しないんです。 私のPCはPHPなども使う為Apacheが動作中です。 通常のクライアントにHTTPでの通信を受信する方法はないのでしょうか?(ApacheなどのWEBサーバをインストールしないで) クライアントPCには.net Framework2.0がインストール済みです。 OSはWindowsXP(Home,Pro双方) どなたか分かる方、ご教授お願いします。

  • Javaで名前付きパイプ通信

    プラットフォームWindows 2003サーバー。 C++のexeプログラムとJavaプログラム。 名前付きパイプでのプロセス間通信をしたいと考えています。 C++側は問題ないと思いますが、Java側で対応できますか? java.ioパッケージ内にpipedWriter/pipedReaderクラスがあるようですが、名前指定等がないようです。 どうぞご教授ください。

  • JAVAで作るプログラムとは

    HPに使うJAVAスクリプトの勉強をしたく、JAVAとスクリプトは違う事を知らずにJAVAの通信教育を申し込んでしまいました。 JAVAはサーバー側のプログラミング言語で、 スクリプトはクライアント側のスクリプト言語でブラウザ上で動作する。 申し込んだものは仕方ないので頑張ってJAVAを理解したいと思うのですが、 ネット上のJAVA講座を見ると最初にJAVAをインストールするとあります。 これはJAVAを作成するソフトのようなものですか? JAVAで作るプログラムとはOSのようなものですか? JAVAでプログラムを作ってHPの更新やスクリプトが作成できるのですか? そもそもJAVAで作るプログラムとはどのように利用するのか、 プログラムの意味がよく分かりません。 JAVAとスクリプトの違いはもう良いのでプログラムについて 分かりやすく教えてください。

    • ベストアンサー
    • Java
  • 通信系プログラムについて

    通信のプログラムを組んでいます。tera termでサーバ上で作業を行っています。送信プログラム、受信プログラム、制御プログラム、データ書き込みプログラムと四つのプログラムを同時に実行させるのですが、送受信するデータ量が大きいと、受信プログラムやデータ書き込みプログラムにバス・エラーcore dumpedと表示されます。プログラム中の動的メモリ管理はしっかりやっているつもりですが、考えられる原因はなんでしょうか?一つのサーバで全部のプログラムを動かしているのがまずいんでしょうか?

  • サーバとの通信に適したプログラム

    VisualStudio2008のMFCプロジェクトにて、 クライアントPCとサーバ間での通信を行うプログラムを作成しようとしています。 クライアントPC側で、特定の命令を送り、 それを受け取ったサーバ側で、命令に沿って、 DBのデータを送ったり、単に文字列を送ったり、 サーバ内ファイルを送り、 クライアントPCがそれを受け取るという プログラムの仕様となります。 PCとサーバでの通信プログラムは初めてで、 通信自体も詳しくないため、ネットで色々調べている 段階なのですが、どういった通信プログラミングが 適しているのかが解りません。 CAsyncSocket、CInternetsession等、 色々あるようですが、上記のような環境/仕様の場合、 何が適しているのでしょうか? 通信については勉強中につき、 漠然としすぎているのかもしれませんが、 よろしくお願いします。

  • windows7で通信プログラムがうまくいきません。

    windows7で通信プログラムがうまくいきません。 XPの時にCで作った単純なHTTP通信プログラムが7だと動作不慮を起こしてしまいます。 サーバー側(centOS)では送ったデータはしっかりと受信できているのですが、そのデータをクライアント(Win7)に送り返すと、データの前半はしっかり受け取っているのですが、後半が壊れて・・・みたいなのがずっと無限に続いて、通信プログラムがとまらなくなるのです。 これって、Win7のせいですか? それとも、やっぱり僕のプログラムがおかしいのでしょうか?

  • サーブレットで使用しているBeanを通常のJavaプログラムで再利用したい

    サーブレットで使用している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)全文を記載したかったのですが、 字数制限に引っかかりましたので省略します。 必要あれば補足に記載します。

    • ベストアンサー
    • Java
  • Socket通信プログラム

    VisualC++6.0(SDK)を用いてSocket通信(UDP)プログラムを 作成(チャットやメッセンジャーのようなもの)しています。 送信用と受信用 1つのプログラムにて、送受信両方の機能を兼ね備えたものを作成しようと思っています。 で、送信側から送ったデータを受信側で処理(文字列の追加など)をして 受信側から送信側に送り戻したいとおもいます。 送信ボタンにより送信します。受信したデータはエディットボックスに表示します。 が、受信したデータを送り返すとしているために、 いつまでも、受信->送信->受信・・・・を繰り返してしまいます。 これを、正しく動作するようにするには、どのようにしたら良いのでしょうか? ご存知の方宜しくお願い致します。 足りないものがあったら、補足させていただきます。