您的位置:首页 > 编程语言 > Java开发

Java Web Start

2017-01-16 14:13 295 查看
一.Java Web Start

1.Java Web Start是一项在Internet上发布应用程序的技术。

2.Java Web Start应用程序包含下列主要特性:

(1)一般通过浏览器发布。z、只要将它的应用程序下载到本地就可以直接启动它而不需要浏览器。

(2)Java Web Start应用程序并不在浏览器窗口内。它将显示在浏览器外的一个属于自己的框架中。

(3)它不使用浏览器的Java实现。

(4)数字签名应用程序可以被赋予访问本地机器的任意权限。

3.要想准备一个通过Java Web Start发布的应用程序

(1)应该将其打包到一个或读个Jar文件中,然后创建一个Java Network Launch Protocol(JNLP)格式的描述符文件。将这些文件放置在web服务器行。

(2)还需要确保web服务器对扩展名为.jnlp的文件报给一个application/x-java-jnlp-file的MIME类型。

4.要想体验Java Web Start,要从jakarta.apache.org/tomcat上安装Tomcat(Tomcat是一个servlets和jsp页面的容器,也提供网页服务。它被预配置为服务于JNLP文件所对应的MIME类型)。

5.如果在测试JNLP配置期间不想运行web服务器,可以通过执行下列命令临时的覆盖启动文件中的URL:javaws-codebase fiel://programDirectory JNLPfile。

6.若没有告诉用户再次运行应用程序时要启动缓存视图。可以利用安装器安装桌面和菜单的快捷键。将下列代码添加到JNLP文件中:

<shortcut>
<desktop/>
<menu subMenu = "Accessories"/>
</shortcut>


7.当用户首次下载应用程序时,将会显示”desktop integration warning”,还应该为菜单快捷键和启动屏幕提供一个图标。

二.沙箱

1.安全管理器:安全管理器可以检查有权使用所有系统的资源。在默认情况下,只允许执行那些无害的操作,要想允许执行其他的操作,代码必须得到数字签名,用户必须通过数字认证。

2.远程代码可以显示图像,播放音乐,获得用户的键盘输入和鼠标点击,以及将用户的输入送回加载代码所在的主机。这些功能足以能够显示信息和图片,或者获得用户为订单所输入的信息。这种受限制的执行环境称为沙箱。在沙箱中的代码不能修改或查看用户系统。

3.沙箱中的代码所受的限制:

(1)不能运行任何的本地可执行程序。

(2)不能从本地计算机文件系统中读取到任何信息,也不能在本地计算机文件系统中写入任何信息。

(3)不能拿查看除Java版本信息和少数几个无害的操作系统详细信息外的任何有关本地计算机的信息。特别是,在沙箱中的代码不能查看用户名,e-mail地址等信息。

(4)远程加载的程序不能与除下载程序所在的服务器之外的任何主机通信,这个服务器被称为源主机。这条规则通常称为“远程代码只能与家人通话“。

(5)所有弹出式窗口都会带一个警告信息。来确保用户不会为本地程序弄错窗口。

三.签名代码

1.应用程序可以直接请求拥有一个桌面应用程序所许可的全部权限,只要将下列标签添加到JNLP文件中:

<security>
<all-permissions/>
</security>


2.要在沙箱外运行,Java Web Start应用程序的JAR文件必须进行数字签名。

3.签名的JAR文件将携带一个可以证明签名者身份的证书,加密技术可以确保这种证书不被伪造,并且检测任何企图破坏签名文件的行为。

4.Java Web Start无法准确的核查证书。在收到一个应用程序时可以知道:

(1)代码确实被签名,并且没有被第三方破坏。

(2)有些代码被签名,但Java Web Start无法确认哪个代码被签名。

四.JNLP API

1.JNLP API允许未签名的应用程序在沙箱中运行,同时通过

一种安全的途径访问本地资源。

2.APP提供了下面的服务:

(1)加载和保存文件

(2)访问剪贴板

(3)打印

(4)下载文件

(5)在默认的浏览器中显示一个文档

(6)保存和回复持久性配置信息

(7)确信只运行一个应用程序的实例

3.要访问服务,需要使用ServiceManager。如:

FileSaveService service = (FileSaveService)ServiceManager.lookup("javax.jnlp.FileSaveService");


如果服务部可用,调用将抛出UnavailableServiceException。

4.如果想要编译使用了LNLP API的程序,就必须在类路径中包含javaws.jar文件。该文件位于JDK的jre/bin子目录下。

5.要保存文件,需要为文件对话框提供文件的初始路径名,文件名和扩展类型。

6.数据必须由InputStream传递。

7.要想从文件中读取数据,需要使用FileOpenService。它的openFileDialog对话框接收应用程序提供的初始路径名和文件扩展名,并返回一个FileContents对象。然后调用getInputStream和getOutputStream方法来读写文件数据。如果用户没有选择文件,openFileDialog将返回null。

FileOpenService service = (FileOpenService)ServiceManager.lookup("javax.jnlp.FileSaveService");
FileCOntents contents = service.openFileDialog(".", new String[] {"txt"});
if(contents != null) {
InputStream in = contents.getInputStream();
...
}


8.要想打开一个特定的文件,需要使用ExtendedService。

ExtendedService service = (ExtendService)ServiceManager.lookup(javax.jnlp.ExtendedService");
FileContents contents = service.openFile(new File("c:\\hello.bat"));
if(contents != null) {
OutputStream out = contents.getOutputStream();
...
}


9.要想在默认的浏览器显示一个文档,就需要使用BasicService接口。有些系统可能没有默认的浏览器。

BasicService service = (BasicService)ServiceManager.lookup("javax.jnlp.BasicService");
if(service.isWebBrowserSupported()) {
service.showDocument(url);
}else{
...
}


10.应用程序可以调用BasicService类的getCodeBase方法查看它的codebase,可以调用PersistenceService中的create方法建立一个新的键:

URL url = new URL(codebase, "myley");
service.create(url, maxSize);


11.要想访问某个特定键关联的信息,需要调用get方法。这个方法将返回一个FileContents对象,通过这个对象可以对键数据进行读写:

FileContents contents = service.get(url);
InputStream in = contents.getInputstream();
//true = overwrite
OutputStream out = contents.getOutputStream(true);


12.先假设键已经存在,调用get方法,若抛出FileNotFoundException,就说明需要创建键。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  start