1

我正在开发一个 GWT 应用程序。

我想知道我是在 Jboss 实例上还是在 Jetty 实例上运行。

这是因为如果我在 Jetty 上运行,这意味着我正在运行开发模式,我需要重定向到 MyModule.html?codeserver... 但如果我在 Jboss 上运行,我需要重定向到 MyModule.html

但我不知道我怎么知道我是在 Jetty 上还是在 Jboss 上跑。

4

4 回答 4

2

您不应该尝试在应用程序代码中找出运行应用程序的网络服务器。相反,您可以在应用程序的上下文中为不同的服务器设置不同的参数集。

例如

对于 JBoss,server.xml 可以在上下文定义中包含一个参数,如下所示:

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

对于 Jetty,相同的上下文参数将进入其 jetty.xml,但值为“devo”。

于 2012-09-04T02:14:32.653 回答
1

如果您只想知道您是在运行生产模式还是开发模式,请尝试

GWT.isProdMode();

当然只能在客户端工作。

于 2012-09-04T09:32:46.907 回答
0

没有任何简单的方法可以确定您正在运行的应用程序服务器(据我所知)。您可以检查一些系统属性来确定这一点。

老板:

jboss.server.name

码头:

jetty.home

尽管我不鼓励像 Vikdor 在他的回答中提到的那样,让逻辑由您的环境决定。他的建议将是一个更好的方法。

于 2012-09-04T02:18:52.290 回答
0

在 JSP 中,

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

或使用

Server is ${pageContext.servletContext.serverInfo}

在一个 Servlet 中,

String server = getServletContext().getServerInfo();
于 2012-09-04T02:20:19.433 回答