[英]Use JNDI lookup to check for being in an application server?
我有一個庫,既可以在 Wildfly 等應用程序服務器內部使用,也可以在外部使用。 在 Enterprise Java 環境中運行時,它的行為會有所不同,問題是 - 我如何確定我在哪里運行,而不依賴於任何 3rd 方庫?
這個想法是使用簡單的 JNDI 查找,但我想知道我會查找什么?
這里有很多問題解釋了不同的 JNDI 名稱空間,但我找不到您希望在目錄中找到的實際對象列表。
So, can anyone point to more specific documentation of stuff to find in the java:global, java:app, or java:jboss namespaces? 尋找“一直存在”的東西。
我可以使用這種方法,例如區分 Wildfly 和 Glassfish,並且 - 假設 - 找出我正在運行的版本嗎?
或者是否有不同的方法來確定我正在運行什么樣的上下文?
相反,當您在 JEE 環境中時,我會使用許多其他類可供您使用的事實。 例如:
try {
Class<?> clazz = Class.forName("javax.servlet.http.HttpServlet");
}
catch( ClassNotFoundException classNotFoundException ) {
// not on an Java EE server
}
這不會告訴您有關您正在運行的版本或其他信息。 該部分通常需要一些 JMX 調用來確定。 例如,對於 Wildfly/JBoss,請查看此處了解一些詳細信息。 正確編寫它對最新版本無關緊要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.