JavaVM間の通信について

このQ&Aのポイント
  • 異なるJavaVM間での通信方法について教えてください。
  • AアプリとBアプリの間でデータを受け渡す方法を教えてください。
  • Bアプリのポート開放やメソッド呼び出しについて詳細を教えてください。
回答を見る
  • ベストアンサー

JavaVM間の通信について

宜しくお願いします。 同サーバ内において、別個のJavaVMで異なるポートを持つアプリケーションを作動させ、VM1のAアプリからVM2のBアプリに対して処理を行う場合の手法をご指導ください。 処理内容は、Aアプリで保持しているデータをBアプリで受け取るというものです。 順序として、Aアプリが作動している状態で、Bアプリのポートを開放し、Bアプリ内のsetterメソッド等をコールするのでしょうか? 上記で正しい場合、不明点が2つあります。 ・Bアプリのポート開放には、RMIRegistryを使用するのでしょうか? ・Bアプリ内の(setterに限らず)メソッドを使用する際の記述がわかりません。 説明が不足している点もあると思いますが、ご指摘頂ければと思います。 参考となるサイトでも構いませんので、宜しくお願いします。

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

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

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

Javaで分散したコンポーネントを開発をした者です。 色々検討があったのですが、分散処理はRMIで実装しました。 これはJavaが提供している機能であり、また、分散させない場合にも若干のことで内部呼び出しに修正できることが分かったためです。 引数で渡すデータはSerializableである必要がありますがほとんど影響はないはずです。 検討の価値はあると思います。

その他の回答 (1)

  • crossgate
  • ベストアンサー率65% (78/119)
回答No.1

AがクライアントでBがサーバのソケット通信じゃ駄目ですか? Aが持っているポートっていうのが何のことなのか分かりませんが、クライアント側のポートも指定しないといけないんでしょうか? 普通、ソケット通信ではクライアント側のポートはOSが勝手に割り当てるので気にしないものですが。。。 単なるソケット通信ならここをどうぞ。 http://www.hellohiro.com/socket.htm クライアントのポートを指定したソケット通信ならこれが参考になるかと。 http://virus.okwave.jp/qa4545547.html

関連するQ&A

  • UDP通信について

    はじめまして。 UDPの通信について教えて下さい。 送信元ポートと宛先ポートについてです。 機器A-機器Bで通信をする場合です。 両方の機器で同じアプリ(ポート番号10000)が起動しているとします。 機器Aから機器Bのアプリに対してフレームを送信した時、 送信元ポートはランダムな値(仮:5000)で宛先ポートは10000になると思います。 機器Bでフレームを受信した後、応答フレームを送信する時には 送信元ポート10000、宛先ポート5000になると思います。 機器Aで起動しているアプリのポート番号は10000ですので機器Bからの応答フレームの宛先ポート5000とは一致しません。 この場合、どのようにソフトは判断しているのでしょうか? 組み込みで評価ボードに同じアプリを実装してお互いに通信させるのが 目的です。

  • ポート開放について

    アプリを使用するのでポート開放がしたのですが、できません。 PCは、SONYのVAIOです。(VGN-FS30B) トレンドマイクロのウイルスバスター2006を使用してます。(ポート開放の設定は、できてます。) プロバイダは、KDDIです。DIONメタルプラス10です。 モデムは、NEC製のAterm DL180V-Cです。 それに、BUFFLO製のWHR-G54Sの無線ルータを接続しています。 前のプロバイダのY!BBの時は、ルータのポート開放設定だけでよっかたのですが、KDDIは、モデムもポート開放設定しないといけないようです。で、説明書どうりポートマッピング設定で設定したのですが、なぜか、開放されません。 自分的には、モデムにルータを接続しているので、IPアドレスがなんかごちゃごちゃになっていてちゃんと処理できないのかと思っています。 解決方教えてください。お願いします。

  • TCP及びUDP通信について

    TCP及びUDP通信について 現在WinSockAPIを用いた通信を行うプログラムを組んでいます。 しかしながらネットワークに関しては初心者で、わからない点がいくつか出てきたので質問させて頂きます。 -------------------------------------------------- 1.TCPで双方向通信を行う場合、サーバ側は指定したポートにbind→listenし、接続を待ち受けます。 クライアント側はサーバのIPを指定し、接続確立後にポートはOSが自動で割り振ると聞きました。 つまり、クライアント側がポートを開放せずに通信が出来るのは、OSなどが自動でポートを割り当て、割り当てたポートに到着したデータを該当アプリケーションに渡すからでしょうか? ポート関連は全てルータが管理しているものだと思っていたのですが、OSがポートを割り当てるという動作がよく理解できません。 -------------------------------------------------- 2.UDPで双方向通信を行う場合、端末A・端末Bともに指定したポートにbindする必要があると聞きました。 つまり、UDPで双方向通信を行う場合、端末A・端末Bの双方でポートを開放する必要があるということでしょうか? -------------------------------------------------- 是非ともご教授ください。

  • ポートの開放は成功と表示されますが、通信ができないです。

    先日、光プレミアム マンションタイプを導入しました。 プロバイダはOCNです。 その際にCTUというONUの間に入れる機器を渡されたのですが これが非常に厄介です。 ポートの開放をしてみようと、参考サイトの通りにやって ポート開放の確認サイトで確認してみたところ成功と表示もされました。 しかし、いざそのポートを使用するアプリを使ってみても 通信ができなくなってしまいます。 これは一体何が原因と考えられるのでしょうか。 色々と参考サイトの通りにやってみましたが 一向にできません。。。 もちろんファイアーウォールの設定もした状態です。

  • メモリにロードされたクラスの判別方法

    javaを勉強し始めてまだ1週間の入門者です。 見当違いの事を書いているかもしれませんが、その場合は指摘下さい。 条件は下記通りです。 AクラスとBクラスがある。 AクラスからBクラスを呼び出す。 AクラスとBクラスには継承関係は無い。 BクラスがjavaVMのメモリ領域にロードされるタイミングは以下のタイミングの認識で宜しいでしょうか? 1.AクラスからBクラスのstatic変数が参照されたとき 2.AクラスからBクラスをインスタンス化したとき 上記認識が正しい場合ですが、プログラム上でBクラスがjavaVMのメモリ上にロードされているかを確認する方法があるかを調べていたのですが良くわかりませんでした。 クラスAを実行させる際に、javaのverboseオプションを使用してクラスがロードされているのを確認する事はできましたが、プログラム上で判定できないかと思いました。 検索サイトで調べてみると、ClassLoaderクラスを使用すれば出来そうな感じがしたのですが、使い方が分からず行き詰ってしまいました。 上記のように任意クラスがjavaVMのメモリ上にロードされているかいないかを判別する手法があるようでしたら、サンプル等がある場所だけでも良いので教えて頂けると助かります。 以上、よろしくお願い致します。

    • ベストアンサー
    • Java
  • Notesのポート番号について

    二つのオフィスをSonicwallを使用してVPNにて通信をしております。 オフィスをA,Bとしますと、BにはNoteサーバがなく、AにアクセスしてNotesを使用します。 しかし、PINGでは通信出来るのですが、Notesが使えないようです。 ちなみに、今までは専用線でAとBを結んでいたのですが、問題はありませんでした。 VPNでの通信ですのでSonicwallでのPOP3などのポート開閉は関係ないと思うのですが。 そこで、もしポートの開閉が必要であるならば、Notesのポート番号をどなたかお教えください。 調べましたところBからAへ1352ポート(Lotus Notes)を開放すればいいことがわかりましたが、AからBへはポートが動的ということなのですが、そのポートの範囲などを教えて頂けますでしょうか。お願いします。

  • BF-01Dでポートを開放する方法

    BF-01DにAndroid端末で接続し、無料通話アプリを使おうと思ったのですが、接続できない状態になってしまいます。 そこで、設定内のIPフィルター等でポート開放される設定にしてみたのですが、なぜかポートが開かないのです。 ちなみに、ネット側の回線はXiへの接続でも自宅の無線LANへの接続でも同じ症状になってしまうので、 回線にかかわらず同じ症状が発生するようです(自宅の無線LANへ直接接続した場合は無料通話アプリは使用できます)。 設定ミス等であれば設定をしなおす事でポートが開放されると思いますので、 確認したほうがいい項目等を教えていただけたらと思います。 ポートを開放する設定をしたにもかかわらず開放されないという事はバグがある可能性もありますが、 使用されている方などでポートを開放できている方がいましたら、 どのようにポートを開放したかを教えていただけたらと思います。 また、この端末がバグ等でどうしてもポートが開放できない場合は買い替えようかと思いますので、 お勧めの端末を教えていただけたらと思います。

  • onBlurとonFocusの処理順序について

    テキストボックスが2つあり(AとBとします)、 AにはonBlur時に、BにはonFocus時に処理を行うようにしています(実行処理はそれぞれ別物)。 この状態でAからBにカーソルを移すと、 BのonFocus処理を行い、その後AのonBlur処理を行ってしまいます。 AのonBlur→BのonFocusという順番で処理をしたいのですが、これは可能なのでしょうか? また、イベントハンドラの発生順序(処理順序?)には決まりがあるのでしょうか?

  • Connectionの開放について

    メソッドの引数としてConnectionを取得した場合について 質問があります。 AというクラスからBというクラスのメソッドを呼び出す時に、 引数としてクラスAで取得したConnectionを渡したとします。 呼び出されたクラスBのメソッド内でConnectionをcloseした場合、 呼び出し元であるクラスAのConnectionは維持されたままなのでしょうか? それとも開放されてしまうのでしょうか? どなたか教えて下さい。よろしくお願いします。

  • ひっくりかえした通信接続

    すみません教えてください。 2拠点間接続(両方Solarisサーバ)の間にFWを入れています。 ある市販のソフトウェアを使用して通信を行っています。 そのソフトは常に接続開始側が、相手先の特定のポート1つに 対して接続して通信をするので、そのポートだけ空けています。 通信自体は正常に行われて、やりとりしたいものは結果として は正しく行われています。 ただ、その数秒後に、その通信をひっくり返したような、通信が 発生します。  ●セッション1(正常通信)   A → Bの1234ポート宛て Aの送信元ポート番号はzzzとします。  ▲セッション2(数秒後に発生する通信)   B → Aのzzzポート宛て Bの送信元ポート番号は1234 zzzのポート番号は1024以上の不定なポート番号なので、FWで 穴あけするわけにもいかず、困っています。 このような通信が発生する原因がわかる方がいたら教えて下さい。 ちなみにソフトウェアベンダに確認した所、●のセッシ ョンしか行ってないので、lsofでzzzのポートを補足してみたら、その ソフトから行われていました。もうわからなくなってしまいました(/_;) もしかしてsolarisかtcp等の通信の仕様?ででている のか?というところでアドバイスを頂けますと助かります。 長文ですみません。

専門家に質問してみよう