0

exec同じサーバー上のプログラムに必要なアプレットがあります。

Runtime c = Runtime.getRuntime();
window.finishedQuery("Got Runtime...");
Process p = c.exec(String.format("cmd");
window.finishedQuery("Excecuted CMD");

2 行目はブラウザでは機能しませんが、Netbeans アプレット ビューアでは機能します。

windowは私のアプレットで、表示されますが、表示されgot runtimeませんexcecuted CMD

Google chrome では、次のメッセージが表示されます。

access denied ("java.io.FilePermission" "<<ALL FILES>>" "execute")

アプレットは、ユーザーの PC/プログラムにアクセスしたいが、サーバー上でプログラムを開始したいと「考えている」と思います。

どうすればいいですか?

4

2 に答える 2

2

アプレットによって作成された場合、はクライアントマシンProcessのJVMに作成されます。 そのVMはサーバー上のメソッドを呼び出すことができなくなります。

これに取り組む最善の方法は、サンドボックス化されたアプレットが、元のホストと同じホスト上のWebサービス(servlet、JSP、PHP、ASP ..)にホームコールするようにすることです。WebサービスにProcess1を作成させ、消費/表示のために出力をアプレットに提供します。

1.また、runtime.execWikiからリンクされているJavaWorldの記事に目を通し、すべての推奨事項を実装しますが、1.5以降では、を使用してProcessBuilderを作成しProcessます。

于 2012-11-22T05:48:38.103 に答える
0

さて、私はプロセスを作成するサービスを作成し、wsimport を介して「クライアントクラス」を作成しました... netbeans アプレットマネージャーではすべて正常に動作しますが、ブラウザーでアプレットを起動すると、アプレットはサービスを要求しません。アプレットをローカル Web サーバー (xampp) に配置し、同じクライアントでサービスを開始します。両方が同じクライアント上にある場合、アプレットに署名する必要はないと思いましたか? (これを新しい質問にする必要があるのか​​ 、それとも私の質問への回答にする必要があるのか​​ を確認してください...)

于 2012-11-29T17:21:30.813 に答える