我目前正在用 Java 开发一组Web服务,以托管在通过WebLogic 10.3.0运行的Axis2上。这些Web 服务接收和返回 SOAP 消息。
由于我在WebLogic上有一个集群环境,我希望在响应消息正文中返回WebLogic的服务器名称(我使用管理控制台配置的那个)。有什么方法可以通过编程方式或通过管理控制台上的配置来完成?
提前感谢您帮助解决这个问题!
我目前正在用 Java 开发一组Web服务,以托管在通过WebLogic 10.3.0运行的Axis2上。这些Web 服务接收和返回 SOAP 消息。
由于我在WebLogic上有一个集群环境,我希望在响应消息正文中返回WebLogic的服务器名称(我使用管理控制台配置的那个)。有什么方法可以通过编程方式或通过管理控制台上的配置来完成?
提前感谢您帮助解决这个问题!
您可以通过 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");
如果这也没有帮助,您需要更新您的问题并描述您的集群配置,因为提供的信息无法做更多的事情。