6

署名付きの Java アプレットを実行している場合。同じドメインまたは同じホストのリモート ソースから追​​加のクラスをロードして実行できますか?

ページを変更したり、現在のアプレットを停止したりすることなく、これを実行したいと考えています。もちろん、すべてのクラスの合計サイズは大きすぎて一度にロードできません。

これを行う方法はありますか?そして、署名されたアプレットでこれを行い、その「信頼」ステータスを維持する方法はありますか?

4

3 に答える 3

6

クラスはアプレットで遅延ロードされると思います。オンデマンドでロードされます。

とにかく、クラスが jar の外にある場合は、アプレットのクラスローダーを使用して名前でロードするだけです。元:

ClassLoader loader = this.getClass().getClassLoader();
Class clazz = loader.loadClass("acme.AppletAddon");

jar からクラスをロードする場合は、jar の URL を使用して URLClassLoader の新しいインスタンスを作成する必要があると思います。

URL[] urls = new URL[]{new URL("http://localhost:8080/addon.jar")};
URLClassLoader loader = URLClassLoader.newInstance(urls,this.getClass().getClassLoader());
Class clazz = loader.loadClass("acme.AppletAddon");

デフォルトでは、アプレットが新しいクラスローダーを作成することは禁止されています。しかし、アプレットに署名し、新しいクラスローダーを作成する許可を含めれば、それを行うことができます。

于 2008-09-13T15:28:18.350 に答える
2

はい、アプレットを実行したホストへの URL 接続を開くことができます。HTTP URL を使用してクラスローダーを作成するか、クラスを (jar として) ユーザーのマシンにダウンロードして、クラスパスにそれらの jar を使用してクラスローダーを作成することができます。アプレットは停止しないので、別のページをロードする必要はありません。

信頼性に関する質問の 2 番目の部分については、ユーザーがアプレットへのアクセスを許可すると、ローカル マシンに何でもダウンロードできます。UI 設計で許可されている場合は、ユーザーに何をしているのかを知らせることができます。

お役に立てれば。

于 2008-09-14T08:35:48.877 に答える
0

それは可能であるように思えます(しかし、私はそれをやったことがありません)。Remote Method Invocation ( RMI ) はもうご覧になりましたか?

于 2008-09-13T14:43:49.640 に答える