在 Applet 标签中嵌入 JNLP 文件

当使用 Java 网络启动协议(JNLP)部署 applet 时,Java 插件软件会从网络下载 JNLP 文件后启动 applet。从 Java SE 7 发行版开始,您可以通过将 JNLP 文件嵌入到网页本身中来减少小应用程序启动所花费的时间,从而可以避免第一次加载小应用程序时出现额外的网络请求。这将导致 applet 在 Web 浏览器上快速启动。

在网页中部署 Servlets 时,可以将 Base64 编码的 JNLP 文件嵌入到jnlp_embedded参数中。 <jnlp>元素的属性应满足以下限制:

  • href属性应包含相对路径。

  • 不应指定codebase属性。这意味着代码库将从派生 applet 的网页的 URL 派生。

以下步骤描述了如何在网页中嵌入 JNLP 文件以部署 Servlets。

  • 为 Servlets 创建一个JNLP文件。接下来显示一个示例文件。
<?xml version="1.0" encoding="UTF-8"?>
<!-- href attribute contains relative path;
     codebase attribute not specified -->
<jnlp href="dynamictree_applet.jnlp">
    <information>
        <title>Dynamic Tree Demo</title>
        <vendor>Dynamic Team</vendor>
    </information>
    <resources>
        <!-- Application Resources -->
        <j2se version="1.7+" />
        <jar href=
            "dist/applet_ComponentArch_DynamicTreeDemo/DynamicTreeDemo.jar" 
             main="true" />
    </resources>
    <applet-desc 
         name="Dynamic Tree Demo Applet"
         main-class="appletComponentArch.DynamicTreeApplet"
         width="300"
         height="300">
     </applet-desc>
     <update check="background"/>
</jnlp>
  • 使用 Base64 方案对 JNLP 文件的内容进行编码。您可以使用任何 Base64 编码工具来编码 JNLP 文件。检查工具的使用情况,以创建具有 Base64 编码的字符串。可以使用的一些工具和网站的示例如下:

  • UNIX 命令– base64uuencode

  • 网站– Base64 编码和解码Base64 Encoder

  • 在网页中部署 applet 时,请指定jnlp_embedded参数,并将其值设置为 Base64 编码的 JNLP 字符串。确保仅包括实际的 Base64 字节,而没有任何编码工具特定的页眉或页脚。

<script src="https://www.java.com/js/deployJava.js"></script>
<script>
    var attributes = {} ;
    <!-- Base64 encoded string truncated below for readability -->
    var parameters = {jnlp_href: 'dynamictree_applet.jnlp',
        jnlp_embedded: 'PCEtLSANCi8qDQogKiBDb ... bmxwPg=='
    } ;
    deployJava.runApplet(attributes, parameters, '1.6');
</script>

一些编码工具可能会将编码后的字符串 包装成多行 76 列。要在 JavaScript 代码中使用此多行属性值,请将该属性值指定为一组 String 联的字符串。如果 Servlets 是直接使用<applet> HTML 标记部署的,则可以按原样包含多行属性值。

在浏览器中打开AppletPage.html,以查看通过使用嵌入在网页中的 JNLP 文件启动的动态树演示 Servlets。

Note:

如果看不到 Servlets 正在运行,则需要至少安装Java SE 开发套件(JDK)7版本。

Note:

如果看不到示例正在运行,则可能需要在浏览器中启用 JavaScript 解释器,以便 Deployment Toolkit 脚本能够正常运行。

下载源代码用于* Embedded JNLP *示例,以进行进一步试验。