<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    MDA/MDD/TDD/DDD/DDDDDDD
    posts - 536, comments - 111, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    weblogic上HttpURLConnection的超時

    Posted on 2010-04-14 16:59 leekiang 閱讀(4180) 評論(0)  編輯  收藏 所屬分類: 應用服務器
    System.setProperty("sun.net.client.defaultConnectTimeout", "500");
    System.setProperty("sun.net.client.defaultReadTimeout", "500");
    在jdk1.4.2_05下測http,上面的代碼是生效的,https沒有試。
    好像jdk1.4.2.12解決了https的問題,見jdk1.4的bug清單。
    HttpURLConnection的實現類正常情況下是sun.net.www.protocol.http.HttpURLConnection
    而weblogic8下是weblogic.net.http.SOAPHttpURLConnection。
    SOAPHttpURLConnection是weblogic.net.http.HttpURLConnection的子類
    System.setProperty("weblogic.client.SocketConnectTimeoutInSecs", "500");在sp4不管用
    -Dweblogic.client.SocketConnectTimeoutInSecs=500也不管用。

    在http://forums.oracle.com/forums/thread.jspa?threadID=766767里有人說
    Well, it depends on the OS and JVM used. If Weblogic is using Native library (socket Muxer) for remote communication then socketconnectTimeout only helps when thread is stuck on "Socket.connect() method, but it would never timeout the socket if it is stuck on "Socket.read()" because the Control does not return to JVM till OS level TCP/IP connection returns.
    To resolve this issue, try to timeout TCP connections at OS level using OS parameters. Hopefully BEA would come with some resolution of this issue in future release

    應該使用"weblogic.http.client.defaultConnectTimeout"屬性
    在weblogic9的weblogic.net.http.HttpURLConnection類里找到如下的代碼
    defaultConnectTimeout = Integer.getInteger("weblogic.http.client.defaultConnectTimeout", -1).intValue();
    而在weblogic8.1 sp4的該類里沒找到,或許sp5就有了(見http://download.oracle.com/docs/cd/E13222_01/wls/docs81///javadocs/weblogic/net/http/HttpURLConnection.html)

    ? 現在的問題是,對于這種問題可不可以通過超時設定來釋放線程。weblogic中,RJVM(即server之間,可能是admin-to- managed,也可能是managed-to-managed)之間,連接的協議有兩類五種,兩類是http、t3,五種是http、https、 t3、t3s、local。超時設定時協議層面的東西,所以我們這里只討論http和t3。

    ?????? 對于t3,從上面的trace可以看到,連接的創建從ServerURL.findOrCreateRJVM()開始,這個方法有多種實現,不同的實現使用不同的timeout,客戶端程序可以通過向environment中set一個叫做weblogic.jndi.requestTimeout的變量,如果不做設定,則使用系統默認的DEFAULT_CONNECTION_TIMEOUT,這是個靜態值(0)。而在上面的stacktrace中,我們可以看到,environment是在RemoteChannelServiceImpl中定義的,這個environment對于客戶而言是不可配置的,而weblogic自己的這個env中是不設定requesttimeotu的,也就是,無論哪種方式,connectionTimeout/readTimeout對于t3,都是不可配置的,而且默認是沒有超時的。

    ??????? 而對于http,HTTPClientJVMConnection在創建HttpURLConnection的時候,會讀取系統環境變量中的如下兩個變量,
    [b]weblogic.http.client.defaultReadTimeout[/b]
    [b]weblogic.http.client.defaultConnectTimeout[/b]
    ??????? 如果沒有設定,這兩個變量的默認值均為-1,即不做timeout。如果我們作了設定,這兩個值即讀超時、連接超時都會生效。這兩個值可以用于解決上述的問題。
    ?? ??? ?weblogic.http.client.defaultReadTimeout
    weblogic.http.client.defaultConnectTimeout

    哪里可以設置呢?
    舉例:
    Windows平臺:
    set JAVA_OPTIONS=-Dweblogic.http.client.defaultReadTimeout=30 -Dweblogic.http.client.defaultConnectTimeout=30 %JAVA_OPTIONS%
    UNIX/Linux平臺:
    JAVA_OPTIONS="-Dweblogic.http.client.defaultReadTimeout=30 -Dweblogic.http.client.defaultConnectTimeout=30 $JAVA_OPTIONS"
    export JAVA_OPTIONS

    主站蜘蛛池模板: 国产18禁黄网站免费观看| 美女尿口扒开图片免费| 亚洲精品乱码久久久久久| 免费无码又爽又刺激聊天APP| 东北美女野外bbwbbw免费| 亚洲第一第二第三第四第五第六 | 色九月亚洲综合网| 亚洲国产美女精品久久| 亚洲人成在线播放网站| xvideos亚洲永久网址| 成人免费视频88| 久久久久久国产a免费观看黄色大片 | 亚洲AV无码男人的天堂| 亚洲三级中文字幕| 亚洲综合在线观看视频| 国产成A人亚洲精V品无码性色| 亚洲av午夜成人片精品电影| 日本xxwwxxww在线视频免费| 57PAO成人国产永久免费视频| 久久精品无码专区免费东京热| 人妻免费一区二区三区最新| 亚洲免费无码在线| 一级特黄aaa大片免费看| 黄网站色视频免费看无下截| 99亚洲男女激情在线观看| 亚洲精华液一二三产区| 中文无码亚洲精品字幕| 亚洲永久在线观看| 亚洲欧洲另类春色校园网站| 亚洲婷婷第一狠人综合精品| 亚洲jizzjizz在线播放久| 久久综合久久综合亚洲| 国产 亚洲 中文在线 字幕| 午夜在线a亚洲v天堂网2019| 亚洲午夜无码毛片av久久京东热| 亚洲人成人网毛片在线播放| 亚洲熟女综合一区二区三区| 亚洲av无码偷拍在线观看| 美女被羞羞网站免费下载| 色爽黄1000部免费软件下载| 国产免费福利体检区久久|