2013-02-22 15 views
0

我已经实现使用JDK 1.6 一个应用64位,JSF,Tomcat服务器64位等在用户system.I正在整合一些设备(即FineReader和扫描仪等)到这个应用程序。仅部分设备库仅在JRE 32位上受支持。设置多个的JRE在同一应用程序

所以,装置一体化的屏幕要在JRE 32位运行和非屏幕设备应在JRE 64位运行。我可以在同一个应用程序中配置多个JRE吗?如果可能的话,如何?

+3

如果您的核心依赖关系是32位的,那么迁移到64位如此重要的是什么?相反,如果您可以在64位中找到对核心依赖关系的支持,为什么不升级它们呢? – Makoto 2013-02-22 18:31:57

+0

设备相关的库在内部使用.dll文件。例如,TWAIN驱动程序仅实现32位。因此,我们需要运行32位JRE.But我的用户希望应用程序应该运行32位以及64位? – tech2504 2013-02-22 18:35:39

+1

这是不可能的。 JVM运行在一个沙箱中,不可能在两个JVM之间分割你的应用程序(没有一些先进的技术) – 2013-02-22 18:35:57

回答

0

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

0

这一切都取决于你如何定义“应用程序”。首先,关于你的问题,每个JVM实例运行一种Java - 32位或64位 - Java版本等等。

有时,应用程序包括一个运行一个Java可执行文件,通常是罐和一些东西类路径上的与单个JVM的单个“主”

有时,应用程序是由一个或运行多个JVM的更多的盒子。在这种情况下,每个JVM都运行一个java可执行文件。但是这些可执行部分之间必须进行某种通信才能使其充当应用程序。

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

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

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

所以,你可以看到,真正的答案是“它取决于”。如果您有多个JVM以某种方式进行通信,则可以拥有不同的Java品种。如果它全部在单个Tomcat实例下运行,那么您只有一种Java。

+0

我可以配置多个JVM与Tomcat实例共享吗? – tech2504 2013-02-22 18:53:31

+0

一个Tomcat实例在一个JVM中运行。一个JVM有一种Java。 – 2013-02-22 18:55:28

相关问题