我正在开发一个 GWT 应用程序。
我想知道我是在 Jboss 实例上还是在 Jetty 实例上运行。
这是因为如果我在 Jetty 上运行,这意味着我正在运行开发模式,我需要重定向到 MyModule.html?codeserver... 但如果我在 Jboss 上运行,我需要重定向到 MyModule.html
但我不知道我怎么知道我是在 Jetty 上还是在 Jboss 上跑。
您不应该尝试在应用程序代码中找出运行应用程序的网络服务器。相反,您可以在应用程序的上下文中为不同的服务器设置不同的参数集。
例如
对于 JBoss,server.xml 可以在上下文定义中包含一个参数,如下所示:
<Context ...>
...
<Parameter name="applicationStage" value="prod" />
...
</Context>
对于 Jetty,相同的上下文参数将进入其 jetty.xml,但值为“devo”。
如果您只想知道您是在运行生产模式还是开发模式,请尝试
GWT.isProdMode();
当然只能在客户端工作。
没有任何简单的方法可以确定您正在运行的应用程序服务器(据我所知)。您可以检查一些系统属性来确定这一点。
老板:
jboss.server.name
码头:
jetty.home
尽管我不鼓励像 Vikdor 在他的回答中提到的那样,让逻辑由您的环境决定。他的建议将是一个更好的方法。
在 JSP 中,
Server is <%= application.getServerInfo()%>
或使用
Server is ${pageContext.servletContext.serverInfo}
在一个 Servlet 中,
String server = getServletContext().getServerInfo();