[Java][Weblogic] weblogic.net.http.SOAPHttpsURLConnection incompatible with javax.net.ssl.HttpsURLConnection解決辦法


更新20141120:

         我始終對修改生產上weblogic上的配置文件這一方法心存擔憂(生產上的服務器不允許隨便修改,可能會影響到其他應用),所以想使用代碼的方式解決此問題,在對方法一失敗原因進行了進一步查看,日志打出來的的異常信息為如下:

                   com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl cannot be cast to javax.net.ssl.HttpsURLConnection

         在網上搜索之后,並經過自己的判斷,發現我在new URL時傳的是com.sun.net.ssl.internal.www.protocol.https.Handler這個handler,而報錯信息是javax.net.ssl這個包下面的,再看我的代碼:

package java.net.HttpURLConnection;

httpURLConnection = (HttpURLConnection) this.url.openConnection();

    這就說明了這兩個類不在一個包下面,仔細看了別人的回復,不難發現,這兩個類(HttpsURLConnectionOldImpl、HttpsURLConnection)屬於不同的包,看到這個貼子最下面(http://bbs.csdn.net/topics/380110416)有一個說明,Handler使用錯誤,我一看就知道這是問題的關鍵點,果斷修改前面方法一使用的handler: com.sun.net.ssl.internal.www.protocol.https.Handler,改為:sun.net.www.protocol.https.Handler,完整代碼如下:

        this.url = new URL(null, url, new sun.net.www.protocol.https.Handler());

    重新啟動后再次進行調試成功,自此證明,方法一也是有效的,不過對於使用別人的API jar包的不是很方便,我現在使用的辦法是將別人的代碼進行重寫,再調用自己寫的類解決問題,修改weblogic的配置文件生產上不好修改,只能用代碼實現了。

--------------------------------------分割線20141119------------------------------------------

Weblogic問題解決:

在進行調試時,本地(TOMCAT)開發完成,並本地測試通過,但是部署至Weblogic上時,出現以下異常信息:

weblogic.net.http.SOAPHttpsURLConnection incompatible with javax.net.ssl.HttpsURLConnection

在網上搜索之后,發現是由於在weblogic上使用HttpsURLConniection時,會默認使用weblogic自己的類weblogic.net.http.SOAPHttpsURLConnection,導致出現問題:

         http://bbs.csdn.net/topics/380076374

         http://luanxiyuan.iteye.com/blog/1808097

         http://www.xuebuyuan.com/593657.html

按照上面的貼子找到解決辦法:

  • 1. 按照網上的辦法,可以修改代碼解決問題,但是由於我們使用的是別人的jar包,不能修改代碼,:
URL url = new URL(null,"https://www.etrade.com",new com.sun.net.ssl.internal.www.protocol.https.Handler());

// 指定了handler后openConnection()返回了HttpsURLConnection類型對象

HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
  • 2. 配置weblogic,在startWeblogic.sh文件中添加參數:-DUseSunHttpHandler=true,我最終添加了一行:MEM_ARGS="${MEM_ARGS} -DUseSunHttpHandler=true"

     

 以上兩個方法,方法一嘗試了之后,直接導致weblogic有異常但是沒有報錯信息,在開發、測試環境無法調查,debug也沒用;無奈只能選用第二種方法,配置參數后,成功配置,並測試成功;

 

總結:方法一我嘗試過幾種方法,均失敗,有用的還是只有第二種方法,如有其他可以使用的方法,歡迎大家推薦


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM