如何混合java webstart与RMI?
-
19-08-2019 - |
题
我想要分发的一webstart的应用程序,它使用RMI。
我想要避免要求的用户的地址马绍尔群岛共和国的服务器,因为网站分发的应用程序也是RMI服务器。
此外,我不知道地址的服务器在制造时间,因此该地址必须加特设配置的JNLP,或者该地址必须提供的执行时间。这是首选方式:是否有可能这样做吗?
解决方案
我没有用过Java马绍尔群岛共和国正(我只用Java网页开始 粗麻布 二进制的协议做一些像马绍尔群岛共和国),但是至少一部分通过的服务器地址的网页启动的客户程序应该是容易的。当你生成JNLP文件在应用程序,增加地址作为一种财产:
<jnlp>
[...]
<resources>
[...]
<property name="serverAddress" value="..." />
</resources>
</jnlp>
然后,在客户代码阅读该财产:
String serverAddress = System.getProperty("serverAddress");
我假设在这里的网站分发的应用程序的知道自己的地址:)
编辑 (带附加限制的不知道地址在建立时间):嗯,是的网站分发的应用程序的一个静态或动态的一个吗?
- 动态:无论是产生全JNLP动态(与JSP页或dom4j或什么的),或阅读的"模板"JNLP XML文件和替换的实际服务器的地址在的地方
- 静止不变的:我猜的人员部署的网站已经到手动配的正确的地址在JNLP的文件?
其他提示
我在哪里工作,我们做的正是这一点,并把RMI注册表的主机名在JNLP按Jonik的答案。在Java 6u10中或U11孙休的几个安全漏洞与Webstart的,包括动态JNLP的问题。为了满足所有的安全警告,你必须把你的JNLP完全相同的副本在你的程序的主罐子。这是为了防止注入额外的罐子或参数到你的代码的第三方。节目将没有它运行,但用户将被示出的信任通知。
我们的做的认识在构建时的地址,但有其他动态JNLP问题等等不得不求助于提供JNLP并为每个可能的运行建立一个JAR。这是更值得我们部署头痛,而不是客户的问题的,但如果你签了发行那么它是值得了解的。
The JAVA包括源代码(在的样品/jnlp/servlet目录)对于一个小插入适当的价值观纳入JNLP文件。你可以用这个来插入的主机名成JNLP文件。
我使用变量占位符在我的jnlp:
...
<application-desc>
<argument>{host}</argument>
<argument>{port}</argument>
</application-desc>
...
和使用拦截器的servlet在运行时作为JNLP被提供给客户端,以取代这些。