我有一个Windows服务应用程序和一个客户端,它们使用RMI与服务通信。
我需要使用多个客户端进行并发测试,但我需要每个客户端在不同的jvm实例上运行,因为其代码中有一些静态变量。
我能做到吗?有任何想法吗?
Bootstrap.virtualMachineManager()
获取VirtualMachineManager(提供至少一个)启动连接器。然后,您可以在此连接器上调用launch()
,从而为其创建的VM提供VM镜像。这个镜像让您能够在远程执行此VM上的方法。ThreadLocal
),然后就不需要担心JDI(或类似设置)了。您可以使用shell脚本在循环中生成具有自己一组参数的新客户端。
但是,总的来说,仅因为存在某些共享静态变量,就在几个虚拟机中运行客户端代码绝对不是一个好的解决方案。如已经建议的那样,根本问题在于您的客户端代码,您可以使用ThreadLocal
、ThreadPools
或一些同步逻辑来隔离各个客户端线程之间的一组变量。