我有需要外部配置的 webstart 应用程序。配置必须是外部的,因为它将由我们的客户手动更改。我考虑使用此配置添加另一个 jar。应用程序已签名并且不能将我们的密钥提供给客户。我倾向于将此文件放置为可从 Web 服务器访问。
如何从 webstart 应用程序内部检索代码库 url,或者有没有办法配置 webstart jnlp 文件以将除 jar 之外的其他文件添加到类路径?
如果有线索,我使用 maven 进行完整构建。
任何其他想法都是可以接受的。
我有需要外部配置的 webstart 应用程序。配置必须是外部的,因为它将由我们的客户手动更改。我考虑使用此配置添加另一个 jar。应用程序已签名并且不能将我们的密钥提供给客户。我倾向于将此文件放置为可从 Web 服务器访问。
如何从 webstart 应用程序内部检索代码库 url,或者有没有办法配置 webstart jnlp 文件以将除 jar 之外的其他文件添加到类路径?
如果有线索,我使用 maven 进行完整构建。
任何其他想法都是可以接受的。
您可以使用BasicService.getCodeBase
.
您可以使用Java Preferences API来存储外部配置数据。这将是个人机器的本地。在 Windows 上,它使用注册表,在 Unix 上使用经典的“.xyz”文件。
您最好在您的应用程序上使用一些 UI 来操作此配置(将用户发送到 RegEdit 并不是一件好事),但它不一定是光荣的。名称/值对编辑器可以解决问题。并使用合理的默认值来启动“未配置”的应用程序。
在此处查看 jnlp 语法参考:http: //java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html
对您来说重要的是“资源”标签:
<resources>
<j2se version="1.4.2+" java-vm-args="-esa -Xnoclassgc"/>
<jar href="lib/SwingSet2.jar"/>
</resources>
在上面的示例中,SwingSet2.jar 被添加到类路径中。在类路径上需要更多 jars?添加另一个jar资源
<resources>
<j2se version="1.4.2+" java-vm-args="-esa -Xnoclassgc"/>
<jar href="lib/SwingSet2.jar"/>
<jar href="lib/SwingSetSupplment.jar"/>
</resources>
我在代码库上遇到了完全相同的问题。我最终使用了一个 JnlpServlet(你必须用谷歌搜索它。我只能发布一个超链接 :( )以在它提供 jnlp 文件时自动包含正确的代码库,然后添加
<property name="app.codebase" value="$$codebase"/>
到资源部分。
如果您使用JNLP 下载 Servlet,您可以将 $$codebase 宏作为系统属性传递到您的应用程序中,这样就可以访问代码库 URL。
在我们的 webstart 应用程序配置中,使用 SQL 将配置存储到服务器,但这对于您的需求可能有点重。