0

我目前正在用 Java 开发一组Web服务,以托管在通过WebLogic 10.3.0运行的Axis2上。这些Web 服务接收和返回 SOAP 消息。

由于我在WebLogic上有一个集群环境,我希望在响应消息正文中返回WebLogic的服务器名称(我使用管理控制台配置的那个)。有什么方法可以通过编程方式或通过管理控制台上的配置来完成?

提前感谢您帮助解决这个问题!

4

1 回答 1

2

您可以通过 localhost 获取服务器的名称,如下所示:

String hostname = InetAddress.getLocalHost().getHostName();

更新

上面返回它运行的服务器的名称,因此它会给出 web 服务主机的名称。

如果您需要 web 服务前面的服务器名称,您可以从请求中获取:

String hostname = request.getRemoteHost();

应该做的伎俩。请注意,远程主机名是套接字客户端用来建立连接的名称,它不必是 DNS 名称。如果需要 DNS 名称,可以使用:

String hostname = InetAddress.getByName(request.getRemoteAddr()).getHostName();

更新 2

如果您的意思与服务器(解决方案 1)或转发代理(解决方案 2)无关,而是一种逻辑集群名称,您可以在 web.xml 中将其定义为上下文参数:

<context-param>
    <param-name>clustername</param-name>
    <param-value>OurPrettyCluster</param-value>
</context-param>

并在您的 servlet 中阅读:

ServletContext context = getServletContext();
String clustername = context.getInitParameter("clustername");

如果这也没有帮助,您需要更新您的问题并描述您的集群配置,因为提供的信息无法做更多的事情。

于 2010-01-18T10:47:13.707 回答