公开/公告号CN102929610A
专利类型发明专利
公开/公告日2013-02-13
原文格式PDF
申请/专利权人 浪潮电子信息产业股份有限公司;
申请/专利号CN201210388420.2
发明设计人 张世刚;
申请日2012-10-12
分类号G06F9/44;
代理机构
代理人
地址 250014 山东省济南市高新区舜雅路1036号
入库时间 2024-02-19 17:47:45
法律状态公告日
法律状态信息
法律状态
2017-03-15
授权
授权
2017-03-08
专利申请权的转移 IPC(主分类):G06F9/44 登记生效日:20170213 变更前: 变更后: 申请日:20121012
专利申请权、专利权的转移
2014-04-09
实质审查的生效 IPC(主分类):G06F9/44 申请日:20121012
实质审查的生效
2013-02-13
公开
公开
技术领域
本发明涉及高性能集群计算领域, 具体地说是一种基于VNC和JNLP协议实现远程桌面的方法。
背景技术
随着计算机集群规模的膨胀,传统的对服务器的管理方法越来越不适用,需要一套集群监控管理软件来对庞大的计算机集群进行管理,以提高管理的效率和降低管理成本。本发明,就是为集群监控管理软件提供支持的方法。
通常情况下,远程桌面访问都是独立存在的,需要记录被访问节点的IP地址和密码,由于集群的规模越来越庞大,传统的方法导致需要记录大量的目标节点IP和密码数据,所以传统的方法已经不能满足当前的需求。
发明内容
本发明的目的是提供一种基于VNC和JNLP协议实现远程桌面的方法。
本发明的目的是按以下方式实现的,具体步骤如下:
1)在目标节点安装和配置VNCServer,Linux系统,系统自带VNCServer,Windows需自行安装;客户机需安装JRE1.6或更高版本;
2)Flex页面端: ActionScript调用JavaScript;通过flash ActionScrtip提供的外部访问接口的call方法,来调用js中的方法;
将js引入到html-template/index.template.html中,在flex编译的时候,会将js的方法一起编译;
在js的方法中,访问指定的资源并传递参数:
window.location.href=”http://”+ tomcatIP +”:”+tomcatPort +”/”+ projectName +”/rmsInterface?serverIP=”+remoteIP +”&serverPort=” +remotePort;
在As中用ExternalInterface.call方法来调用js中的方法,同时传递需要的参数;
ExternalInterface.call("toRemoteDesktop",tomcatIP,tomcatPort,projectName,remoteIP, remotePort);其中“toRemoteDesktop”为js中的方法
3)Servlet端: web.xml对jnlp的配置,使servlet支持jnlp协议添加:
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>;
4)通过rmsInterface在web.xml中找到对应的servlet类,该类主要是动态生成jnlp文件,并返回给客户端;
5)客户端根据返回的jnlp文件,自动加载web服务器中的VncViewer.jar;
6)弹出VNC密码输入框,输入密码后,即可打开相应节点的远程桌面。
本发明的有益效果是:
该方法的被访问节点需要VNCServer服务支持;服务器端由(VNC)jar包、基于JNLP协议的Java编码构成;客户端由Flex页面编码和相关配置、JRE1.6(及以上版本)构成。用户在客户端页面只需点击要查看的目标集群节点,无需输入该节点的IP地址,即可弹出该节点的远程桌面。本发明可以集成到集群监控管理软件中,通常该软件本身提供集群节点导航树,能够清晰的反应出当前集群的结构和目标节点所处的位置,而且无需记录集群中所有节点的IP地址。所以本发明集成到传统的集群管理软件中,能够更好的满足用户远程访问目标节点。
具体实施方式
具体步骤如下:
1)目标节点需安装和配置VNCServer,Linux系统一般自带VNCServer,Windows需自行安装;客户机需安装JRE1.6或更高版本;
2)Flex页面端: ActionScript调用JavaScript;
通过flash ActionScrtip提供的外部访问接口的call方法,来调用js中的方法;
将js引入到html-template/index.template.html中,在flex编译的时候,会将js的方法一起编译;
在js的方法中,访问指定的资源并传递参数:
window.location.href=”http://”+ tomcatIP +”:”+tomcatPort +”/”+ projectName +”/rmsInterface?serverIP=”+remoteIP +”&serverPort=” +remotePort;
B.在As中用ExternalInterface.call方法来调用js中的方法,同时传递需要的参数。
ExternalInterface.call("toRemoteDesktop",tomcatIP,tomcatPort,projectName,remoteIP, remotePort);
其中“toRemoteDesktop”为js中的方法
3)Servlet端: web.xml对jnlp的配置,使servlet支持jnlp协议添加:
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
4)通过rmsInterface在web.xml中找到对应的servlet类(详见:MakeJnlpServlet.java),该类主要是动态生成jnlp文件,并返回给客户端;
5)客户端根据返回的jnlp文件,自动加载web服务器中的VncViewer.jar;
6.弹出VNC密码输入框,输入密码后,即可打开相应节点的远程桌面。
实施例:
1)web.xml配置文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>RmsInterface</servlet-name>
<servlet-class>MakeJnlpServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>RmsInterface</servlet-name>
<url-pattern>/rmsInterface</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>jnlp</extension>
<mime-type>application/x-java-jnlp-file</mime-type>
</mime-mapping>
</web-app>
2)java script方法
function remoteDesktop(serverIP,serverPort,serverName,requestIPport)
{
window.location.href = "http://"+ serverIP +":"+ serverPort +"/"+ serverName +"/rmsInterface?tomcatIP=" + serverIP+"&targetIP=" + requestIPport;
}
3)将下述代码添加进html-template/index.template.html文件
<script src="./manage/scriptsForRemoteDesktop.js" language="javascript"/>
4)Action Script方法
import flash.net.navigateToURL;
public function redirect():void{
var tomcatIP:String = "10.152.11.248";
var tomcatPort:String = "8080";
var projectName:String = "jnlp";
var remoteIP:String = "10.152.11.212:1";
var remotePort:String = "zzzzzz";
ExternalInterface.call("sayHelloWorld",tomcatIP,tomcatPort,
projectName,remoteIP, remotePort);
}
5)JNLP文件生成方法
import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MakeJnlpServlet extends HttpServlet
{
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest paramHttpServletRequest, HttpServletResponse paramHttpServletResponse)
throws ServletException, IOException
{
String str1 = paramHttpServletRequest.getParameter("serverIP");
String str2 = paramHttpServletRequest.getParameter("serverPort");
System.out.println("A---->" + str1 + "B----->" + str2);
String str3 = paramHttpServletRequest.getScheme();
String str4 = paramHttpServletRequest.getServerName();
int i = paramHttpServletRequest.getServerPort();
String str5 = paramHttpServletRequest.getContextPath();
System.out.println("Scheme: "+str3+"\tServerName: "+str4+"\tPort: "+i+"\tContextPath: "+str5);
String str6 = "rmsInterface";
paramHttpServletResponse.setContentType("application/x-java-jnlp-file");
PrintWriter localPrintWriter = paramHttpServletResponse.getWriter();
localPrintWriter.println("<?xml version=\"1.0\" encoding=\"GBK\"?>");
localPrintWriter.println("<jnlp spec=\"1.0+\" codebase=\"" + str3 + "://" + str4 + ":" + i + str5 + "\" href=\"" + str6 + "\">");
localPrintWriter.println("<information>");
localPrintWriter.println(" <title>rms</title>");
localPrintWriter.println(" <vendor>cattsoft</vendor>");
localPrintWriter.println(" <homepage href=\"index.html\"/>");
localPrintWriter.println(" <description>Web Start Version</description>");
localPrintWriter.println(" <description kind=\"short\">Web Start Version</description>");
localPrintWriter.println("</information>");
localPrintWriter.println("<security>");
localPrintWriter.println(" <all-permissions/>");
localPrintWriter.println("</security>");
localPrintWriter.println("<resources>");
localPrintWriter.println(" <j2se version=\"1.6+\"/>");
localPrintWriter.println(" <jar href=\"VncViewer.jar\"/>");
//localPrintWriter.println(" <jar href=\"tightvnc-jviewer.jar\"/>");
localPrintWriter.println("</resources>");
//localPrintWriter.println("<application-desc main-class=\"VncViewer\">");
localPrintWriter.println("<application-desc main-class=\"vncviewer.VNCViewer\">");
//localPrintWriter.println("<application-desc main-class=\"com/glavsoft/viewer/Viewer\">");
localPrintWriter.println("<argument>" + str1 + "</argument>");
//localPrintWriter.println("<argument>" + str2 + "</argument>");
localPrintWriter.println("</application-desc>");
localPrintWriter.println("</jnlp>");
localPrintWriter.flush();
localPrintWriter.close();
}
}。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
机译: 在基于标准的Web浏览器中实现的具有虚拟通道支持的远程桌面协议客户端
机译: 在基于标准的Web浏览器中实现的具有虚拟通道支持的远程桌面协议客户端
机译: 一种用于在手机中传输会话发起协议消息的传输协议的选择方法,包括基于手机中基于互联网协议的语音的执行模式选择传输协议