图九:Archive Builder对话框之一
JBuilder程序总共有十多种不同类型的封装形式。表二列出了主要封装形式的特点。
表二:JBuilder部署选项
类型
说明
Applet JAR
压缩的档案文件,使得浏览器能够一次性地下载Applet的所有类。
Applet ZIP
压缩的ZIP文件。早期的浏览器(4.x之前)不能识别JAR格式。
Application
非压缩的档案文件。允许以java -jar filename.jar的形式运行应用。
Basic
非压缩的档案文件,用来打包库。
Documentation
项目的文档包。
J2EE Application Client
包含EJB和资源,以及必要的部署描述器。
Open Tool
非压缩的档案包,用来扩展JBuilder。
Source
项目的源代码文件。
Resource Adapter(RAR)
包含J2EE连接器的实现,与特定平台相关的库。
Web Start Applet
压缩的档案格式,用于通过Web部署Applet。
Web Start Application
压缩的档案格式,用于通过Web部署应用。
在Archive Builder中,每一种档案类型都有一组与之对应的对话框(二至七个对话框)。下面我们要使用的是Web Start Applet档案格式。Web Start Applet类型的档案格式总共有五个对话框。在Archive Builder的第一个对话框中选择Web Start Applet,点击Next进入第二个对话框,如图十所示。
图十:Archive Builder对话框之二
在第二个对话框中,我们可以选择要连接到哪一个Web应用。由于当前的项目中不包含Web应用,向导只显示出。第二个对话框的选项不必修改,点击Next进入下一个对话框,如图十一所示。
图十一:Archive Builder对话框之三
第三个对话框允许指定哪些类要放入JAR包。我们可以手工添加类,也可以让JBuilder自动选择类,另外还可以添加各种支持文件,例如图形文件、声音文件和其他资源。选中“Always include all classes and resources”选项将在JAR包中加入项目包含的所有元素。点击Next进入图十二显示的对话框。
图十二:Archive Builder对话框之四
第四个屏幕选择的是Applet要用到的第三方库。JBuilder自动分析出Applet依赖的第三方库,我们要做的只是告诉Archive Builder是否要在JAR文件中包含它们。通常,我们要在JAR文件中包含所有的依赖库。但是,如果我们可以肯定用户的环境中已经安装了某些库,或者某些库可以通过网络访问,那么这些库不用包含在JAR包中。最后一次点击Next,进入图十三所示的对话框。
图十三:Archive Builder对话框之五
manifest文件是JAR包的描述器文件。在一般情况下,根据所选的封装形式而生成的默认manifest文件已经足够。如果默认配置的manifest不能满足要求,我们可以自己指定一个。点击对话框的Finish按钮结束Archive Builder向导。不过此时JBuilder还不会创建这个JAR包,而是等到Make或Rebuild时才进行(选择Project菜单)。 从JAR文件运行
要从JAR文件运行Applet,我们必须把JAR文件的信息告知HTML装载器。选择IceCreamOrder.html的Source页,在<applet>标记内添加属性“archive= test.jar”。
这个archive属性告诉浏览器把整个JAR文件从服务器复制到本地缓冲区,然后运行Applet。如果Applet包含许多类,把这些类封装成JAR包能够改善性能,因为浏览器不必再分别下载各个类文件。虽然一次性地下载整个JAR包可能会使初始下载时间有所延长,但Applet的运行会变得更加流畅。
由于这个Applet用到了Swing,所以,除非你安装了合适的插件,否则不能直接在IE或Netscape Navigator中运行它,因为这些浏览器本身没有提供对Swing的支持。这时,我们就要用到Java Web Start。
针对Java Web Start的配置
为了把Applet配置成通过Java Web Start运行,以便从任何浏览器启动,我们必须创建一个Web Start Launcher,并确保Web服务器设置了合适的MIME类型(默认情况下,大多数Web服务器没有设置)。
要创建Web Start Launcher,首先选择菜单File | New,打开Object Gallery,选择Web选项卡,再选择Web Start Launcher向导,显示出图十四的对话框。
图十四:Web Start Launcher对话框之一
配置Web Start Launcher的向导总共有三个屏幕,图十四是第一个。在这里不能全部采用默认值,我们把Name值设置成WebStartTest。点击JAR file后面的“...”按钮,找到Applet的JAR文件,按照本文前面的说明,应当在c:/test/defaultroot/test.jar。defaultroot是为Web服务器提供的目录。JBuilder附带了一个称为Tomcat的Web服务器。选择好JAR文件之后,点击OK返回图十四。然后选择Main class后面的“...”按钮,找到test.jar文件内的IceCreamOrder类。确认Main class之后的内容是test.IceCreamOrder。
说明:Tomcat是一个免费的、源代码开放的Web服务器,支持Servlet和JSP。实际上,Tomcat是Java Servlet和JSP规范的参考实现。即使你的JBuilder Enterprise是试用版本,Tomcat也不会在30天之后失效。如果你觉得Tomcat确实有用,不妨访问它的主页http://jakarta.apache.org/tomcat/。
设置好图十四的各项之后,Next按钮变为可用。点击Next进入向导的第二个屏幕,如图十五所示。
图十五:Web Start Launcher对话框之二
第二个对话框有四个栏目需要配置。关于Applet大小的两个栏目已经有了默认值,剩下要配置的是Applet name和Document base这两个栏目。Applet name实际上指定了装载器要调用的Applet名称,类似于HTML文件中<APPLET>标记的name属性。Document base是浏览器读取Applet类的位置。在Applet name栏目中指定IceCreamOrder,把Document base指定为http://localhost:8080。这里的localhost指的是本地机器,也可以改成127.0.0.1。8080是JBuilder附带的Tomcat服务器监听连接请求的端口号。点击Next进入下一个屏幕,如图十六所示。
图十六:Web Start Launcher对话框之三
在Web Start Launcher向导的最后一个屏幕中,有四个栏目需要填写。首先是Title,它是运行Applet的窗口的标题。由于我们使用Java Web Start,Applet不在浏览器之内运行,相反,它在浏览器之外的自己的窗口中运行。我们把窗口的标题设置为“冰淇淋真好吃”。接着输入Vendor,“Test Company”,输入Description,“购买冰淇淋的Applet”。最后一个检查框选项“Allow offline usage”允许Applet在非联机状态下启动,例如从桌面启动。不要选中该选项。
点击Finish按钮,可以看到项目中多了两个文件:WebStartTest.html,以及WebStartTest.jnlp。这个.jnlp文件实际上是一个XML文件,而.html文件是一个通过Java Web Start启动Applet的启动器。如果Java Web Start尚未安装,它将告诉你到哪里去下载Java Web Start。
通过Java Web Start运行
为了在Java Web Start支持下运行Applet,我们必须修改一下JBuilder附带的Tomcat的配置,使它能够理解为Java Web Start提供的.jnlp文件。web.xml是Tomcat的配置文件之一,这个文件在Tomcat安装目录的conf目录下。对于JBuilder附带的Tomcat,Tomcat又在JBuilder的安装目录之下。找到Tomcat的web.xml文件,用文本编辑器打开它。在web.xml文件中,大约从75行开始,有一组MINE映射标记,我们要增加一个标记。要添加的内容如下:
<mime-mapping>
<extension>
jnlp
</extension>
<mime-type>
application/x-java-jnlp-file
</mime-type>
</mime-mapping>
这几行内容实际上表示,如果文件的扩展名是jnlp,浏览器应该把它当作application/x-java-jnlp-file MIME类型。这样,Java Web Start就会运行它。如果没有这行内容,浏览器将把启动程序视为普通的文本。
在web.xml中加入上述内容之后,返回JBuilder窗口。
现在我们要告诉JBuilder装入启动Applet的WebStartTest.html文件:首先,选择菜单Project | Project Properties。选择Run选项卡,再点击Edit。因为HTML文件必须通过Tomcat Web服务器装入,而不是从本地文件系统作为文件装入,所以选择Server选项卡,显示出图十七的对话框。
图十七:配置启动方式
点击Launch URI栏目的“...”按钮,显示出图十八的对话框。
图十八:选择URI
在左边的列表中选择WebStartTest.html,点击OK。再点击两次OK返回JBuilder主窗口。现在,如果我们运行这个项目(按F9,或者选择菜单Run | Run Project),Tomcat将自动启动(如果是第一次运行的话)。遗憾的是,JBuilder内建的浏览器不支持Java Web Start,所以我们必须使用另外的浏览器。这里的关键在于确保Tomcat正常启动。在Message窗口中,我们可以看到一个http://localhost:8080的页,如图十九所示。
图十九:Tomcat服务器正常启动
因为我们无法在JBuilder内部运行Java Web Start,所以要打开另外一个浏览器,例如IE,然后输入地址http://localhost:8080/WebStartTest.html。如果Java Web Start还没有安装,会出现安装Java Web Start的提示。如果Java Web Start已经安装,我们看到一个很简单的启动页面,如图二十所示。
图二十:Java Web Start启动页面
点击图二十的启动链接,Applet将通过Java Web Start启动。首先我们看到的是一个Applet正在下载和初始化的信息窗口(如图二十一),接着就看到了熟悉的Applet界面,如图二十二。这次,Applet在自己的窗口中运行,旁边不再有AppletViewer添加的用来启动和停止Applet的按钮。
图二十一:Java Web Start正在初始化Applet
图二十二:通过Java Web Start运行的Applet