WeblogicはNIOモデルを使用


Weblogicのスレッド数はずっと少なくて、私はずっと彼が採用したNIOモデルだと思っていたが、今日突然彼のacceptスレッドスタックが採用したBIOであることを発見した.DynamicListenThreadスレッドスタック:
java.net.PlainSocketImpl.socketAccept(Native Method) java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)    - Java.net.がロックされています.SocksSocketImpl@1b77816 java.net.ServerSocket.implAccept(ServerSocket.java:453) java.net.ServerSocket.accept(ServerSocket.java:421) weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:38) weblogic.server.channels.DynamicListenThread$SocketAccepter.accept(DynamicListenThread.java:535) weblogic.server.channels.DynamicListenThread$SocketAccepter.access$200(DynamicListenThread.java:417) weblogic.server.channels.DynamicListenThread.run(DynamicListenThread.java:173) java.lang.Thread.run(Thread.java:619)
これは私を突然パニックに陥れた.追加
-Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxer以降、wlsはNIOを採用する.  DynamicListenThreadスレッドスタック:
sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:145)    - Java.langがロックされています.Object@1dc22ad weblogic.socket.WeblogicServerSocket.accept(WeblogicServerSocket.java:30) weblogic.server.channels.DynamicListenThread$SocketAccepter.accept(DynamicListenThread.java:535) weblogic.server.channels.DynamicListenThread$SocketAccepter.access$200(DynamicListenThread.java:417) weblogic.server.channels.DynamicListenThread.run(DynamicListenThread.java:173) java.lang.Thread.run(Thread.java:619
この先輩に対する理解が少なすぎる.
Weblogicには3つのMuxerがあります(私もどのように訳すべきか分かりません):
  • Java Muxer(It is also the only muxer available for RMI clients)
  • Native Muxers
  • Non-Blocking IO Muxer

  • -Dweblogic.MuxerClass=weblogic.socket.NIOSocketMuxerがNIOSocketMuxerを採用するように設定されている場合、そうでなければNativeIOEnabled true, native muxer.前の2つの条件が満たされていない場合、純javaのJava Muxerが採用されます.
    acceptスレッドはBIOを採用しているが、weblogicはリクエストの読み書きを処理するためにnative muxerを実現している.このnative muxerはunixプラットフォームで多重化(Java nioモデルのような)され、windowプラットフォームでは完了ポート(jdk 7ならでは)されている.