在网页中发布WorldWind Applet程序遇到的问题

        最近由于客户要求,需要一个三维效果进行一些功能的展示所以用到了WorldWind。由于之前对Applet不是很了解,中间遇到了很多让人不解的问题,经过反复的折腾总算是在页面中把WorldWind加载了出来,下面说说我的操作步骤和遇到的问题。

        1.我首先写了一个Applet小程序并打成jar包,其实就是用于显示WW的地球。然后用Eclipse 运行Applet程序,查看效果没有问题。但是放到工程中用Tomcat发布以后就出来了第一个问题报错没有签名。于是乎google,查到找了签名的最简单方法。

        先是创建签名密匙证书,用cmd打开命令行,输入下面的命令:

        keytool -genkey -alias Test -validity 3650

        这个命令的的意思是  使用 keytool 工具创建签名密匙证书   

        -genkey 参数表示是创建操作

        -alias 参数表示 给这个证书取一个别名  我这里用的别名是 Test

        -validity 参数表示的是这个证书的有效期  我这里用3650 表示 十年。

         这个命令执行后会提示属于一些证书的相关信息,如密码,单位,之类的按自己的情况填写即可。

        然后用这个证书给我的jar进行签名,使用如下命令:

        jarsigner WWJApplet.jar Test

        这个命令的意思是,使用jarsigner命令为一个jar文件签名,

        第一个参数 WWJApplet.jar 指的是我要签名的jar文件的名字,第二个参数 Test指的是我刚刚创建的证书的别名。

        2.编写JNLP文件,具体格式可以google一下我不做太多说明(其实我也不是特别清楚,只是看了一下Oracle的官方文档,但是有些参数还是不太清楚),我这里把我得JNLP文件贴在这里。


<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.6+" codebase="http://localhost:8080/testProject" href="WWJApplet.jnlp">
    <information>
        <title>MyApplet</title>
        <vendor>测试</vendor>
        <offline-allowed/>
    </information>
    <security>
        <all-permissions/>
    </security>
    <resources os="Windows">
        <property name="sun.java2d.noddraw" value="true"/>
    </resources>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.6+" href=
           "http://java.sun.com/products/autodl/j2se" initial-heap-size="512m"
              max-heap-size="512m"/>
        <property name="sun.java2d.noddraw" value="true"/>
        <jar href="WWJApplet.jar" main="true" />
        <jar href="worldwind.jar" />
        <jar href="jogl.jar" />
        <jar href="gluegen-rt.jar" />
    </resources>
    <applet-desc
         name="测试程序"
         main-class="MyApplet"
         width="500"
         height="500">
         <param name="separate_jvm" value="true"/>
     </applet-desc>
     <update check="background"/>
</jnlp>


        这里需要注意的地方就是,第二个resources节点中 jar节点引用的四个jar包,其中MyApplet.jar是我自己写的Applet文件打成的jar包,另外三个是WW需要引用的三个jar包。这里重点说明一下,由于worldwind下载以后会有一个worldwind.jar文件,但是这里我用的不是这个jar,而是我根据WW源码自己打包的。就是为了能够自己签名,因为自带的worldwind.jar包文件已经被签名了,如果自己重新签名发布会有问题。另外两个jar包也使用刚刚创建的密匙文件进行签名。

        然后把jar文件和html页面放入到工程根目录,如下(也可以根据自己的需要随意放置):

在网页中发布WorldWind Applet程序遇到的问题_第1张图片

        3.具体的html代码如下图:

在网页中发布WorldWind Applet程序遇到的问题_第2张图片

然后启动tomcat就可以查看到效果。

在做这个例子的时候我遇到了三个问题,

1.签名的问题。

当时参考了这个博客 http://www.cnblogs.com/jingua1026/articles/1275209.html

2.jar引用不到的问题。

在网上看到很多例子里边都是把applet中引用的jar包写在html applet标签的 archive属性中,但是不知道为什么我这么写就一直是引用不到,很费解。

具体写法就是这样 

<applet  codebase="." 
	code="WWJApplet.jar" width="100%" height="500"
	archive="jogl.jar, gdal.jar, worldwind.jar, worldwindx.jar, gluegen-rt.jar, plugin.jar">
	<param name="jnlp_href" value="WWJApplet.jnlp">
	<param name="codebase_lookup" value="false">
	<param name="subapplet.classname" value="WWJApplet">
	<param name="subapplet.displayname" value="WWJ Applet">
	<param name="noddraw.check" value="true">
	<param name="progressbar" value="true">
</applet>

3.就是从nasa下载的worldwind.jar包签名问题,使用源码自己打包重新签名就可以了。


说来惭愧,第一次写博客可能有说的不清楚明白的地方请见谅,如果有朋友也遇到类似的问题可以@我。

顺便说一句,applet 标签中的 codebase 的内容不是相对于工程的而是相对于当前文件的(html).

你可能感兴趣的:(applet,ww,worldwind,JNLP)