我想在我的本地PC上运行一个java程序,该程序使用ssh连接到远程PC并执行一些方法(java代码,而不是bash脚本!)那里。例如,我发现了JSch,它支持ssh连接和代码的远程执行,例如
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(passwd);
Channel channel=session.openChannel("shell");
channel.setInputStream(System.in);(来自http://www.jcraft.com/jsch/examples/Shell.java.html)
或可与一起使用的ssxcute
ConnBean cb = new ConnBean("ip ", "username","password");
ssh = SSHExec.getInstance(cb);
ssh.connect();
CustomTask sampleTask = new ExecCommand("echo 123");
ssh.exec(sampleTask);(来自https://code.google.com/p/sshxcute/)
但我想要做的是
...
ssh.connect();
MyExecuteClass execClass = new MyExecuteClass();
ssh.exec(execClass.runLongJob(a, b, c));
MyReturn return = ssh.getReturnValue();这个是可能的吗?对象a,b,c必须传输到远程系统,以及所有全局变量、其他类、导入...方法的返回值必须以某种方式返回...如果在runLongjob方法中修改了其他对象,则这些更改也必须发送回本地PC。
对此有解决方案吗?
发布于 2014-06-13 17:55:10
基本上,您要做的不仅需要在远程系统上序列化、传输和反序列化对象,还需要在主机上存在并启动Java VM,并且在其类路径中包含用于传输的实例的类。我怀疑你会找到一个开箱即用的解决方案。不过,您可以使用类似RMI的方式与远程主机上正在运行的JVM进行通信。
发布于 2014-06-14 00:32:58
我不知道有什么框架可以具体做你所描述的事情。最容易想到的事情就是使用web服务。它们允许您定义在应答请求的远程服务器上运行的服务。请求和响应可以包含复杂的数据结构。java中有用于开发web服务的成熟的库。
请参阅以下内容:
https://stackoverflow.com/questions/24201717
复制相似问题