0

测试未修改版本的 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/

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 回答