許可されたSSL接続に奇妙な問題があります。まず、許可されたsslを使用して外部サーバーに接続するJavaクラスを作成しました。私はこのクラスをコマンドラインで実行しましたが、正常に動作し、外部サーバーから目的の結果を取得します。このクラスをJSPページで使用した後。再起動後、TomcatJSPページでも目的の結果が得られます。しかし、10〜15回のリクエストの後、JSPページで次のエラーが発生します:「javax.net.ssl.SSLHandshakeException:致命的なアラートを受信しました:handshake_failure」。JSPページでこれ以上望ましい結果はありません。
これがJavaクラスコードのメソッドです。
public String TransHttpsAuth(String server, String param, String method, String jksPath, String jksPass)
{
try
{
System.setProperty("javax.net.ssl.keyStoreType", "jks");
System.setProperty("javax.net.ssl.keyStore", jksPath);
System.setProperty("javax.net.ssl.keyStorePassword", jksPass);
server=server+"/?"+ param;
URL url = new URL(server);
HttpsURLConnection httpurlconnection = (HttpsURLConnection)url.openConnection();
httpurlconnection.setHostnameVerifier(new NullHostnameVerifier());
httpurlconnection.setRequestMethod(method);
httpurlconnection.setDoOutput(true);
httpurlconnection.connect();
InputStreamReader in = new InputStreamReader((InputStream) httpurlconnection.getContent());
BufferedReader buff = new BufferedReader(in);
String line = buff.readLine();
StringBuffer text = new StringBuffer();
while (line != null) {
text.append(line + "\n");
line = buff.readLine();
}
System.out.println(text.toString());
httpurlconnection.disconnect();
return text.toString();
}
catch(Exception exception)
{
return exception+"";
}
}
JSPページからの呼び出し:<%fsb fsb = new fsb();
out.println(fsb.TransHttpsAuth( "https:// ext_server"、 "prameters"、 "GET"、 "jks_path"、 "password")); %>
Tomcatバージョン:6.0.32
Javaバージョン:1.6.0_21