在 GWT 应用程序中通过 SSH 与 DB 通信(使用 RPC)

Posted

技术标签:

【中文标题】在 GWT 应用程序中通过 SSH 与 DB 通信(使用 RPC)【英文标题】:Communicating with DB through SSH in GWT app (using RPC) 【发布时间】:2012-05-12 17:00:00 【问题描述】:

我正在尝试使用 Java servlet 的 RPC 模型编写 GWT 后端。 是否可以在 RPC 中通过 ssh 隧道与远程 sql 数据库通信?

我尝试执行的代码如下,使用 Jsch。错误发生在“session.connect();”上

String host="xxxxx.xxx.edu";

String user="username";
String password="password";

Session session= null;
try
            //Set StrictHostKeyChecking property to no to avoid UnknownHostKey issue
            java.util.Properties config = new java.util.Properties();
            config.put("StrictHostKeyChecking", "no");
            JSch jsch = new JSch();
            session=jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.setConfig(config);
            session.connect();

我在 'session.connect()' 行得到的运行时错误如下:(向右滚动查看整个错误)

com.jcraft.jsch.JSchException: java.security.AccessControlException: access denied (java.net.SocketPermission xxxxx.xxx.edu resolve)
at com.jcraft.jsch.Util.createSocket(Util.java:341)
at com.jcraft.jsch.Session.connect(Session.java:194)
at com.jcraft.jsch.Session.connect(Session.java:162)
at com.front.server.GameServiceImpl.createGame(GameServiceImpl.java:39)

令人沮丧的是,我将完全相同的代码复制/粘贴到了一个简单的 java 程序中并且它可以工作。所以我知道代码是正确的;显然,GWT 为本地测试创建的码头服务器在执行代码时存在问题。在使用 GWT 的这种情况下,我还能做什么/我应该做什么? GWT 应用程序的后端不应该有 ssh 的能力吗??

【问题讨论】:

【参考方案1】:

我建议您尝试使用不同的 Web 容器(Tomcat、JBoss)运行您的 gwt 应用程序。您仍然可以通过使用 -noserver 标志运行托管模式来使用调试功能。 见here

【讨论】:

以上是关于在 GWT 应用程序中通过 SSH 与 DB 通信(使用 RPC)的主要内容,如果未能解决你的问题,请参考以下文章

部署 GWT 项目的问题

在 Swift2 中通过 HTTP2 与 APNS 服务器通信

在 Java 中通过 SSH 隧道运行远程命令

Linux中通过ssh将客户端与服务端的远程连接

在 Java 中通过 SSH 隧道连接到 Mongo 数据库

在eclipse中通过jdbc连接DB2数据库