我正在开发一个GWT应用程序。
我想知道我是在运行Jboss实例还是在Jetty实例上运行。
这是因为如果我在Jetty上运行,这意味着我正在运行开发模式,我需要重定向到MyModule.html?codeserver ...但如果我在Jboss上运行,我需要重定向到MyModule.html
但我无法想象如果我在Jetty或Jboss上跑步我怎么知道。
答案 0 :(得分:2)
您不应该在应用程序代码中尝试找到运行应用程序的Web服务器。相反,您可以在应用程序的上下文中设置一个区分参数,并为不同的服务器设置不同的值。
E.g。
对于JBoss,server.xml可以在上下文定义中包含一个参数,如下所示:
<Context ...>
...
<Parameter name="applicationStage" value="prod" />
...
</Context>
对于Jetty,相同的上下文参数将进入其jetty.xml,但值为“devo”。
答案 1 :(得分:1)
如果您只想知道自己是在运行生产模式还是开发模式,请尝试
GWT.isProdMode();
当然只适用于客户端。
答案 2 :(得分:0)
根据我的知识,确实没有任何简单的方法可以确定您正在运行的应用程序服务器。您可以检查一些系统属性以确定这一点。
的JBoss:
jboss.server.name
码头:
jetty.home
虽然我不鼓励你的环境决定逻辑,因为维克多在他的回答中提到了。他的建议是一种更好的方法。
答案 3 :(得分:0)
在JSP中,
Server is <%= application.getServerInfo()%>
或使用
Server is ${pageContext.servletContext.serverInfo}
在Servlet中,
String server = getServletContext().getServerInfo();