WebLogic的HttpURLConnection实现性能不佳

时间:2016-03-22 07:38:28

标签: java performance http https weblogic12c

我有一个在服务器上运行的独立程序:

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文件。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试在Weblogic中使用-DUseSunHttpHandler=true,它将使用HttpURLConnection而不是SOAPHttpURLConnection