我目前正在用 Java 开发一组网络服务,以托管在 WebLogic 10.3.0 上运行的 Axis2。这些网络服务接收并返回 SOAP 消息。
由于我在 WebLogic 上有一个集群环境,因此我希望获得 WebLogic 的服务器名称(我使用配置的服务器名称) 管理控制台)在响应消息正文中返回。有什么方法可以通过编程方式或通过管理控制台上的配置来执行此操作吗?
预先感谢您帮助解决此问题!
最佳答案
您可以通过本地主机获取服务器的名称,如下所示:
String hostname = InetAddress.getLocalHost().getHostName();
更新
上面返回了它运行的服务器的名称,因此它会给出 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");
如果这也没有帮助,您需要更新您的问题并描述您的集群配置,因为根据给出的信息,我们无法做更多的事情。
关于java - XML 响应消息中的服务器名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2085330/