经过我的研究和讨论here我决定我需要为属于分布式系统中相同控制流的不同JVM上的线程设置相同的名称。线程被创建,例如由RMI。当创建线程时,是否可以设置名称?JAVA:如何设置线程名称(RMI)?
回答
没有自动的方式将这些信息从客户端传输到服务器。
听起来你想要/需要某种在客户端(每线程?)设置的对象Context
,并作为方法参数传递给RMI服务器。这Context
对象可能包含不只是线程的名称,但像调用进程或许还包括其他信息PID等
然后你不得不使用Context
对象设置线程的名称等。因此通过Thread.setName()
一旦它已经穿过电线。去转发,您可以设置特定的上下文信息在你的日志框架使用这个(例如,使用Log4j的nested diagnostic contexts)
这进一步自动化应用方面的留作进一步练习读者:-)
Thread类有一个静态方法到setName(String)
。如果你可以有你的线索,无论他们来自哪里,运行该方法,你应该很好去。 These guys与Tomcat相关的线程有类似的问题。
感谢您的链接。我的问题更多地是关于在JVM中传递名称而不在对象中添加字段或者与RMI连接的每种方法的参数,但我需要更仔细地研究此链接。 – alicjasalamon 2012-07-30 08:12:06
这不是一个静态方法。明显。 – EJP 2012-07-30 22:23:53
- 1. 如何给线程设置名称?
- 2. 如何设置Apache.NMS线程名称
- 3. 如何在java中设置RMI?
- 4. Java Swing到JavaFX(RMI /线程)
- 5. 如何设置Java程序的进程名称?
- 6. 无法在java中设置线程的名称
- 7. 如何在MacOSX中设置线程名称
- 8. 如何设置Quartz.net工作线程名称?
- 9. 如何在TestNG中设置线程名称
- 10. log4cplus中的线程名称是如何设置的?
- 11. 如何将名称设置为Win32线程?
- 12. Scala:如何设置演员线程名称
- 13. 通过RMI保持相同的线程名称
- 14. 名称线程
- 15. Java RMI-线程的意外行为
- 16. Java单线程RMI或替代
- 17. Java RMI服务器端线程
- 18. 使用prctl PR_SET_NAME为进程或线程设置名称?
- 19. RMI和线程weblogic
- 20. 名称2 Java虚拟机的线程
- 21. RMI:线程是如何创建的?
- 22. Java设置按钮名称自动
- 23. 如何从代码中动态设置Java RMI的SSL?
- 24. 在Apache Camel中配置线程名称
- 25. 如何在Java中获取线程名称?
- 26. 如何在Java中正确获取线程名称?
- 27. 如何定制Java中ThreadFactory的子线程的所有名称?
- 28. 如何在Java中更改线程组的名称?
- 29. 在java中,如何获得线程中的文件名称
- 30. 如何获取Win32线程的名称?
我做了很多关于log4j和mdc/ndc的研究,但不幸的是它无法检测到分布式线程。我的问题的关键是:如何为每个请求设置一个唯一的名称,将其传递给控制流,然后使用log4j将该名称添加到日志中,最终将它们聚集在一起并按请求名分组。 – alicjasalamon 2012-07-30 08:16:33
是的。无论您选择何种解决方案,您都会*在服务器(接收)方面做一些工作。你*可能*使用方面(AspectJ或类似的)自动化,但这是另一个问题! – 2012-07-30 08:28:53
其实我也研究过关于AspectJ的:)我的想法是在'@ around'方面添加日志记录,因为我需要测量执行时间。那么是否可以使用方面来设置线程名称(连接到一个请求的所有线程的名称)?如何传递这个名字? – alicjasalamon 2012-07-30 08:41:51