JNLP是Java Network Launch Protocol,是Java提供用来在Web上部署Java应用程序的一种协议。Java Web Start技术就是基于这种协议。
JNLP协议是以XML方式描述的。最简单的一个jnlp大致是这样:
<?xml version="1.0" encoding="UTF-8"?> <jnlp codebase="http://www.javagarden.org" name="Tester.jnlp"> <information>
<title>Tester</title>
<vendor>JavaGarden.org</vendor>
<offline-allowed/>
</information>
<resources>
<j2se version="1.4+"/>
<jar href="Tester.jar>
</resources>
</jnlp>
这个jnlp文件描述了我们要通过web启动的jar程序位于http://www.javagarden.org/, 程序的jar文件名是Tester.jar。当我们将这个jnlp文件和相应的Tester.jar文件部署于该网址后,通过访问http://www.javagarden.org/Tester.jar这个网址,就 可以自动从web上启动这个程序,我们的电脑上事先不需安装此文件。
如何动态部署JNLP文件
(阅读下面的内容时,笔者假定你对Java Web Start和JNLP已经有了一定的认识。)
我们知道,部署程序前,通常jnlp描述文件中的信息写事先写好的。例如我们要先指定程序的codebase和程序的jar位置。对于有些程序,我们还得argument标签来指定应用程序的参数。但矛盾在于这些参数有时候并不一定会事先知道。例如 codebase,我们的web应用可以会部署到不同的contextpath中去,而每次部署,都去修改codebase的值是一件很烦的事情,甚至有时会忘记修改而造成用户使用上的困扰。下面我会分两种方式来介绍如何解决这一问题,让这些参数的值可以在系统运行时动态自动配置。