运行 重复的 JavaWS 应用程序

Running Duplicate JavaWS Applications

总结:你如何运行复制JavaWS应用程序(它们来自相同的源代码但使用不同的数据)机器?

我在客户站点上有一个旧版本的应用程序 运行。我对应用程序进行了升级并部署了这两个应用程序(使用不同的数据库、wars、服务器等),并希望能够让用户在他们的计算机上同时下载和 运行 这两个应用程序。由于应用程序基本上彼此独立,因此不应该存在重叠数据的问题。但是,.JNLP 文件将下载新应用程序并覆盖旧应用程序,反之亦然。我们希望同时拥有两个 运行ning,这样生产就不会停止,并且他们可以在 before 将最新的应用程序切换到他们的生产之前测试改进的功能.

我已经更改了新应用程序的名称,以及 JNLP 文件中的开始菜单名称 ,但它们仍然会相互覆盖。我想这个问题中有一个子问题:how/where does Java determine that the application being downloaded/installed through web start already exists? 我的猜测是来自main-class.

的名字

谢谢

MIS.JNLP 供参考:

<?xml version="1.0" encoding="utf-8"?>
<!-- JNLP File for Foo Registration Application -->
<jnlp
  spec="1.7+"
  codebase="http://foo:8080/mis"
  href="mis.jnlp">
  <information>
    <title>MIS TEST</title>   <!-- Original: 'MIS' -->
    <vendor>Foo Inc.</vendor>
    <description>Bar MIS System</description>
     <shortcut online="false">
      <desktop/>
      <menu submenu="FooBar MIS TEST"/> <!--Original: 'FooBar MIS' -->
    </shortcut>
  </information>
  <security>
      <all-permissions/>
  </security>
  <resources>
    <j2se version="1.7+" java-vm-args="-client"/>
     ... 
  </resources>
  <application-desc main-class="FooMainApp"/>
</jnlp>

解决方案(感谢Vic在下面的评论):

我必须更改我的构建,以便创建具有不同名称的 .war。此外,更改了 JNLP 名称,以及指向 jnlp 的 .html 文件中的 link。这些事情的组合允许重复的应用程序同时 运行。

根据 Oracle 文档 "Each JAR file that a JNLP Client (such as Java Web Start) downloads, is uniquely identified with a URL. If two JNLP files use the same URL, then the resource will only be downloaded once and shared. This is similar to the caching implementations used by web browsers"