multithreading - 如何通过 tomcat 8 中的 java 代码动态设置系统属性(而不是通过 tomcat 配置文件)

标签 multithreading tomcat system jndi rmi

我已经通过以下链接了解了 peter 提供的用于在多线程中动态设置系统属性的解决方案

System.setProperty used by a thread impacts other thread in communication to external network elements. How to resolve it?

但问题是,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/

相关文章:

android - 利用 openGL 的多线程

Tomcat 7 和 CSRF 过滤器

Ubuntu Linux 的 Tomcat 6 配置示例?

c++ - 系统 ("c:\\sample\\startAll.bat") 由于工作目录而无法运行?

ios - iPhone上的系统声音无法播放

c++ - 如何锁定由属于 2 个不同类的 2 个线程修改的数据结构

python - 如何从Python线程访问数据

javascript - 在 html 或 javascript 中进行更改后无需重新启动服务器。为什么?

r - 为什么加载 mysql 在命令行中有效,但在 R 中使用 system() 则无效?

multithreading - 循环计数和线程数之间的混淆以及有关线程生命周期的查询