我已经通过以下链接了解了 peter 提供的用于在多线程中动态设置系统属性的解决方案
但问题是,tomcat 没有考虑我正在设置的系统属性。那么如何实现呢?
我在管理站中有多个线程通过 RMI API 连接到不同的服务器并相应地下载 stub 。 我指的是同名 jar 文件作为每个服务器不同位置的 stub 。 注意:每个位置的 jar 版本可能不同。 例如:MS --> serv1 --> stublocation ( http://15.xx.xx.xx:port/myfolder/myapp.jar ) MS --> serv2 --> stub 定位 ( http://15.yy.yy.yy:port/myfolder/myapp.jar )
我想为每个位置动态设置 java.rmi.server.codebase
系统属性,并使其成为 threadLocal,这样它就不会覆盖其他设置。
通过上面链接中提供的例子,我希望能够实现上述问题的解决。
但是为了测试分辨率,我无法在 tomcat 中设置这些属性。 Tomcat 忽略了我正在设置的系统属性。 Tomcat 正在考虑通过 catalina.bat 或 service.bat 而不是通过 system.properties 设置的 JVM 参数,因为我需要动态设置它。
这里的任何帮助都会很棒!谢谢。
最佳答案
java.rmi.server.codebase
属性在导出 远程对象的 JVM 中设置。在客户端 JVM 中设置它完全不会完成任何事情,除非 JVM 也导出远程对象,即回调。您似乎不太可能在同一个 JVM 中处理您自己的应用程序的多个版本。
简而言之,你的问题没有意义。
关于multithreading - 如何通过 tomcat 8 中的 java 代码动态设置系统属性(而不是通过 tomcat 配置文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49234304/