我正在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。有什么想法吗?
答案 0 :(得分:0)
最后,第3方课堂上有一个错误。 已关闭