我有一個正在嘗試創建VNC連接到另一個主機的Java小程序(注意運行小程序和VNC主機的主機不相同)。關於我正在使用的代碼的更多信息可以發現here爲什麼不將簽名的java applet連接到外部服務器?
我得到的代碼編譯成XenServerConsole.jar,我把我的Web服務器的根目錄以及文件夾結構com/citrix/xenserver/console/。(控制檯文件夾包含所有的.java,.class和一些.png文件)。
我簽署了XenServerConsole.jar文件是這樣的:
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>
出於某種原因,我仍然得到一個套接字權限錯誤,這裏的控制檯輸出:
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錯誤。
爲什麼代碼仍然會拋出錯誤?
嗯,我想知道這是否會改變任何事情。我刷新了小程序緩存,現在我沒有得到SocketPermission錯誤,但連接仍然失敗。查看trace [here](http://pastie.org/1576588) – bwizzy
您必須在ConnectionFailed方法中解決NPE問題。我懷疑這與簽署你的jar有什麼關係。 – wolfcastle