2011-02-17 32 views
1

私は別のホストへのVNC接続を作成しようとしているJavaアプレットを持っています(アプレットを実行しているホストとVNCホストは同じではありません)。私が使用しているコードの詳細は、here署名されたJavaアプレットが外部サーバーに接続しないのはなぜですか?

私は、フォルダ構造com/citrix/xenserver/console /と一緒に私のWebサーバーのルートに置くXenServerConsole.jarにコンパイルするためのコードを手に入れました。 (コンソールフォルダにはすべて.java、.class、およびいくつかの.pngファイルがあります)。

keytool -genkey -validity 3650 -keystore pKeyStore -alias keyName 
keytool -selfcert -keystore pKeyStore -alias keyName -validity 3650 
jarsigner -keystore pKeyStore XenServerConsole.jar keyName 

と私は、このコードでのようにHTMLでアプレットをロードしています:

<applet code="com/citrix/xenserver/console/Initialize.class" 
    archive="/XenServerConsole.jar" 
    width="800" height="600"> 
    <PARAM NAME="SESSION" VALUE="<%= @console_session %>"> 
    <PARAM NAME="URL" VALUE="<%= @console_url %>"> 
    <PARAM NAME="USEURL" VALUE="true"> 
</applet> 

私はまだ取得していますいくつかの理由

は、私はこのようなXenServerConsole.jarファイルに署名しましたソケット許可エラー、ここにコンソール出力があります:

Loading UI... 
Initializing... 
Starting main... 
Creating controls... 
Adding controls... 
Starting... 
Connection failed: access denied (java.net.SocketPermission 192.168.0.2:443 connect,resolve) 
Connection closed 
Reconnecting in 5 seconds... 

私はJARファイルに署名すると考えていましたユーザーがHTMLページにアクセスしたときに警告が表示され、受け入れられた場合は別のサーバーに接続できます。 Windows(OSXではなく)で実行/キャンセルプロンプトが表示されていますが、SocketPermissionエラーが表示されます。

なぜコードはまだエラーを投げていますか?

+0

うん、これが何か変わるのだろうか。私はアプレットキャッシュをフラッシュしましたが、今はSocketPermissionエラーが出ませんが、接続はまだ失敗します。トレース[here](http://pastie.org/1576588) – bwizzy

+1

あなたのConnectionFailedメソッドでNPEに対処する必要があります。私はそれがあなたの瓶に署名することと関係があるのか​​疑いがあります。 – wolfcastle

答えて

2

は、私はそれを考え出しました。最初に、アプレットを使用して作業をするたびに、各テストでクラスローダーキャッシュをクリアする必要があることがわかりました。これを行うには、Javaコンソールにフォーカスを当てて「x」を押してください(少なくともOS X - Safari上で動作する方法です)。元の質問にコメントで見られるように、私は私はもうのSocketPermissionを取得できませんでしたが、それはまだ失敗したクラスローダキャッシュをフラッシュした後、私は上記のようアプレットの署名

は、仕事をした、ここに理由です:

JavaアプレットはWebサーバーから提供されていますが、ローカルコンピュータで実行されています。この場合、アプレットは自分のローカルコンピュータがアクセスできないWebサーバーにアクセスしたURLに接続しようとしていました。だから私はタイムアウト/ NPEエラーを得ていた。 (VNCに接続しようとしていたサーバーは、WebサーバーのLANにあり、Web経由ではアクセスできません)。

私は、WebサーバーからVNCターゲットへのトンネルを作成し、そのアプレットのHTMLコードにその接続情報を指定する必要があります。しかし、それはすべてこの問題の対象外です。

-1

セキュリティポリシーを設定し、jarと一緒にパックしましたか?

方針に関するより多くの情報...

http://download.oracle.com/javase/1.3/docs/guide/security/PolicyFiles.html

+0

その参照は13歳です。確かにあなたは現在のバージョンを見つけることができますか? JAR署名のポイントは、.policyファイルは必要ないということです。 – EJP

関連する問題