- PR -

Appletとサーバとの通信について

投稿者投稿内容
およよ
会議室デビュー日: 2003/12/29
投稿数: 16
投稿日時: 2004-01-28 13:27
現在、Appletとサーバ内のJavaプログラムとの通信を必要とするシステムを考えています。
Appletは常にスレッドで待受け状態としておき、サーバ側のプログラムから通信を行い、Appletに対してトリガーをかける形でApplet側では動作するというものなのですが、このようにApplet側からサーバに対して行う通信が必要ないという場合、その通信方法として何が最適なのかと悩んでおります。今のところ頭にあるのはソケット通信なのかなと思っているのですが、他に良い方法が御座いましたら、ご享受願えたらと思います。宜しくお願い致します。

[ メッセージ編集済み 編集者: およよ 編集日時 2004-01-28 13:28 ]
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-01-28 13:37
unibon です。こんにちわ。

引用:

およよさんの書き込み (2004-01-28 13:27) より:
Appletは常にスレッドで待受け状態としておき、サーバ側のプログラムから通信を行い、Appletに対してトリガーをかける形でApplet側では動作するというものなのですが、このようにApplet側からサーバに対して行う通信が必要ないという場合、その通信方法として何が最適なのかと悩んでおります。今のところ頭にあるのはソケット通信なのかなと思っているのですが、他に良い方法が御座いましたら、ご享受願えたらと思います。宜しくお願い致します。


Java Applet はブラウザの上で動いてこそ有意義なものなので、ブラウザの環境によって使えるかどうかが分からないソケット通信などは、できれば使いたくないものです。しかし HTTP のプロトコルはブラウザから request してサーバが response する、というやりとりを基にしているため、サーバが response したらブラウザが request する、という逆の流れにはできません。現在枯れたやりかたはポーリング(polling)しかないと思います。もちろん HTTP 以外のソケット通信なども場合によっては使うのもやむをえないとは思いますが。
ちなみに、ネタ程度の話題ですが、数年前に見かけた製品としては、
http://www.marketviewer.net/hp/index.htm
というものがあります。
シュン
ぬし
会議室デビュー日: 2004/01/06
投稿数: 328
お住まい・勤務地: 東京都
投稿日時: 2004-01-28 14:01
RMIやCORBAは、まだ枯れているとはいえませんか?
ソケットの状態を監視するコードの自作をしないで済むので、便利ですよ。
サーバーをEJBにしても良いかと思います。

低レベルではソケットを(勝手に)作成しますので、通信経路にファイア
ーウォールがある場合、別途調整が必要です。

ファイアーウォール越えがあって、穴あけが許されないなら、サーバーを
Servletにして、HttpURLConnectionを利用してSerializableなオブジェ
クトとして作成したValue Objectを投げ合う、という手もあります。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-01-28 14:37
サーバ側が J2EE 対応の AP サーバであれば、JMS を使うのはいかがでしょうか?
自前でポーリングする手間がなく手軽です。
HTTP トンネリングを使えば Firewall も抜けられますし。
http://edocs.beasys.co.jp/e-docs/wls/docs81/faq/jms.html#252619

Tomcat/Jetty などのサーブレットコンテナであれば、処理結果を返すサーブレットを作って、Applet から定期的にポーリングするのが手軽ですね。

[ メッセージ編集済み 編集者: インギ 編集日時 2004-01-28 14:38 ]
Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2004-01-28 16:11
JMS ってアプレットで使えるのでしょうか?
JNDI を使うはずなので、無理なのでは?

またライセンスも検討する必要がありますね。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-01-28 16:17
JMS はアプレットでも使えますよ。
JNDI 自体もアプレットだから使えないという理由はないと思います。
ライセンスについては、例えば WebLogic であればクライアントに対して別途ライセンスは必要ないです。
Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2004-01-28 16:43
確かに JNDI は J2SE でした。
でも・・・クライアント側に LDAP が必要???

追記:違うな、アプレットがローカルの LDAP にアクセスできたらやばいですね。

[ メッセージ編集済み 編集者: Keisuke 編集日時 2004-01-28 17:02 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-01-28 17:19
JNDI 自体は AP サーバで動きますので、コンテクスト作成時にPROVIDER_URL として
"http://host:port" を指定するだけです。"http://〜" のプロバイダ URL であれば勝手にトンネリングしてくれます。(少なくともWebLogic では)
クラスについては、たとえば WebLogic であればクライアントに wljmsclient.jar があれば Ok です。
・[WebLogic JMS シン クライアント]
http://edocs.beasys.co.jp/e-docs/wls/docs81/jms/thin_client.html

ちょっと話がそれ気味ですので、詳しい情報が必要でしたら別スレッドを立てるか MSN メッセンジャーでお話ししましょう。>Keisuke さん
およよさんが JMS を使う方向でいくのならこのまま続けてもいいんですが。

[ メッセージ編集済み 編集者: インギ 編集日時 2004-01-28 17:21 ]

スキルアップ/キャリアアップ(JOB@IT)