0

我已经在用户系统上使用 JDK 1.6 64 位、JSF、Tomcat 服务器64 位等实现了一个应用程序。我正在将一些设备(即 Finereader、扫描仪等)集成到这个应用程序中。某些设备库仅在 JRE 32 位上受支持。

因此,要在JRE 32 位上运行的设备集成屏幕和非设备屏幕应该在JRE 64 位上运行。我可以在同一个应用程序中配置多个 JRE 吗?如果可能,怎么做?

4

2 回答 2

0

Java 应用程序在 JVM 中运行。JVM 是单个 JRE 的一部分。您可以将您的应用程序分成两部分,每部分都在各自的 JVM 中运行。然后,这些应用程序必须相互通信以协调用户体验。这对我来说似乎不是一个好的解决方案。

于 2013-02-22T18:35:35.287 回答
0

这完全取决于您如何定义“应用程序”。

首先,关于您的问题,每个 JVM 实例都运行一种 Java——32 位或 64 位——Java 版本等。

有时,一个应用程序由一个运行单个 java 可执行文件的单个 JVM 组成,通常是一个 jar 和类路径上的一些东西,带有一个“main”

有时,一个应用程序由运行在一个或多个机器上的多个 JVM 组成。在这种情况下,每个 JVM 都运行一个 java 可执行文件。但是这些可执行部分之间必须有某种通信才能使其作为应用程序运行。

或者,同一个可执行文件可能在多个 JVM 上运行,我们仍然称其为一个应用程序。在这种情况下,将有某种外部因素决定如何在多个 JVM 中分配应用程序的工作。例如,您可以在 9 个机器上运行 18 个 Tomcat 实例,使用硬件负载平衡器划分网络请求并将每个请求分配给一个 Tomcat 实例。但是,在这种情况下,应用程序的一部分可能在浏览器内的 1000 台用户计算机上运行。

有时,我们说多个应用程序在另一个应用程序下运行。在这种情况下,我们可以将主应用程序称为容器。一个例子是Tomcat。在这种情况下,Tomcat 管理每个单独应用程序的请求负载,因为 HTTP 请求来自网络,并且标头中的信息指示由哪个应用程序处理该请求。

您已经说过您在 Tomcat 下运行了一些代码。Tomcat 是一个单一的可执行文件(它在一个 JVM 中运行并且有多种 Java),它通常管理运行一个作为 .war 文件提供的 Java 可执行文件。可能有其他 Java 应用程序在其他 JVM 中运行,它们通过该 Tomcat 和您的可执行文件进行通信。或者可能没有其他 JVM 可以与您的可执行文件通信并在其他地方运行。

所以,你可以看到,真正的答案是“视情况而定”。如果您有多个 JVM 以某种方式进行通信,那么您可能有不同的 Java 品种。如果它们都在单个 Tomcat 实例下运行,那么您就有了单一种类的 Java。

于 2013-02-22T18:45:09.580 回答