0

変更されていないバージョンの JCTerm (ターミナル エミュレーター、アプレットとして使用できます。アプレット機能を使用したい) をテストすると、すべてが Eclipse の AppletViewer で正常に動作しているように見えますが、Web ページで結果の jar ファイルをテストすると、すべてのオプションが表示されます。黄色の警告記号が点滅するメッセージ ボックスを表示し、何もしません。一部のオプションでは、「この設定の前に接続を確立してください」というエラーが表示されます。

私が使用したいと考えているオプションは、[ファイル] メニューの [SHELL セッションを開く...] です。「Open SHELL Session...」オプションを試すと、アプレットの Java コンソールにこのようなものが表示されますが、これは直接関連しているようです。私はそれが何を意味するのかについての手がかりを持っていません。

    network: Connecting http://xxx.xx.xx.xxx/crossdomain.xml with proxy=DIRECT
    network: Connecting http://xxx.xx.xx.xxx:80/ with proxy=DIRECT
    java.security.PrivilegedActionException: java.net.ConnectException: Connection refused: connect
        at java.security.AccessController.doPrivileged(Native Method)
        at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
        at com.sun.deploy.net.CrossDomainXML.check(Unknown Source)
        at sun.plugin2.applet.Applet2SecurityManager.checkConnect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at java.net.Socket.<init>(Unknown Source)
        at com.jcraft.jsch.Util$1.run(Util.java:354)
        at java.lang.Thread.run(Unknown Source)
    Caused by: java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at sun.net.NetworkClient.doConnect(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.openServer(Unknown Source)
        at sun.net.www.http.HttpClient.<init>(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.http.HttpClient.New(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
        at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
        at com.sun.deploy.net.CrossDomainXML$2.run(Unknown Source)
        ... 10 more    

このプログラムが正しく動作する例は、http://wiredx.net/jcterm/にあります。

4

2 に答える 2

1

私は jcterm の作成者です。http://wiredx.net/jcterm/の jar ファイルはデジタル署名されています。したがって、これらのファイルを Web サーバーにコピーしてインストールすると、機能します。

于 2011-12-14T06:39:51.993 に答える
0

これはセキュリティの問題のようです。

デフォルトでは、署名されていないJavaアプレットは、からロードされた場合にのみホストに接続できます。さらに、接続するホストがそのcrossdomain.xmlファイルでこれを許可している場合は、他のホストに接続することもできます。

スタックトレースから判断すると、HTTPサーバーがないホストに接続する必要があるため、crossdomain.xmlファイルを提供できません。このため、ここでこの例外が発生します。

これからこれらの方法があります:

  • 後でSSHで接続するのと同じWebサーバーにアプレットを配置します。(すべてのアプレットは、独自のホストに接続できます。)
  • SSHサーバーにcrossdomain.xmlを備えた最小限のWebサーバーを持たせます。(crossdomain.xmlは、アプレットのサーバーからのコンテンツがこのサーバーにアクセスできるようにする必要があります。)
  • アプレットに署名します(そしてユーザーにそれを信頼させます)。(署名された信頼できるアプレットはすべてを実行できます。)

リンクした公式のWiredXサンプルアプレットは最後の方法を使用しているため、サーバーに接続している場合でも機能します。

于 2011-05-22T14:20:39.337 に答える