从 JBoss EAP 4.3 调用 Web 服务时出现 504

504 when calling a webservice from JBoss EAP 4.3

背景

我有一个 Web 服务,其中 returns 一个用户列表和每个用户的一些值。 这些值之一是通过 PUT 请求从 Cisco Unified Presence (CUP) 服务器检索的。 我正在使用球衣将 PUT 请求从我的网络服务发送到 CUP 服务器。

问题

当我在 JBoss 中 运行 向 CUP 服务器发送 PUT 请求时,我收到“504 网关超时请求 URL 无法解析”错误。 当我从我的命令行 运行 相同的代码时,它起作用了。 这是我的 JBoss EAP 4.3 配置的问题吗? 如果是,我该如何解决?

一些代码

这是我用来发送 PUT 请求的代码:

    final Client client = Client.create();
    final ClientResponse clientResponse;
    final String requestBody = "<?xml version=\"1.0\"?><session><password>thepassword</password></session>";
    final WebResource webResource = client.resource("http://host:8082/presence-service/users/username/session");
    final WebResource.Builder webResourceBuilder;

    webResourceBuilder = webResource.accept(MediaType.TEXT_XML_VALUE);
    webResourceBuilder.type(MediaType.TEXT_XML_VALUE);

    clientResponse = webResourceBuilder.put(
        ClientResponse.class,
        requestBody);

解决方案:我将目标主机添加到 conf/local.properties 文件中的 http.nonProxyHosts 值。

讨论:JBoss 似乎试图用外部 DNS 服务器解析主机名,但我正在测试的主机名仅在内部可见,对 DNS 服务器不可见有问题。