为Tomcat 8中部署的Java应用设置代理

时间:2019-07-03 09:58:50

标签: java tomcat proxy

我正在Tomcat 8.5中部署应用程序。该tomcat在代理后面运行。如果使用eclipse,则应用程序可以正常运行,但不能在Tomcat中运行。我已经看到,如果我使用Web浏览器进行了身份验证,则该应用程序运行正常,而身份验证仍然保留。过期后,我需要再次提供凭据。

我试图通过代码提供此信息,并将这些行添加到catalina.bat:

http.proxyHost = proxy.myproxy.es

http.proxyPort = 8080

http.proxyUser = USERNAME

http.proxyPassword = PWD

System.setProperty("http.proxyHost", PROXY_SERVER);
System.setProperty("http.proxyPort", PROXY_PORT.toString());
System.setProperty("https.proxyHost", PROXY_SERVER);
System.setProperty("https.proxyPort", PROXY_PORT.toString());
System.setProperty("http.proxyUser", PROXY_USER);
System.setProperty("http.proxyPassword", PROXY_PASSWORD);
System.setProperty("http.proxySet", "true");
// AUTENTICAMOS EL PROXY
Authenticator.setDefault(new Authenticator() {
    @Override
    protected PasswordAuthentication getPasswordAuthentication() {
        if (getRequestorType() == RequestorType.PROXY) {
            String prot = getRequestingProtocol().toLowerCase();
            String host = System.getProperty(prot + ".proxyHost", PROXY_SERVER);
            String port = System.getProperty(prot + ".proxyPort",PROXY_PORT.toString());
            String user = System.getProperty(prot + ".proxyUser", PROXY_USER);
            String password = System.getProperty(prot + ".proxyPassword", PROXY_PASSWORD);
            if (getRequestingHost().equalsIgnoreCase(host)) {
                if (Integer.parseInt(port) == getRequestingPort()) {
                    return new PasswordAuthentication(user, password.toCharArray());
                }
            }
        }
        return null;
    }
});

我需要此身份验证才能自动运行。

编辑:该代理应由第三方类使用。如果我创建了一个与google.com之类的随机URL的新连接,然后使用3rd party类进行请求,则它可以正常工作,因此我认为它未使用Authenticator.setDefault。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最后,第3方课堂上有一个错误。 已关闭