2011-03-25 94 views
1

我在ServletFilter中做了一些日誌記錄,以記錄哪些Web服務被調用,響應時間等,我希望記錄正在運行的Glassfish服務器的域名。但到目前爲止,我還沒有能夠想出任何通過程序訪問這些信息的方式。如何登錄Glassfish域名?

您是否有任何人知道從當前運行的Web應用程序訪問此信息的方式?

org.glassfish.admin.amx.base.DomainRoot似乎有一些方法可能會給一些信息,但我不知道什麼類實現這些接口。

+0

我發現稍微的hackish方式通過檢索系統屬性以檢索域名: 'System.getProperty(「catalina.base」)分割(」 /「)'會得到一個字符串數組,其中最後一個元素是域的名稱。希望有人有更好的方式來做到這一點。幾天沒有回答我自己的問題,以允許一些更好的解決方案。 – oligofren 2011-03-25 13:38:11

+0

除非將這些文件寫入與server.log不同的文件,否則日誌文件的路徑通常具有嵌入到路徑中的域的名稱。域foo的日誌通常以名爲glassfish/domains/foo/logs/server.log的文件結尾...... – vkraemer 2011-03-28 00:06:09

回答

2

您可以從系統屬性獲得它:

String instanceRoot = System.getProperty("com.sun.aas.instanceRoot"); 

對於我的GlassFish安裝這個結果:

C:\ glassfishv3 \ GlassFish的\域\域1

有一個名爲instanceName的相關屬性:

String instanceName = System.getProperty("com.sun.aas.instanceName"); 

這導致輸出

服務器

+0

是的,我看到在System.getProperties()中有很多條目都具有相同的值。我只是不確定哪一個比其他人更正確。授予你答案。 – oligofren 2011-03-28 07:35:09

+0

不客氣。最近我遇到了以下頁面:[「爲什麼開發人員不應該編寫調用sun程序包的程序」](http://java.sun.com/products/jdk/faq/faq-sun-packages.html)。不知道這個建議是否也是屬性。這將是catalina.base屬性的一個要點。但是不是與Tomcat有關的catalina? – 2011-03-28 07:41:15

+0

我沒有想到屬於另一個應用服務器的catalina名字。好點子。 instanceName聽起來更好。沒有關於太陽的線索。*性能點,但。不管怎麼說,還是要謝謝你 :) – oligofren 2011-03-28 07:56:06