我有一个在服务器上运行的独立程序:
import java.io.*;
import java.util.*;
import javax.net.ssl.*;
import java.net.*;
import java.security.*;
public class test {
public static void main(String... args) {
try {
URL url = new URL("http://XXXXXXXX:5310/Testing/hello.html");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
System.out.println("HttpUrlConnection class: " + conn.getClass().getName());
conn.setRequestProperty("Accept", "*/*");
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.setDoInput(true);
System.out.println("start: " + new java.util.Date().toString());
System.out.println("response code: " + conn.getResponseCode());
System.out.println("end: " + new java.util.Date().toString());
} catch (Exception exception) {
System.out.println("error: " + exception.getMessage());
}
System.exit(0);
}
}
它将获取一个非常简单的HTML文件,该文件部署在运行在同一服务器上的WebLogic 12.2.1上。执行速度非常快,获得响应所需的时间不到一秒,您可以从输出中看到:
HttpUrlConnection class: sun.net.www.protocol.http.HttpURLConnection
start: Tue Mar 22 13:28:30 SGT 2016
response code: 200
end: Tue Mar 22 13:28:30 SGT 2016
使用相同的代码,我将其放在JSP中,并将其部署到同一服务器上的WebLogic:
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.net.ssl.*" %>
<%@ page import="java.net.*" %>
<%@ page import="java.security.*" %>
<html>
<%
try {
URL url = new URL("http://XXXXXXXX:5310/Testing/hello.html");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
out.print("HttpUrlConnection class: " + conn.getClass().getName() + "<br>");
conn.setRequestProperty("Accept", "*/*");
conn.setRequestMethod("GET");
conn.setDoOutput(true);
conn.setDoInput(true);
out.print("start: " + new java.util.Date().toString() + "<br>");
out.println("response code: " + conn.getResponseCode() + "<br>");
out.print("end: " + new java.util.Date().toString() + "<br>");
} catch (Exception exception) {
out.println("error: " + exception.getMessage() + "<br>");
}
%>
</html>
执行非常缓慢,通常大约5秒钟:
HttpUrlConnection class: weblogic.net.http.SOAPHttpURLConnection
start: Tue Mar 22 13:31:22 SGT 2016
response code: 200
end: Tue Mar 22 13:31:28 SGT 2016
根据我的观察,WebLogic的HttpURLConnection和HttpsURLConnection的实现性能很差。在https://stackoverflow.com/questions/36080108/slow-2-way-ssl-handshake-with-weblogic-net-http-httpsurlconnection
上查看我的其他问题这是什么原因?这对我来说非常令人沮丧,因为5秒真是荒谬!
另一个奇怪的事情是,当我调用URL.openConnection()时,WebLogic正在返回SOAPHttpURLConnection对象,即使我正在请求纯HTML文件。
感谢。
答案 0 :(得分:0)
您可以尝试在Weblogic中使用-DUseSunHttpHandler=true
,它将使用HttpURLConnection
而不是SOAPHttpURLConnection
。