Previous | Next | Trail Map | Writing Applets | 他のプログラムとコミュニケートする


サーバを使用してセキュリティ制約事項に対処する

アプレットの能力と制約事項を理解する(in the Writing Applets trail)の節で 説明されているとおり、アプレットは多くのセキュリティ制約を受けている。 たとえば、アプレットはファイル I/O を行えない。また、配信元ホスト以外とはネット ワーク接続を確立できないし、プログラムの起動もできない。

このような制約事項に対処する 1 つの方法は、アプレットのホストで実行されるサーバアプリケーションを利用することである。 サーバでアプレットの制約すべてを克服できるわけではないが、かなりのことが可能 になる。 たとえば、サーバはアプレットの実行ホストにファイルを保存することはできないが 、アプレットの配信元ホストに保存するようにはできる。

このページでは、同じページにない 2 つのアプレットを相互にコミュニケートさせ るサーバの例を扱う。 この 2 つのアプレットは同じコンピュータ上で動作していても別のコンピュータ上 で動作していてもよい。配信元が同じコンピュータでありさえすれば、配信元コンピ ュータで動作しているサーバを通してコミュニケートできるのである。この例はソケ ットを使用している。ソケットの詳細はソケットについて(in
the Networking trail)で説明されている。

注: 何らかの事情により、この例は Applet ビューワーでは動作するが、Netscape Navigator では動作しない。Netscape ではランデブーには成功するのだが、アプレ ットは必ず "NOTE: Couldn't read from socket" というメッセージを表示する (こ のメッセージは IOException の発生を意味する)。ただし、アプレットのデータはサ ーバに届くので、出力ストリームは機能しているようである。 (サーバからはすべてが順調のように見えるようである。) Netscape には DataInputStream の読み取りに関するバグがあるのではないか?

以下にソースファイルを示す。

TalkClientApplet.java
クライアントアプレットのソースファイル。 (どちらのアプレットも同じソースコードを使用する。) このファイルをコンパイルした後は、次に示すタグで HTML ページに組み込めば実行できる。


<applet code=TalkClientApplet.class width=550 height=200>
</applet>
TalkServer.javaTalkServerThread.java
サーバのソースファイル。 両方のファイルをコンパイルした後は、TalkServer クラスにインタプリタを起動することによって、アプレットの配信元ホストでサーバを実行することができる。

活動中のサーバは次のようになる。

活動中のアプレットは次のようになる。


Previous | Next | Trail Map | Writing Applets | 他のプログラムとコミュニケートする