本文主要是介绍jnlp(Java网络加载协议)(转…,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
jnlp(Java网络加载协议)原来很简单
Java Network Launching Protocol (JNLP,java网络加载协议)。
jnlp是什么?是java提供的一种让你可以通过浏览器直接执行java应用程序的途径,它使你可以直接通过一个网页上的url连接打开一个java应用程序.好处就不用说了,如果你的java应用程序以jnlp 的方式发布,如果版本升级后,不需要再向所有用户发布版本,只需要更新服务器的版本,这就相当于让java应用程序有了web应用的优点了.
如何使用jnlp:
1.把你的应用打包成一个可执行的jar文件,放在可以访问的web目录下,如appTest.jar.
用ant脚本可以这样,当然也可以手工用jar工具打包.
2.编写一个xml文件test.jnlp 内容如下
<?xml version="1.0" encoding="UTF-8"?>
<jnlp codebase="http://localhost/yousite/" name="SeatingChartBuilder"
</jnlp>
3.必须为你的jar文件签名
先在命令行用keytool产生一个keystore文件.
keytool -genkey -keystore you.keystore –alias youApp
命令行用jarsigner签名,当然这时候需要生成keystore时的密码
jarsigner -keystore you.keystore appTest.jar youApp
ok现在将appTest.jar文件放在你的web的/yousite目录下用地址
http://localhost/yousite/test.jnlp 就可以启动你的应用程序了,
启动时会弹出对话框让你确认签名,点是就可以了.
在这里看看sun的demo吧:http://java.sun.com/products/javawebstart/demos.html
参考 http://www.yeegle.com/articleview/33954.aspx
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zmxj/archive/2005/02/22/297649.aspx
实例
用JavaWebStart运行SWT应用
SWT:http://www.eclipse.org/swt
JNLP:http://www.jcp.org/en/jsr/detail?id=56
JAVA-WebStart:http://java.sun.com/products/javawebstart/index.jsp
SWT的优势是速度快,适合做应用程序。
用java webstart启动一个swt应用,是较好的Rich Client方案之一。
SWT以java-webstart形式运行,可参见:
http://www-900.ibm.com/developerWorks/cn/linux/opensource/os-jws/index.shtml
其中关键步骤是对*.jar文件的签名。参见:
http://www.pconline.com.cn/pcedu/empolder/gj/java/0410/480482_4.html
SWT Code:
public class HelloWorld {
private org.eclipse.swt.widgets.Shell sShell = null;
private Label label1 = null;
private Button button = null;
org.eclipse.swt.widgets.Display display = org.eclipse.swt.widgets.Display.getDefault();
HelloWorld thisClass = new HelloWorld();
thisClass.createSShell() ;
thisClass.sShell.open();
while (!thisClass.sShell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep ();
}
display.dispose();
}
private void createSShell() {
sShell = new org.eclipse.swt.widgets.Shell();
label1 = new Label(sShell, SWT.NONE);
button = new Button(sShell, SWT.NONE);
sShell.setSize(new org.eclipse.swt.graphics.Point(300,122));
sShell.setText("JNLP测试");
label1.setBounds(new org.eclipse.swt.graphics.Rectangle(22,16,260,34));
label1.setText("JNLP Client Run Successful!");
button.setBounds(new org.eclipse.swt.graphics.Rectangle(148,59,132,23));
button.setText("EXIT");
button.addMouseListener(new org.eclipse.swt.events.MouseAdapter() {
public void mouseUp(org.eclipse.swt.events.MouseEvent e) {
sShell.close();
}
});
}
}
主要步骤如下:
1.
2.
3.
4.
keytool -genkey -alias icecloud -keypass password -keystore icecloudstore
5.
jarsigner -keystore mystore -signedjar swt-lib.jar swt-lib-source.jar icecloud
jarsigner -keystore mystore -signedjar swt-win32.jar swt.jar icecloud
jarsigner -keystore mystore -signedjar jnlp-demo.jar jnlp-demo-source.jar icecloud
6.
7.
<?xml version="1.0" encoding="gbk"?>
<jnlp spec="1.0+" codebase="http://icecloud/jnlp" href="index.jnlp">
<information>
<title>HelloWorld</title>
<vendor>ESBU Group</vendor>
<homepage href="index.html"/>
<description>Hello World test</description>
<description kind="short">Hello world</description>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5"/>
<jar href="jnlp-demo.jar"/>
<nativelib href="swt-lib.jar"/>
</resources>
<resources os="Windows">
<jar href="swt-win32.jar"/>
</resources>
<application-desc main-class="com.zarva.test.jnlp.HelloWorld"/>
</jnlp>
8.
说明:
• jnlp严格要求j2se的版本来运行,我本机安装的1.5,开始时候使用参数1.4,ie开始自动从sun下载jre1.4
• nativelib可以对jni的library进行处理。因此,不需要将*.lib放入客户机的System32
• 签名默认六个月有效。目前还没不知道对系统产生的影响和解决方案。
这篇关于jnlp(Java网络加载协议)(转…的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!