Тестирование JCTerm, эмулятора терминала Java-апплета, работает в Eclipse, но не в браузерах - PullRequest
0 голосов
/ 21 мая 2011

Тестируя немодифицированную версию JCTerm (эмулятор терминала, можно использовать в качестве апплета; я хотел бы использовать функциональность апплета), в Eclipse AppletViewer все работает нормально, но тестирование полученного файла JAR на веб-странице Все опции отображают окно сообщения с мигающим желтым предупреждающим символом и ничего не делают. Некоторые параметры отображают ошибку «Установить соединение до этой настройки».

Интересующая меня опция - «Открыть сессию SHELL ...» в меню «Файл». При попытке использовать опцию «Открыть сессию SHELL ...» консоль 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/

Ответы [ 2 ]

1 голос
/ 14 декабря 2011

Я автор jcterm. Файлы jar на http://wiredx.net/jcterm/ имеют цифровую подпись. Поэтому, если вы скопируете эти файлы и вставите их на свой веб-сервер, он будет работать.

0 голосов
/ 22 мая 2011

Это похоже на проблему безопасности.

По умолчанию неподписанный Java-апплет может подключаться к хосту, только если был загружен с.Кроме того, если хост, к которому вы хотите подключиться, позволяет это с помощью файла crossdomain.xml, вы также можете подключиться к другим хостам.

Судя по трассировке стека, вы хотите подключиться к хосту, который не имеетHTTP-сервер и, следовательно, не может предоставить файл crossdomain.xml.По этой причине вы получаете это исключение здесь.

Существуют следующие способы выхода из этого:

  • Поместите апплет на тот же веб-сервер, к которому вы хотите позже подключиться через SSH,(Каждый апплет может подключаться к своему собственному хосту.)
  • Пусть на SSH-сервере есть минимальный веб-сервер с crossdomain.xml.(Файл crossdomain.xml должен позволять контенту с сервера апплета получать доступ к этому серверу.)
  • Подпишите апплет (и пусть пользователь доверяет ему).(Подписанные и доверенные апплеты могут делать все.)

Официальный пример апплета WiredX , который вы связали, использует последний метод, поэтому он работает даже при подключении к вашему серверу..

...