Java网络启动(Java Web Start (JWS) )可以实现在网络浏览器中运行具备全部特色的Java应用软件 Sun公司在 年三月发布的Java 就已经具备了对JWS的支持 自从J SE 版本以来 JWS就已经成为Java运行时环境(Java Runtime Environment (JRE) )的默认配置 不必再单独安装了 在这篇文章中 我将向您介绍这一重要技术
技术
JWS是与网络浏览器相结合的应用软件 当用户点击链接的时候就会指向一个Java网络启动协议(Java Neork Launching Protocol (JNLP) )文件 然后浏览器自动启动JWS 接着下载 缓存并运行基于Java技术的应用软件
在JWS背后的技术是JNLP及其API 它们是在Java团体进程(Java Community Process)中开发的 JWS实际上是JNLP规范的一个参考实现 JNLP技术定义了一个标准的文件格式 该格式描述了如何调用一个JNLP文件
既然安装链接可以作为普通的HTTP URL的链接 那么您就可以通过网页来检查客户端是否安装了JWS 您可以在IE中通过以下代码来检查
<SCRIPT LANGUAGE= VBScript >
on error resume next
If isIE = true Then
If Not(IsObject(CreateObject( JavaWebStart isInstalled ))) Then
javawsInstalled =
Else
javawsInstalled =
End If
If Not(IsObject(CreateObject( JavaWebStart isInstalled ))) Then
javaws Installed =
Else
javaws Installed =
End If
If Not(IsObject(CreateObject( JavaWebStart isInstalled ))) Then
javaws Installed =
Else
javaws Installed =
End If
End If
</SCRIPT>
开发
开发部署在JWS上的软件和开发独立运行的软件在Java 平台上是基本相同的 比如 程序的起点都是以下的标准代码
public static void main(String[] argv)
然而 为了支持网络部署 也就是实现自动下载和调用软件 并且保证软件在一个安全的沙盒中运行 还需要一些额外的考虑 包括
应用软件必需作为JAR文件集合来使用 所有的应用软件资源 比如文件 图片都必需存储在JAR文件中 而且它们都必需使用Java 平台的getResource机制来引用 应用软件可以使用System exit调用 进行不受限制地访问系统的软件需要通过签名的JAR文件来使用 而且JAR文件中所有的项目都必需经过签名 如果软件要运行在一个安全沙盒中 那么它必需遵循以下的限制不能进行本地磁盘访问 所有的JAR文件都必须从同一个主机下载 只能和下载JAR文件的主机之间建立网络连接 不能安装安全管理器 不能使用本地类库对系统属性的访问受到限制 对于JNLP中定义了的系统属性 应用软件可以进行读/写 *** 作 并且对于相同的属性集合具备和applet一样的只读权限
安全
JWS是构建于Java 平台之上的 Java 平台提供了一个全面的安全架构 在Java 版中 JWS则提供了更加强大的安全特色 比如代码签名
在默认状态下 通过JWS调用的应用软件将运行在一个受到限制的环境中(一个 沙盒 ) 它们对本地计算资源的访问 比如存储设备和本地网络 是有限的 这样 JWS就保证了下载的潜在的不可信任的软件不会危及到本地文件或网络
当然 应用程序也可以请求不受限制的本地系统访问 在这种情况下 当该软件第一次调用时 JWS将显示安全警告对话框 安全警告的内容包含软件开发者的信息
如果一个应用软件包含了一个或多个经过签名的JAR文件 JWS将会验证这些JAR文件在签名后是否发生过变化 如果数字签名的认证失败 那么JWS就不会运行该软件 因为它们已经被第三方修改过了 通过在JNLP文件中添加以下的设置 一个应用软件可以请求完整的权限
<security>
<all permissions/>
</security>
JNLP 文件
JNLP是一个和JWS紧密相关的概念 它经常可以和术语 网络启动 相互替代使用 实际上 JNLP是一个规定了JWS应用软件如何启动的协议 JNLP中的包含了诸如JAR包文件的位置 应用软件主要类的名称 以及程序的其它一些参数 在适当配置的浏览器中 JNLP文件是传递给JRE的 然后JRE将会下载应用软件到用户的机器上并开始执行
一个JNLP文件不包含任何二进制数据 实际上它包含的URL指向所有的二进制数据和二进制代码资源 这些文件还可以指向其他的JNLP文件 它们被称为扩展描述符 一个扩展描述符通常描述了运行软件所必需的组件 在扩展描述符中描述的资源将会成为应用软件类路径的一部分 这样 常用的功能只需要描述一次即可 以下的例子是一个常见的JNLP文件
<?xml version= encoding= UTF ?>
<jnlpcodebase= _app >
<information>
<title>Hello world!</title>
<vendor>My Web Company</vendor>
<icon />
<offline allowed/>
</information>
<resources>
<j se version= + />
<jar />
</resources>
<application desc main class= helloworld Hello />
</jnlp>
这个JNLP文件描述了如何调用名为Hello的程序 在JNLP文件中指定了需要 或更高版本的Java来运行该程序 同时还有一些与程序相关的信息 这些信息都会在用户下载的过程中显示
如果您希望了解更详细的JNLP协议和文件格式 可以参考这个官方规范
结论
JWS提供了一种与平台无关的 安全的而且强大的部署技术 开发者只需要将应用软件部署在网络服务器上就可以为最终用户提供全部的功能 而最终用户也只需要使用网络浏览器就可以运行所需的应用软件 而且永远是最新的版本
JWS的一个主要优点是它克服了Java插件和不同Java虚拟机的兼容性问题 但是 使用网络启动的程序却不能像applet一样简单地和浏览器进行通讯
lishixinzhi/Article/program/Java/hx/201311/26465
1、最原始的做法是将java程序编译成.class文件,复制到tomcat中你的项目里的相应位置。
2、现在很多开发工具可以方便的部署java程序到tomcat,比如eclipse
通过add和remove来部署你的项目,通过publish来部署项目到tomcat你所设定的位置,默认是[盘符]:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
java 应用程序在linux部署方法:1,将项目达成war包(用eclipse,项目右键--Export--选择war file)
2,将tomcat(用winSCP当然也可以用secureCRT,用securCRT需要建立sftp(即上传文件的目录),用put tomcat命令)考到ilunx对应的目录下
3,然后将项目的war包放到tomcat的webapps目录下
4,启动tomcat(命令:./startup.sh(linux下启动tomcat是.sh文件而非.bat文件))
遇到问题如下:
运行./startup.sh 是报错
-bash: ./startup.sh: Permission denied
原因:没有运行.sh的权限
解决:chmod 777 *.sh
755 代表用户对该文件拥有读,写,执行的权限,同组其他人员拥有执行和读的权限,没有写的权限,其他用户的权限和同组人员权限一样。
777代表,user,group ,others ,都有读写和可执行权限。
获得权限后再运行./startup.sh命令时报错:
This file is needed to run this program
原因:该文件需要一个运行环境(即配置jdk环境变量)
解决:JAVA_HOME=/usr/java/jdk1.6.0_25/(当然这个目录根据自己的jdk安装目录)
然后在运行./startup.sh 提示:
Using CATALINA_BASE: /usr/local/sarft/apache/apache-tomcat-6.0.29
Using CATALINA_HOME: /usr/local/sarft/apache/apache-tomcat-6.0.29
Using CATALINA_TMPDIR: /usr/local/sarft/apache/apache-tomcat-6.0.29/temp
Using JRE_HOME: /usr/java/jdk1.6.0_25/
Using CLASSPATH: /usr/local/sarft/apache/apache-tomcat-6.0.29/bin/bootstrap.jar
如果提示以上信息表明 tomcat启动成功,可以正常run了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)