首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在websphere liberty 17.0.0.2或最新版本17.0.0.3中运行的应用程序无法使用代理系统属性

在websphere liberty 17.0.0.2或最新版本17.0.0.3中运行的应用程序无法使用代理系统属性
EN

Stack Overflow用户
提问于 2017-11-16 03:48:46
回答 1查看 242关注 0票数 0

我为POC创建了一个示例web应用程序。此应用程序在亚马逊EC2 liberty 17.0.0.2中运行。如下所示,当我们向servlet发送get请求时,它必须向AWS SQS发送消息。

http://localhost:8080/TestSqsWeb/SqsServlet?message=Hello333

我们的EC2是协作式EC2,它需要代理才能连接到互联网。因此,我在liberty的jvm.options文件中提供了代理配置。

代码语言:javascript
复制
-Dhttps.nonProxyHosts=169.254.169.254|localhost|127.0.0.1
-Dhttp.nonProxyHosts=169.254.169.254|localhost|127.0.0.1
-Dhttp.proxyHost=proxy.ebiz.abc.com
-Dhttp.proxyPort=80
-Dhttps.proxyHost=proxy.ebiz.abc.com
-Dhttps.proxyPort=80 

它一直在给下面的例外。

代码语言:javascript
复制
org.apache.http.conn.ConnectTimeoutException: Connect to sqs.us-west-2.amazonaws.com:443 [sqs.us-west-2.amazonaws.com/52.119.168.22] failed: connect timed out

经过进一步的分析,我发现它在建立连接时没有获取代理系统属性。我用System.getProperty打印了代码中的所有系统属性。它会打印我的系统属性,这意味着配置是正确的。

为了进一步分析,我在tomcat-8中使用相同的代理配置在相同的EC2中部署了相同的应用程序,它正在工作。它能够建立连接并将我的消息发送到AWS SQS队列。

在此分析之后,我得出结论,在自由中存在一些问题。

我的示例应用程序中的库

代码语言:javascript
复制
  [1]: https://i.stack.imgur.com/K2gbj.png

在我发现的一篇文章中,它可能是由于旧版本的http-client造成的,但我使用的是最新的httpclient-4.5.2.jar和httpcore-4.4.4.jar,正如你在上面的链接中看到的那样。

是否有人遇到过Liberty 17.0.0.2/17.0.0.3的相同问题?我使用的是IBM JAVA SDK-8。

EN

回答 1

Stack Overflow用户

发布于 2017-11-16 13:23:05

据我所知,这些代理系统属性适用于类似JDK的HttpUrlConnection提供的HTTP connection类。根据您使用的Apache HTTP客户端,它可能不会使用这些API。

与使用JDK提供的系统属性不同,您可能希望修改代码,如下所示:

代码语言:javascript
复制
    public static void main(String[] args)throws Exception {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            HttpHost target = new HttpHost("httpbin.org", 443, "https");
            HttpHost proxy = new HttpHost("127.0.0.1", 8080, "http");

            RequestConfig config = RequestConfig.custom()
                .setProxy(proxy)
                .build();
            HttpGet request = new HttpGet("/");
            request.setConfig(config);
            ...

此代码示例取自Apache HTTP Client examples page

这里还有其他示例(包括代理身份验证):https://hc.apache.org/httpcomponents-client-ga/examples.html

希望这能帮上忙,安迪

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47316063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档