我可以在现有的运行jvm中实例化类并与活动对象交互吗?

时间:2012-11-21 17:20:55

标签: java jvm

这不是关于两个JVM彼此通信,这是关于“加入”现有正在运行的JVM,阻止创建其他进程。

我们正在部署一个控制系统,该系统具有数据收集组件,GUI操作员界面和数据记录组件(在java中)。

数据记录组件和GUI都使用数据收集组件。通常没有问题,它们都存在于同一个VM中,可以通过事件或观察者模式获得更新。问题是数据记录器必须在机器启动时运行(linux),但GUI仅在用户登录时运行。如果创建了两个数据收集组件实例(即在两个JVM中),则会导致我们的通信出现问题监控哪些超出了这个问题的范围,但我们只是说要求只能运行一个数据收集组件实例。

有没有办法可以在现有的正在运行的VM中实例化一个类?此类对象是否能够与VM中的活动对象进行交互?我想做的是将数据记录器作为守护进程运行,创建一个JVM,然后当用户登录到操作系统时,在运行的虚拟机中实例化GUI类。

1 个答案:

答案 0 :(得分:1)

  

有没有办法可以在现有的正在运行的VM中实例化一个类?

RMI,JMS,JMX,套接字,数据报。

  

此类对象是否能够与VM中的活动对象进行交互?

  

我想要做的是将数据记录器作为守护进程运行,创建一个JVM,然后当用户登录到操作系统时,在运行的虚拟机中实例化GUI类。

操作系统可能会阻止您这样做,除非该过程在用户登录时运行。即一个用户无法在另一个用户使用的屏幕上显示GUI。如果操作系统允许,则没有问题。

当然,你通常会运行两个JVM,一个与另一个JVM交谈(解决任何安全问题),因为只有一个JVM没什么优势。