簡體   English   中英

使用 JNDI 查找來檢查是否在應用程序服務器中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM