【问题标题】:Can multiple java applications run under same VM?多个java应用程序可以在同一个VM下运行吗?
【发布时间】:2011-07-27 05:58:19
【问题描述】:

我正在运行两个不同的 Java 应用程序,并且都运行不同的 JVM。 实际上我需要在这些应用程序之间传递一些数据, 我已经在这里使用共享文件方法,但正在寻找更好的方法。

所以我的想法是,如果我们能够以某种方式在同一个 JVM 下运行这些应用程序,那么我们可以在这些应用程序之间传递数据。 我不知道我们如何在同一个 JVM 下运行的应用程序之间传递数据。

【问题讨论】:

  • 如果这两个应用程序被设计为在它们自己的 JVM 下运行,那么将它们塞入一个单独的应用程序可能会遇到多种问题。 RMI 或套接字呢?

标签: java jvm


【解决方案1】:

两个应用程序之间的数据传输技术是Java中的RMI,我认为你应该使用它。

这里是对此的介绍:Introduction to Java RMI

【讨论】:

    【解决方案2】:

    您可以通过Socket 实现您的应用相互联系。

    【讨论】:

    • 是的,但如果他可以在单个 JVM 下运行,则可以节省大量空间并允许直接调用方法。
    • @seand:由于他目前使用的是共享文件,因此转换为套接字可能比合并应用程序更容易。
    【解决方案3】:

    当您使用应用程序服务器时,它们会很有效。应用程序服务器通常在自己的线程中运行您的应用程序,而不是在每个应用程序的 JVM 上运行。 如果您想实现类似的解决方案,您可以编写一个原始服务器,在特定线程中调用应用程序的 main 方法。

    请注意,这也可能会给您带来额外的麻烦。例如,如果一个线程以System.exit(0) 退出应用程序,您的所有线程都将被关闭。

    【讨论】:

      【解决方案4】:

      如果您的应用没有固有的冲突(不兼容的 JVM 参数、冲突的单例等),它可能是可行的。您可能必须以某种方式修改您的 main() 方法;也许让您的 2 个应用程序在各自的线程中运行。

      但是,如果不知道更多细节,就很难判断。

      【讨论】:

        【解决方案5】:

        对于您的任务,您无需在同一 JVM 实例下运行应用程序。

        您可以在不同的 JVM 之间传递数据。有很多可用的解决方案。

        例如:

        【讨论】:

          猜你喜欢
          • 2013-04-26
          • 2013-04-04
          • 2022-08-17
          • 2018-04-04
          • 1970-01-01
          • 2012-08-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多