Java代碼如何獲得在它運行的JVM的唯一標識符?在Unix系統中,我正在尋找一個例子是在JVM運行(假設JVM的和流程之間的一個一對一的映射)進程的PID。創建用於每個JVM的唯一ID的如何獲取唯一的JVM標識符?
9
A
回答
9
一個簡單的方法是啓動一個靜態的ServerSocket,設置爲使用端口0時其將抓取任何空閒端口。由於在同一個端口上不能存在兩個ServerSocket(JVM或其他),它們都將是唯一的,您可以查詢它的端口號。由於它是靜態的,每個JVM只會有一個。
這並不取決於什麼權限有,但在大多數情況下它工作得很好,你可以隨時把它綁定到「127.0.0.1」,使其不太可能碰到的任何限制。
static ServerSocket myssock;
static int myid;
static {
myssock = new ServerSocket(0);
myid = myssock.getLocalPort();
}
如果你有多個主機上的多個JVM,那麼你可以結合以上機器的LAN IP創建跨網絡的唯一JVM ID。
2
我們一直在使用:
import java.lang.management.ManagementFactory;
String jvmName = ManagementFactory.getRuntimeMXBean().getName();
其中給出像<pid>@<hostname>
,至少在太陽/ Oracle的JVM上。
相關問題
- 1. 用唯一標識符獲取NSManagedObject?
- 2. 如何使用Phonegap獲取iPhone的唯一標識符(UDID)?
- 3. 如何從應用程序獲取iOS的唯一標識符?
- 4. 如何獲取窗口的唯一標識符?
- 5. 如何獲取唯一的方法標識符?
- 6. 如何從OpenID/Google獲取唯一標識符?
- 7. 唯一標識符
- 8. NSManagedObject的唯一標識符
- 9. SlideMaster的唯一標識符
- 10. PC的唯一標識符
- 11. Mac的唯一標識符?
- 12. 從窗口獲取唯一標識
- 13. 獲取並更改項目的唯一標識(最短標識)
- 14. 如何獲得協議對象的唯一標識符
- 15. 從GMail URL中獲取唯一的電子郵件標識符
- 16. 基於唯一標識符獲取1行上的值
- 17. 獲取系統的唯一標識符(不是MAC地址)?
- 18. 流暢的NHibernate獲取視圖沒有唯一標識符
- 19. 在C#中獲取唯一的系統標識符
- 20. 獲取R中唯一標識符的平均值
- 21. 唯一文件標識符
- 22. XHTML唯一標識符
- 23. 唯一標識符策略
- 24. MySQL唯一標識符
- 25. UITableViewCell唯一標識符?
- 26. 如何在插入時獲取MongoDB對象的唯一標識
- 27. 如何在JDO中唯一標識和獲取子對象
- 28. Vertica中的全局唯一標識符
- 29. 跨表的唯一標識符
- 30. 寫腳本的唯一標識符?
見http://stackoverflow.com/questions/35842/process-id-in-java用於從當前Java進程獲得進程ID的詳細信息。 [這篇博客](http://blog.igorminar.com/2007/03/how-java-application-can-discover-its.html)也有一些好消息。 – prunge