【问题标题】:Dynamically load additional jar files using Web Start / JNLP使用 Web Start / JNLP 动态加载额外的 jar 文件
【发布时间】:2010-10-14 00:25:09
【问题描述】:

Web Start Developers Guide 状态

必须从指定的 JAR 文件中检索所有应用程序资源 在 JNLP 文件的资源部分中,或显式检索 使用对 Web 服务器的 HTTP 请求。

建议将资源存储在 JAR 文件中,因为它们会被缓存 通过 Java Web Start 在本地计算机上。

现在,我想在我的应用程序启动后动态加载一些资源(例如 OSGi 包)。我可以使用纯 HTTP 来做到这一点,但我想利用 Web Start 对本地缓存和特定于版本/架构的资源的支持。

有没有办法使用 Web Start 基础架构从原始代码库(在应用程序的 jnlp 文件中指定)下载额外的 jar 文件?

或者:是否已经有一种既定的方式来集成 OSGi 和 Web Start 以减轻我从 Web Start 服务器安装包的任务?

【问题讨论】:

    标签: java osgi java-web-start


    【解决方案1】:

    我没试过但是看看javax.jnlp.DownloadService API

    【讨论】:

      【解决方案2】:

      如果您将应用程序本身设为基于 Equinox 的 OSGI 应用程序,则可以使用所需的所有附加捆绑包从网络启动它。

      这篇文章“WebStarting Equinox OSGi Apps”可以给你很好的介绍所需的设置。

      • 所有包都必须部署为签名的 JAR 文件
      • 您需要一个包含所有必要捆绑包的功能
      • 导出功能时,确保 PDE 为该功能创建 JNLP(Java 网络启动协议)文件(导出向导中的复选框)
      • 为您的应用程序提供根 JNLP 文件
      • 将您的应用程序部署到 Web 服务器并确保 Web 服务器知道 application/x-java-jnlp-file mime 类型

      他还有一个OSGI demo

      【讨论】:

      • 啊哈!这篇文章在 JNLP 文件中使用了一个“扩展”标签,开发人员指南中没有提到这一点。我会看看我是否也能做到这一点。谢谢。
      • 发现有两点我不喜欢这个方法:bundle 需要在启动时知道,并且 Web Start 将它们添加到引导类路径中,Eclipse 的 WebStartMain 似乎从中提取它们并启动它们再次作为捆绑包。仍然很高兴看到 Eclipse 已经内置了这种支持。
      • 扩展标签是在 Java Web Start 的 Java 6 更新中引入的。有很多不错的新功能。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2016-07-24
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      相关资源
      最近更新 更多