2012-09-04 85 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

相关问题