2012-09-04 83 views
1

我正在開發一個GWT應用程序。如何知道我的應用程序是否在JBoss服務器上運行?

我想知道如果我正在運行Jboss實例或Jetty實例。

這是因爲如果我在Jetty上運行,這意味着我正在運行開發模式,我需要重定向到MyModule.html?codeserver ...但如果我運行在Jboss上,我需要重定向到MyModule。 html

但我不知道如何知道我是否在Jetty或Jboss上運行。

回答

2

您不應該在您的應用程序代碼中嘗試找出正在運行應用程序的Web服務器。相反,您可以在應用程序的上下文中爲不同服務器設置具有不同值的區分參數。

E.g.

對於JBoss,在server.xml可以包含在上下文定義參數如下:

<Context ...> 
    ... 
    <Parameter name="applicationStage" value="prod" /> 
    ... 
</Context> 

和碼頭,同樣的環境參數將進入它的jetty.xml但該值作爲「發育生物學」。

+0

有沒有辦法訪問非servlet類中的上下文參數?我有一個ServerUtils和一個靜態方法boolean isDevelopment();如果可能的話,我想以這種方式保留它:) – FreelanceAr

0

沒有真正的任何簡單的方法來確定你正在運行的應用程序服務器(據我所知)。你可以檢查一些系統屬性來確定這一點。

的JBoss:

jboss.server.name 

碼頭:

jetty.home 

雖然我不鼓勵具有環境決定的邏輯Vikdor在他的回答中提到。他的建議將是一個更好的方法。

0

在JSP,

Server is <%= application.getServerInfo()%> 

或使用

Server is ${pageContext.servletContext.serverInfo} 
在Servlet

String server = getServletContext().getServerInfo(); 
1

如果你只是想知道無論您正在運行的生產或開發模式,然後嘗試

GWT.isProdMode(); 

當然只適用於客戶端。

+0

yeap,但我需要在後面,在appengine我有這個SystemProperty.environment.value()== SystemProperty.Environment.Value.Development。我看起來像這樣。 – FreelanceAr

相關問題