【问题标题】:Server name in XML response message?XML响应消息中的服务器名称?
【发布时间】:2010-01-18 10:34:37
【问题描述】:

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

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

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

【问题讨论】:

    标签: java web-services weblogic axis2 httpresponse


    【解决方案1】:

    您可以像这样通过 localhost 获取服务器的名称:

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

    更新

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

    如果你需要webservice前面的服务器名称,你可以从请求中得到:

    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");
    

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

    【讨论】:

    • 这是服务器的主机名,不是 weblogic 服务器的名称
    • 正如 Salandur 所说,您的解决方案输出机器(主机)名称和 IP 地址。我想输出 WebLogic 的服务器名称,它与主机名(部署 WebLogic 的服务器/物理机)不一致。
    • 在您上次更新(更新 2)对您的回复之后,我已将 Web 应用程序部署到具有 2 个实例的集群环境中。我目前在管理服务器(非集群)上将“HttpClusterServlet”用于(负载平衡目的),然后将请求重定向到 2 个集群实例之一。我想要的是返回处理请求的实例名称(在集群的 config.xml 文件中配置)(管理服务器在重定向时选择的实例)。我想使用具有集群服务器名称的集群的 config.xml 文件。这可能吗?
    • 我的第一个回复会告诉您在重定向后处理请求的集群服务器的主机名。如果这不是您需要的,您必须从集群机器的 web.xml 中定义的 servlet 上下文中检索逻辑信息。如果 Weblogic 不更新集群 web.xml,您需要手动执行一次并使用我的第三个答案中的代码。
    • 谢谢“昨天”,我根据您的第二次更新解决了这个问题。 +1!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多