You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WebSphere v9环境下Java代码无法获取URL Cookie:连接被拒绝

Java Web应用在WebSphere中获取外部站点Cookie时出现Connection refused问题

问题描述

我开发的Java Web应用需要在网页加载时通过Servlet过滤器完成认证:过滤器需从外部站点获取Cookie验证用户权限,进而允许访问我开发的HTML站点。但执行connection.getContent()时抛出错误:

java.net.connectException: Connection refused

该问题仅在Web应用部署到WebSphere运行时出现——将相同的Cookie获取代码放到独立Java主程序中运行,却能正常拿到目标站点的Cookie。目标站点与应用处于同一网络,排除防火墙问题,怀疑是WebSphere配置导致的异常。

环境信息

  • IBM WebSphere Application Server v9
  • Java 8(工作要求)
  • 使用java.net.*库实现Cookie获取
  • 开发工具:Eclipse

示例代码

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {    
        try {       
            CookieManager cookieManager = new CookieManager();
            cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
            CookieHandler.setDefault(cookieManager);
            URL url = new URL("https://somesite.com/");         
            HttpsURLConnection  connection = (HttpsURLConnection) url.openConnection();
            connection.getContent();    
            CookieStore cookies = cookieManager.getCookieStore();
            List<HttpCookie> cookieList = cookies.getCookies();
              
            for (HttpCookie cookie : cookieList) {
              System.out.println("cookie name: " + cookie.getName());
              System.out.println("cookie comment: " + cookie.getComment());
              System.out.println("cookie doman: " + cookie.getDomain());
              System.out.println("cookie value: " + cookie.getValue());
              System.out.println("----------------------------------------");
              }     
        } catch (Exception e) {
                e.printStackTrace();
            }
    }

排查与解决建议

1. 检查WebSphere代理配置

WebSphere默认可能启用代理设置,导致出站请求被转发到无效代理服务器:

  • 登录WebSphere管理控制台,进入服务器 > 服务器类型 > WebSphere应用服务器 > [你的服务器名称] > 服务器基础结构 > Java和进程管理 > 进程定义 > Java虚拟机 > 自定义属性
  • 查看是否存在http.proxyHost、http.proxyPort、https.proxyHost、https.proxyPort这类代理属性,若配置的代理不可用,可暂时移除后重启服务器测试。

2. 验证出站连接权限

WebSphere的安全策略可能限制应用的出站网络访问:

  • 进入安全 > 全局安全 > Java 2安全 > 权限策略,确认应用拥有java.net.SocketPermission权限,允许连接目标站点https://somesite.com/。可添加对应权限条目:
    grant codeBase "file:/path/to/your/application.war" {
        permission java.net.SocketPermission "somesite.com:443", "connect,resolve";
    };
    

3. 检查SSL信任存储配置

WebSphere的SSL信任存储若未包含目标站点证书,可能导致连接失败(错误信息可能被包装为Connection refused):

  • 进入安全 > SSL证书和密钥管理 > 密钥存储库 > 信任存储库,检查是否已导入目标站点的SSL证书。若未导入,需导出目标站点证书并添加到WebSphere的信任存储(如DefaultTrustStore)中。

4. 避免全局CookieHandler冲突

在Web应用中设置CookieHandler.setDefault(cookieManager)可能与WebSphere自身的Cookie管理机制冲突,建议改为局部设置:

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {    
    try {       
        CookieManager cookieManager = new CookieManager();
        cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
        URL url = new URL("https://somesite.com/");         
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.setCookieHandler(cookieManager); // 局部设置CookieHandler,不修改全局默认
        connection.getContent();    
        CookieStore cookies = cookieManager.getCookieStore();
        List<HttpCookie> cookieList = cookies.getCookies();
          
        for (HttpCookie cookie : cookieList) {
          System.out.println("cookie name: " + cookie.getName());
          System.out.println("cookie comment: " + cookie.getComment());
          System.out.println("cookie domain: " + cookie.getDomain()); // 修正原代码拼写错误
          System.out.println("cookie value: " + cookie.getValue());
          System.out.println("----------------------------------------");
          }     
    } catch (Exception e) {
            e.printStackTrace();
        }
}

5. 启用出站连接日志排查

开启WebSphere网络连接日志,获取更详细的失败原因:

  • 在服务器Java虚拟机自定义属性中添加:
    com.ibm.ws.trace.specification=*=info:com.ibm.ws.http.channel*=all:com.ibm.ws.ssl*=all
    
  • 重启服务器后查看SystemOut.log和trace.log,分析连接失败的具体细节。

内容的提问来源于stack exchange,提问作者timJIN520

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:25:23