gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:02:05 27 4
gpt4 key购买 nike

这不是两个 JVM 相互通信,而是“加入”现有正在运行的 JVM,防止创建额外的进程。

我们正在部署一个控制系统,该系统具有数据收集组件、GUI 运算符(operator)界面和数据记录组件(Java 语言)。

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

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

最佳答案

Is there any way that one can instantiate a class in an existing, running VM?

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

Would this class object be able to interact with live objects in the VM?

是的。

What i would like to do is run the data logger as a daemon, creating one JVM, and then when the user logs on to the os, instantiate the GUI class in the running VM.

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

当然,您通常会运行两个 JVM,其中一个与另一个进行通信(解决任何安全问题),因为只有一个 JVM 几乎没有什么优势。

关于java - 我可以在现有运行的 jvm 中实例化类并与 Activity 对象交互吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13498659/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com