我有一个 Windows 服务应用程序和一个使用 RMI 与服务通信的客户端。 我需要对多个客户端进行一些并发测试,但我需要每个客户端都运行到不同的 jvm 实例,因为它的代码中有一些静态变量。 我可以这样做吗?有任何想法吗?
最佳答案
是的,您可以使用 JDI 执行此操作 - VirtualMachineManager (您可以通过调用 Bootstrap.virtualMachineManager();
获得)提供(至少一个)launching connector .然后,您可以在此连接器上调用 launch();
,它会为您提供 VM mirror。对于它创建的虚拟机。然后,此镜像允许您在此 VM 上远程执行方法。
您可以根据需要使用此方法设置任意数量的远程 VM,但显然以这种方式执行操作会导致相对较大的性能损失,而且需要付出相当大的努力。除非付出的努力是天文数字,否则我个人主张修复代码以保证线程安全(使用 ThreadLocal
),然后您就无需担心 JDI(或类似设置)。
关于java - 在多个 jvm 实例中运行 java 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16714043/