繁体   English   中英

测试JCTerm,Java Applet终端仿真器,可以在Eclipse中运行,但不能在浏览器中运行

[英]Testing JCTerm, java applet terminal emulator, works in Eclipse, but not in browsers

测试未经修改的JCTerm版本(终端仿真程序,可以用作applet;我想使用applet功能),在Eclipse的AppletViewer中一切似乎都工作正常,但是在网页中测试生成的jar文件,所有选项显示带有闪烁的黄色警告符号的消息框,并且不执行任何操作。 某些选项显示“在此设置之前建立连接”错误。

我感兴趣的选项是“文件”菜单中的“打开外壳会话...”。 尝试使用“ 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/

我是jcterm的作者。 http://wiredx.net/jcterm/上的jar文件已经过数字签名。 因此,如果将这些文件复制并安装到Web服务器中,它将可以正常工作。

这看起来像一个安全问题。

默认情况下,未签名的Java applet如果从加载,则只能连接到主机。 此外,如果您要连接的主机允许使用crossdomain.xml文件来实现此目的,那么您也可以连接到其他主机。

从堆栈跟踪来看,您想连接到没有HTTP服务器的主机,因此不能提供crossdomain.xml文件。 因此,您在这里遇到此异常。

有以下几种方法:

  • 将小程序放在您要稍后通过SSH连接的同一Web服务器上。 (每个小程序都可以连接到其自己的主机。)
  • 让SSH服务器拥有一个带有crossdomain.xml的最小Web服务器。 (crossdomain.xml必须允许小应用程序服务器中的内容访问此服务器。)
  • 在小程序上签名(并让用户信任它)。 (允许签名和信任的小程序执行所有操作。)

您链接的官方WiredX示例小程序使用了最后一种方法,这就是为什么即使连接到服务器也可以使用的原因。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM