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