Java 如何知道我的应用程序是否在JBoss服务器上运行?
我正在开发一个GWT应用程序 我想知道我运行的是Jboss实例还是Jetty实例 这是因为如果我在Jetty上运行,这意味着我正在运行开发模式,需要重定向到MyModule.html?codeserver。。。但是如果我在Jboss上运行,我需要重定向到MyModule.htmlJava 如何知道我的应用程序是否在JBoss服务器上运行?,java,gwt,jboss,jetty,Java,Gwt,Jboss,Jetty,我正在开发一个GWT应用程序 我想知道我运行的是Jboss实例还是Jetty实例 这是因为如果我在Jetty上运行,这意味着我正在运行开发模式,需要重定向到MyModule.html?codeserver。。。但是如果我在Jboss上运行,我需要重定向到MyModule.html 但是我不知道如何知道我是在Jetty上运行还是在Jboss上运行。您不应该试图在应用程序代码中找出运行应用程序的Web服务器。相反,您可以在应用程序的上下文中为不同的服务器设置具有不同值的判别参数 例如 对于JBoss
但是我不知道如何知道我是在Jetty上运行还是在Jboss上运行。您不应该试图在应用程序代码中找出运行应用程序的Web服务器。相反,您可以在应用程序的上下文中为不同的服务器设置具有不同值的判别参数 例如 对于JBoss,server.xml可以在上下文定义中包含如下参数:
<Context ...>
...
<Parameter name="applicationStage" value="prod" />
...
</Context>
...
...
对于Jetty,相同的上下文参数将进入其Jetty.xml,但值为“devo” 据我所知,没有任何简单的方法来确定您正在运行的应用程序服务器。您可以检查一些系统属性来确定这一点 JBoss:
jboss.server.name
码头:
jetty.home
尽管我不鼓励像维克多在回答中提到的那样,由你的环境决定逻辑。他的建议是一个更好的方法。在JSP中
Server is <%= application.getServerInfo()%>
在Servlet中
String server = getServletContext().getServerInfo();
如果您只是想知道您是在运行生产模式还是开发模式,那么请尝试
GWT.isProdMode();
当然只能在客户端工作。是的,但我需要在后面,在appengine中我有这个SystemProperty.environment.value()==SystemProperty.environment.value.Development。我看起来像这样。有没有办法在非servlet类中访问上下文参数?我有一个ServerUtils和一个静态方法boolean isDevelopment();如果可能的话,我想保持这种状态:)
GWT.isProdMode();