Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
Tomcat×é³ÉÓ빤×÷Ô­Àí
 
×÷ÕߣºVectorJin
  2045  次浏览      27
 2021-9-27
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜTomcatÊÇʲô£¬Ö÷ÒªÓÐ Container ºÍ Connector ÒÔ¼°Ïà¹Ø×é¼þ¹¹³É,Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ¾ò½ð£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

Tomcat×é³ÉÓ빤×÷Ô­Àí

TomcatÊÇʲô

¿ªÔ´µÄ Java Web Ó¦Ó÷þÎñÆ÷£¬ÊµÏÖÁË Java EE(Java Platform Enterprise Edition)µÄ²¿ ·Ö¼¼Êõ¹æ·¶£¬±ÈÈç Java Servlet¡¢Java Server Page¡¢JSTL¡¢Java WebSocket¡£Java EE ÊÇ Sun ¹« ˾ΪÆóÒµ¼¶Ó¦ÓÃÍÆ³öµÄ±ê׼ƽ̨£¬¶¨ÒåÁËһϵÁÐÓÃÓÚÆóÒµ¼¶¿ª·¢µÄ¼¼Êõ¹æ·¶£¬³ýÁËÉÏÊöµÄÖ®Í⣬»¹ÓÐ EJB¡¢Java Mail¡¢JPA¡¢JTA¡¢JMS µÈ£¬¶øÕâЩ¶¼ÒÀÀµ¾ßÌåÈÝÆ÷µÄʵÏÖ¡£

ÉÏͼ¶Ô±ÈÁË Java EE ÈÝÆ÷µÄʵÏÖÇé¿ö£¬Tomcat ºÍ Jetty ¶¼Ö»ÌṩÁË Java Web ÈÝÆ÷±ØÐèµÄ Servlet ºÍ JSP ¹æ·¶£¬¿ª·¢ÕßÒªÏëʵÏÖÆäËûµÄ¹¦ÄÜ£¬ÐèÒª×Ô¼ºÒÀÀµÆäËû¿ªÔ´ÊµÏÖ¡£

Glassfish ÊÇÓÉ sun ¹«Ë¾ÍƳö£¬Java EE ×îй淶³öÀ´Ö®ºó£¬Ê×ÏÈ»áÔÚ Glassfish ÉϽøÐÐʵ ÏÖ£¬ËùÒÔÊÇÑо¿ Java EE ×îм¼ÊõµÄÊ×Ñ¡¡£

×î³£¼ûµÄÇé¿öÊÇʹÓà Tomcat ×÷Ϊ Java Web ·þÎñÆ÷£¬Ê¹Óà Spring ÌṩµÄ¿ªÏä¼´ÓõÄÇ¿´ó µÄ¹¦ÄÜ£¬²¢ÒÀÀµÆäËû¿ªÔ´¿âÀ´Íê³É¸ºÔðµÄÒµÎñ¹¦ÄÜʵÏÖ¡£

ServletÈÝÆ÷

Tomcat ×é³ÉÈçÏÂͼ£º Ö÷ÒªÓÐ Container ºÍ Connector ÒÔ¼°Ïà¹Ø×é¼þ¹¹³É¡£

Server£ºÖ¸µÄ¾ÍÊÇÕû¸ö Tomcat ·þ ÎñÆ÷£¬°üº¬¶à×é·þÎñ£¬¸ºÔð¹ÜÀíºÍ Æô¶¯¸÷¸ö Service£¬Í¬Ê±¼àÌý 8005 ¶Ë¿Ú·¢¹ýÀ´µÄ shutdown ÃüÁÓà ÓڹرÕÕû¸öÈÝÆ÷ £»

Service£ºTomcat ·â×°µÄ¡¢¶ÔÍâÌá ¹©ÍêÕûµÄ¡¢»ùÓÚ×é¼þµÄ web ·þÎñ£¬ °üº¬ Connectors¡¢Container Á½¸ö ºËÐÄ×é¼þ£¬ÒÔ¼°¶à¸ö¹¦ÄÜ×é¼þ£¬¸÷ ¸ö Service Ö®¼äÊǶÀÁ¢µÄ£¬µ«Êǹ²Ïí ͬһ JVM µÄ×ÊÔ´ £»

Connector£ºTomcat ÓëÍⲿÊÀ½çµÄÁ¬½ÓÆ÷£¬¼àÌý¹Ì¶¨¶Ë¿Ú½ÓÊÕÍⲿÇëÇ󣬴«µÝ¸ø Container£¬²¢ ½« Container ´¦ÀíµÄ½á¹û·µ»Ø¸øÍⲿ£»

Container£ºCatalina£¬Servlet ÈÝÆ÷£¬ÄÚ²¿Óжà²ãÈÝÆ÷×é³É£¬ÓÃÓÚ¹ÜÀí Servlet ÉúÃüÖÜÆÚ£¬µ÷Óà servlet Ïà¹Ø·½·¨¡£

Loader£º·â×°ÁË Java ClassLoader£¬ÓÃÓÚ Container ¼ÓÔØÀàÎļþ£» Realm£ºTomcat ÖÐΪ web Ó¦ÓóÌÐòÌṩ·ÃÎÊÈÏÖ¤ºÍ½ÇÉ«¹ÜÀíµÄ»úÖÆ£»

JMX£ºJava SE Öж¨Òå¼¼Êõ¹æ·¶£¬ÊÇÒ»¸öΪӦÓóÌÐò¡¢É豸¡¢ÏµÍ³µÈÖ²Èë¹ÜÀí¹¦ÄܵĿò¼Ü£¬Í¨¹ý JMX ¿ÉÒÔÔ¶³Ì¼à¿Ø Tomcat µÄÔËÐÐ״̬£»

Jasper£ºTomcat µÄ Jsp ½âÎöÒýÇæ£¬ÓÃÓÚ½« Jsp ת»»³É Java Îļþ£¬²¢±àÒë³É class Îļþ¡£ Session£º¸ºÔð¹ÜÀíºÍ´´½¨ session£¬ÒÔ¼° Session µÄ³Ö¾Ã»¯(¿É×Ô¶¨Òå)£¬Ö§³Ö session µÄ¼¯ Ⱥ¡£

Pipeline£ºÔÚÈÝÆ÷Öг䵱¹ÜµÀµÄ×÷Ó㬹ܵÀÖпÉÒÔÉèÖø÷ÖÖ valve(·§ÃÅ)£¬ÇëÇóºÍÏìÓ¦ÔÚ¾­ÓÉ¹Ü µÀÖи÷¸ö·§ÃÅ´¦Àí£¬ÌṩÁËÒ»ÖÖÁé»î¿ÉÅäÖõĴ¦ÀíÇëÇóºÍÏìÓ¦µÄ»úÖÆ¡£

Naming£ºÃüÃû·þÎñ£¬JNDI£¬ Java ÃüÃûºÍĿ¼½Ó¿Ú£¬ÊÇÒ»×éÔÚ Java Ó¦ÓÃÖзÃÎÊÃüÃûºÍĿ¼·þÎñµÄ API¡£ÃüÃû·þÎñ½«Ãû³ÆºÍ¶ÔÏóÁªÏµÆðÀ´£¬Ê¹µÃÎÒÃÇ¿ÉÒÔÓÃÃû³Æ·ÃÎʶÔÏó£¬Ä¿Â¼·þÎñÒ²ÊÇÒ»ÖÖÃüÃû ·þÎñ£¬¶ÔÏó²»µ«ÓÐÃû³Æ£¬»¹ÓÐÊôÐÔ¡£Tomcat ÖпÉÒÔʹÓà JNDI ¶¨ÒåÊý¾ÝÔ´¡¢ÅäÖÃÐÅÏ¢£¬ÓÃÓÚ¿ª·¢ Ó벿ÊðµÄ·ÖÀë¡£

Container×é³É

Engine£ºServlet µÄ¶¥²ãÈÝÆ÷£¬°üº¬Ò» ¸ö»ò¶à¸ö Host ×ÓÈÝÆ÷£» Host£ºÐéÄâÖ÷»ú£¬¸ºÔð web Ó¦ÓõIJ¿ ÊðºÍ Context µÄ´´½¨£» Context£ºWeb Ó¦ÓÃÉÏÏÂÎÄ£¬°üº¬¶à¸ö Wrapper£¬¸ºÔð web ÅäÖõĽâÎö¡¢¹Ü ÀíËùÓÐµÄ Web ×ÊÔ´£» Wrapper£º×îµ×²ãµÄÈÝÆ÷£¬ÊÇ¶Ô Servlet µÄ·â×°£¬¸ºÔð Servlet ʵÀýµÄ´´ ½¨¡¢Ö´ÐкÍÏú»Ù¡£

ÉúÃüÖÜÆÚ¹ÜÀí Tomcat ΪÁË·½±ã¹ÜÀí×é¼þºÍÈÝÆ÷µÄÉúÃüÖÜÆÚ£¬¶¨ÒåÁË´Ó´´½¨¡¢Æô¶¯¡¢µ½Í£Ö¹¡¢Ïú»Ù¹² 12 ÖÐ״̬£¬tomcat ÉúÃüÖÜÆÚ¹ÜÀíÁËÄÚ²¿×´Ì¬±ä»¯µÄ¹æÔò¿ØÖÆ£¬×é¼þºÍÈÝÆ÷Ö»ÐèʵÏÖÏàÓ¦µÄÉúÃüÖÜÆÚ ·½·¨¼´¿ÉÍê³É¸÷ÉúÃüÖÜÆÚÄڵIJÙ×÷(initInternal¡¢startInternal¡¢stopInternal¡¢ destroyInternal)£»

±ÈÈçÖ´Ðгõʼ»¯²Ù×÷ʱ£¬»áÅжϵ±Ç°×´Ì¬ÊÇ·ñ New£¬Èç¹û²»ÊÇÔòÅ׳öÉúÃüÖÜÆÚÒì³££»ÊÇµÄ »°ÔòÉèÖõ±Ç°×´Ì¬Îª Initializing£¬²¢Ö´ÐÐ initInternal ·½·¨£¬ÓÉ×ÓÀàʵÏÖ£¬·½·¨Ö´Ðгɹ¦ÔòÉèÖõ± ǰ״̬Ϊ Initialized£¬Ö´ÐÐʧ°ÜÔòÉèÖÃΪ Failed ״̬£»

Tomcat µÄÉúÃüÖÜÆÚ¹ÜÀíÒýÈëÁËʼþ»úÖÆ£¬ÔÚ×é¼þ»òÈÝÆ÷µÄÉúÃüÖÜÆÚ״̬·¢Éú±ä»¯Ê±»áͨ ֪ʼþ¼àÌýÆ÷£¬¼àÌýÆ÷ͨ¹ýÅжÏʼþµÄÀàÐÍÀ´½øÐÐÏàÓ¦µÄ²Ù×÷¡£ ʼþ¼àÌýÆ÷µÄÌí¼Ó¿ÉÒÔÔÚ server.xml ÎļþÖнøÐÐÅäÖÃ;

Tomcat ¸÷ÀàÈÝÆ÷µÄÅäÖùý³Ì¾ÍÊÇͨ¹ýÌí¼Ó listener µÄ·½Ê½À´½øÐе쬴Ӷø´ïµ½ÅäÖÃÂß¼­Óë ÈÝÆ÷µÄ½âñî¡£Èç EngineConfig¡¢HostConfig¡¢ContextConfig¡£ EngineConfig£ºÖ÷Òª´òÓ¡Æô¶¯ºÍÍ£Ö¹ÈÕÖ¾ HostConfig£ºÖ÷Òª´¦Àí²¿ÊðÓ¦Ó㬽âÎöÓ¦Óà META-INF/context.xml ²¢´´½¨Ó¦ÓÃµÄ Context ContextConfig£ºÖ÷Òª½âÎö²¢ºÏ²¢ web.xml£¬É¨ÃèÓ¦Óõĸ÷Àà web ×ÊÔ´ (filter¡¢servlet¡¢listener)

Tomcat µÄÆô¶¯¹ý³Ì

Æô¶¯´Ó Tomcat ÌṩµÄ start.sh ½Å±¾¿ªÊ¼£¬shell ½Å±¾»áµ÷Óà Bootstrap µÄ main ·½·¨£¬Êµ¼Ê µ÷ÓÃÁË Catalina ÏàÓ¦µÄ load¡¢start ·½·¨¡£

load ·½·¨»áͨ¹ý Digester ½øÐÐ config/server.xml µÄ½âÎö£¬ÔÚ½âÎöµÄ¹ý³ÌÖлá¸ù¾Ý xml ÖеĹØÏµ ºÍÅäÖÃÐÅÏ¢À´´´½¨ÈÝÆ÷£¬²¢ÉèÖÃÏà¹ØµÄÊôÐÔ¡£½Ó×Å Catalina »áµ÷Óà StandardServer µÄ init ºÍ start ·½·¨½øÐÐÈÝÆ÷µÄ³õʼ»¯ºÍÆô¶¯¡£

°´ÕÕ xml µÄÅäÖùØÏµ£¬server µÄ×ÓÔªËØÊÇ service£¬service µÄ×ÓÔªËØÊǶ¥²ãÈÝÆ÷ Engine£¬Ã¿²ãÈÝÆ÷ÓгÖÓÐ×Ô¼ºµÄ×ÓÈÝÆ÷£¬¶øÕâÐ©ÔªËØ¶¼ÊµÏÖÁËÉúÃüÖÜÆÚ¹ÜÀí µÄ¸÷¸ö·½·¨£¬Òò´Ë¾ÍºÜÈÝÒ×µÄÍê³ÉÕû¸öÈÝÆ÷µÄÆô¶¯¡¢¹Ø±ÕµÈÉúÃüÖÜÆÚµÄ¹ÜÀí¡£

StandardServer Íê³É init ºÍ start ·½·¨µ÷Óú󣬻áÒ»Ö±¼àÌýÀ´×Ô 8005 ¶Ë¿Ú(¿ÉÅäÖÃ)£¬Èç¹û½ÓÊÕ µ½ shutdown ÃüÁÔò»áÍ˳öÑ­»·¼àÌý£¬Ö´ÐкóÐøµÄ stop ºÍ destroy ·½·¨£¬Íê³É Tomcat ÈÝÆ÷µÄ ¹Ø±Õ¡£Í¬Ê±Ò²»áµ÷Óà JVM µÄ Runtime.getRuntime()?.addShutdownHook ·½·¨£¬ÔÚÐéÄâ»úÒâÍâÍË ³öµÄʱºòÀ´¹Ø±ÕÈÝÆ÷¡£

ËùÓÐÈÝÆ÷¶¼ÊǼ̳Ð×Ô ContainerBase£¬»ùÀàÖзâ×°ÁËÈÝÆ÷ÖеÄÖØ¸´¹¤×÷£¬¸ºÔðÆô¶¯ÈÝÆ÷Ïà¹ØµÄ×é ¼þ Loader¡¢Logger¡¢Manager¡¢Cluster¡¢Pipeline£¬Æô¶¯×ÓÈÝÆ÷(Ï̳߳ز¢·¢Æô¶¯×ÓÈÝÆ÷£¬Í¨¹ý Ïß³Ì³Ø submit ¶à¸öỊ̈߳¬µ÷ÓÃºó·µ»Ø Future ¶ÔÏó£¬Ïß³ÌÄÚ²¿Æô¶¯×ÓÈÝÆ÷£¬½Ó×ŵ÷Óà Future ¶ÔÏó µÄ get ·½·¨À´µÈ´ýÖ´Ðнá¹û)¡£

 

Web Ó¦ÓõIJ¿Êð·½Ê½ ×¢£ºcatalina.home£º°²×°Ä¿Â¼;catalina.base£º¹¤×÷Ŀ¼;ĬÈÏÖµ user.dir

Server.xml ÅäÖà Host ÔªËØ£¬Ö¸¶¨ appBase ÊôÐÔ£¬Ä¬ÈÏ$catalina.base/webapps/

Server.xml ÅäÖà Context ÔªËØ£¬Ö¸¶¨ docBase£¬ÔªËØ£¬Ö¸¶¨ web Ó¦ÓõÄ·¾¶

×Ô¶¨ÒåÅäÖãºÔÚ$catalina.base/EngineName/HostName/XXX.xml ÅäÖà Context ÔªËØ

HostConfig ¼àÌýÁË StandardHost ÈÝÆ÷µÄʼþ£¬ÔÚ start ·½·¨ÖнâÎöÉÏÊöÅäÖÃÎļþ£º

ɨÃè appbase ·¾¶ÏµÄËùÓÐÎļþ¼ÐºÍ war °ü£¬½âÎö¸÷¸öÓ¦ÓÃµÄ META-INF/context.xml£¬²¢ ´´½¨ StandardContext£¬²¢½« Context ¼ÓÈëµ½ Host µÄ×ÓÈÝÆ÷ÖС£

½âÎö$catalina.base/EngineName/HostName/ϵÄËùÓÐ Context ÅäÖã¬ÕÒµ½ÏàÓ¦ web Ó¦ ÓõÄλÖ㬽âÎö¸÷¸öÓ¦ÓÃµÄ META-INF/context.xml£¬²¢´´½¨ StandardContext£¬²¢½« Context ¼ÓÈëµ½ Host µÄ×ÓÈÝÆ÷ÖС£

×¢£º

HostConfig ²¢Ã»ÓÐʵ¼Ê½âÎö Context.xml£¬¶øÊÇÔÚ ContextConfig ÖнøÐеġ£

HostConfig ÖлᶨÆÚ¼ì²é watched ×ÊÔ´Îļþ(context.xml ÅäÖÃÎļþ)

ContextConfig ½âÎö context.xml ˳Ðò£º

ÏȽâÎöÈ«¾ÖµÄÅäÖà config/context.xml

È»ºó½âÎö Host µÄĬÈÏÅäÖà EngineName/HostName/context.xml.default

×îºó½âÎöÓ¦ÓÃµÄ META-INF/context.xml

ContextConfig ½âÎö web.xml ˳Ðò£º

ÏȽâÎöÈ«¾ÖµÄÅäÖà config/web.xml

È»ºó½âÎö Host µÄĬÈÏÅäÖà EngineName/HostName/web.xml.default ½Ó׎âÎöÓ¦ÓÃµÄ MEB-INF/web.xml

ɨÃèÓ¦Óà WEB-INF/lib/Ï嵀 jar Îļþ£¬½âÎöÆäÖÐµÄ META-INF/web-fragment.xml ×îºóºÏ²¢ xml ·â×°³É WebXml£¬²¢ÉèÖà Context

×¢£º

ɨÃè web Ó¦ÓÃºÍ jar ÖеÄ×¢½â(Filter¡¢Listener¡¢Servlet)¾ÍÊÇÉÏÊö²½ÖèÖнøÐеġ£

ÈÝÆ÷µÄ¶¨ÆÚÖ´ÐУºbackgroundProcess£¬ÓÉ ContainerBase À´ÊµÏֵ쬲¢ÇÒÖ»ÓÐÔÚ¶¥²ãÈÝÆ÷ ÖвŻῪÆôÏ̡߳£(backgroundProcessorDelay=10 ±ê־λÀ´¿ØÖÆ)

**Servlet ÉúÃüÖÜÆÚ **

Servlet ÊÇÓà Java ±àдµÄ·þÎñÆ÷¶Ë³ÌÐò¡£ÆäÖ÷Òª¹¦ÄÜÔÚÓÚ½»»¥Ê½µØä¯ÀÀºÍÐÞ¸ÄÊý¾Ý£¬Éú³É¶¯Ì¬ Web ÄÚÈÝ¡£

ÇëÇóµ½´ï server ¶Ë£¬server ¸ù¾Ý url Ó³Éäµ½ÏàÓ¦µÄ Servlet

ÅÐ¶Ï Servlet ʵÀýÊÇ·ñ´æÔÚ£¬²»´æÔÚÔò¼ÓÔØºÍʵÀý»¯ Servlet ²¢µ÷Óà init ·½·¨

Server ·Ö±ð´´½¨ Request ºÍ Response ¶ÔÏ󣬵÷Óà Servlet ʵÀýµÄ service ·½·¨(service ·½·¨ ÄÚ²¿»á¸ù¾Ý http ÇëÇó·½·¨ÀàÐ͵÷ÓÃÏàÓ¦µÄ doXXX ·½·¨)

doXXX ·½·¨ÄÚΪҵÎñÂß¼­ÊµÏÖ£¬´Ó Request ¶ÔÏó»ñÈ¡ÇëÇó²ÎÊý£¬´¦ÀíÍê±ÏÖ®ºó½«½á¹ûͨ¹ý response ¶ÔÏ󷵻ظøµ÷Ó÷½

µ± Server ²»ÔÙÐèÒª Servlet ʱ(Ò»°ãµ± Server ¹Ø±Õʱ)£¬Server µ÷Óà Servlet µÄ destroy() ·½ ·¨¡£

load on startup

µ±ÖµÎª 0 »òÕß´óÓÚ 0 ʱ£¬±íʾÈÝÆ÷ÔÚÓ¦ÓÃÆô¶¯Ê±¾Í¼ÓÔØÕâ¸ö servlet; µ±ÊÇÒ»¸ö¸ºÊýʱ»òÕßûÓÐÖ¸¶¨Ê±£¬ÔòָʾÈÝÆ÷Ôڸà servlet ±»Ñ¡Ôñʱ²Å¼ÓÔØ; ÕýÊýµÄֵԽС£¬Æô¶¯¸Ã servlet µÄÓÅÏȼ¶Ô½¸ß;

single thread model

ÿ´Î·ÃÎÊ servlet£¬Ð½¨ servlet ʵÌå¶ÔÏ󣬵«²¢²»Äܱ£Ö¤Ḭ̈߳²È«£¬Í¬Ê± tomcat »áÏÞÖÆ servlet µÄʵÀýÊýÄ¿ ×î¼Ñʵ¼ù£º²»ÒªÊ¹ÓøÃÄ£ÐÍ£¬servlet Öв»ÒªÓÐÈ«¾Ö±äÁ¿

**ÇëÇó´¦Àí¹ý³Ì  **

¸ù¾Ý server.xml ÅäÖõÄÖ¸¶¨µÄ connector ÒÔ¼°¶Ë¿Ú¼àÌý http¡¢»òÕß ajp ÇëÇó

ÇëÇóµ½À´Ê±½¨Á¢Á¬½Ó,½âÎöÇëÇó²ÎÊý,´´½¨ Request ºÍ Response ¶ÔÏó,µ÷Óö¥²ãÈÝÆ÷ pipeline µÄ invoke ·½·¨

ÈÝÆ÷Ö®¼ä²ã²ãµ÷ÓÃ,×îÖÕµ÷ÓÃÒµÎñ servlet µÄ service ·½·¨

Connector ½« response Á÷ÖеÄÊý¾Ýдµ½ socket ÖÐ

**Pipeline Óë Valve  **

Pipeline ¿ÉÒÔÀí½âΪÏÖʵÖеĹܵÀ,Valve Ϊ¹ÜµÀÖеķ§ÃÅ,Request ºÍ Response ¶ÔÏóÔڹܵÀÖÐ ¾­¹ý¸÷¸ö·§ÃŵĴ¦ÀíºÍ¿ØÖÆ¡£

ÿ¸öÈÝÆ÷µÄ¹ÜµÀÖж¼ÓÐÒ»¸ö±Ø²»¿ÉÉÙµÄ basic valve,ÆäËûµÄ¶¼ÊÇ¿ÉÑ¡µÄ,basic valve ÔڹܵÀÖÐ×î ºóµ÷ÓÃ,ͬʱ¸ºÔðµ÷ÓÃ×ÓÈÝÆ÷µÄµÚÒ»¸ö valve¡£

Valve ÖÐÖ÷ÒªµÄÈý¸ö·½·¨:setNext¡¢getNext¡¢invoke;valve Ö®¼äµÄ¹ØÏµÊǵ¥ÏòÁ´Ê½½á¹¹,±¾Éí invoke ·½·¨Öлáµ÷ÓÃÏÂÒ»¸ö valve µÄ invoke ·½·¨¡£

¸÷²ãÈÝÆ÷¶ÔÓ¦µÄ basic valve ·Ö±ðÊÇ StandardEngineValve¡¢StandardHostValve¡¢ StandardContextValve¡¢StandardWrapperValve¡£

JSP ÉúÃüÖÜÆÚ

±àÒë½×¶Î:servlet ÈÝÆ÷±àÒë servlet Ô´ÎÄ ¼þ,Éú³É servlet Àà

³õʼ»¯½×¶Î:¼ÓÔØÓë JSP ¶ÔÓ¦µÄ servlet Àà, ´´½¨ÆäʵÀý,²¢µ÷ÓÃËüµÄ³õʼ»¯·½·¨

Ö´Ðн׶Î:µ÷ÓÃÓë JSP ¶ÔÓ¦µÄ servlet ʵÀýµÄ ·þÎñ·½·¨

Ïú»Ù½×¶Î:µ÷ÓÃÓë JSP ¶ÔÓ¦µÄ servlet ʵÀýµÄ Ïú»Ù·½·¨,È»ºóÏú»Ù servlet ʵÀý

JSPÔªËØ ´úÂëÆ¬¶Î£º <% ´úÂëÆ¬¶Î %> JSPÉùÃ÷£º <%! declaration; [ declaration; ]+ ... %> JSP±í´ïʽ£º<%= ±í´ïʽ %> JSP×¢ÊÍ£º <%-- ×¢ÊÍ --%> JSPÖ¸Á <%@ directive attribute=¡°value¡± %> JSPÐÐΪ£º <jsp:action_name attribute=¡°value¡± /> HTMLÔªËØ£º html/head/body/div/p/¡­ JSPÒþʽ¶ÔÏó£ºrequest¡¢response¡¢out¡¢session¡¢application¡¢config¡¢ pageContext¡¢page¡¢Exception

**JSP ÔªËØËµÃ÷ ** ´úÂëÆ¬¶Î:°üº¬ÈÎÒâÁ¿µÄ Java Óï¾ä¡¢±äÁ¿¡¢·½·¨»ò±í´ïʽ; JSP ÉùÃ÷:Ò»¸öÉùÃ÷Óï¾ä¿ÉÒÔÉùÃ÷Ò»¸ö»ò¶à¸ö±äÁ¿¡¢·½·¨,¹©ºóÃæµÄ Java ´úÂëʹÓÃ; JSP ±í´ïʽ:Êä³ö Java ±í´ïʽµÄÖµ,String ÐÎʽ; JSP ×¢ÊÍ:Ϊ´úÂë×÷×¢ÊÍÒÔ¼°½«Ä³¶Î´úÂë×¢Ê͵ô JSP Ö¸Áî:ÓÃÀ´ÉèÖÃÓëÕû¸ö JSP Ò³ÃæÏà¹ØµÄÊôÐÔ, <%@ page ... %>¶¨ÒåÒ³ÃæµÄÒÀÀµÊôÐÔ,±ÈÈç language¡¢contentType¡¢errorPage¡¢ isErrorPage¡¢import¡¢isThreadSafe¡¢session µÈµÈ <%@ include ... %>°üº¬ÆäËûµÄ JSP Îļþ¡¢HTML Îļþ»òÎı¾Îļþ,ÊǸà JSP ÎļþµÄÒ»²¿·Ö,»á ±»Í¬Ê±±àÒëÖ´ÐÐ <%@ taglib ... %>ÒýÈë±êÇ©¿âµÄ¶¨Òå,¿ÉÒÔÊÇ×Ô¶¨Òå±êÇ© JSP ÐÐΪ:jsp:include¡¢jsp:useBean¡¢jsp:setProperty¡¢jsp:getProperty¡¢jsp:forward

**Jsp ½âÎö¹ý³Ì  **

´úÂëÆ¬¶Î:ÔÚ_jspService()·½·¨ÄÚÖ±½ÓÊä³ö

JSP ÉùÃ÷: ÔÚ servlet ÀàÖнøÐÐÊä³ö

JSP ±í´ïʽ:ÔÚ_jspService()·½·¨ÄÚÖ±½ÓÊä³ö

JSP ×¢ÊÍ:Ö±½ÓºöÂÔ,²»Êä³ö

JSP Ö¸Áî:¸ù¾Ý²»Í¬Ö¸Áî½øÐÐÇø·Ö,include:¶ÔÒýÈëµÄÎļþ½øÐнâÎö;page Ïà¹ØµÄÊôÐÔ»á×öΪ JSP µÄÊôÐÔ,Ó°ÏìµÄÊǽâÎöºÍÇëÇó´¦ÀíʱµÄÐÐΪ

JSP ÐÐΪ:²»Í¬µÄÐÐΪÓв»Í¬µÄ´¦Àí·½Ê½,jsp:useBean ΪÀý,»á´Ó pageContext ¸ù¾Ý scope µÄ Àà±ð»ñÈ¡ bean ¶ÔÏó,Èç¹ûûÓлᴴ½¨ bean,ͬʱ´æµ½ÏàÓ¦ scope µÄ pageContext ÖÐ

HTML:ÔÚ_jspService()·½·¨ÄÚÖ±½ÓÊä³ö

JSP Òþʽ¶ÔÏó:ÔÚ_jspService()·½·¨»á½øÐÐÉùÃ÷,Ö»ÄÜÔÚ·½·¨ÖÐʹÓÃ;

Connector

Http:HTTP Êdz¬Îı¾´«ÊäЭÒé,Êǿͻ§¶Ëä¯ÀÀÆ÷»òÆäËû³ÌÐòÓë Web ·þÎñÆ÷Ö®¼äµÄÓ¦ÓòãͨÐÅЭ Òé AJP:Apache JServ ЭÒé(AJP)ÊÇÒ»ÖÖ¶þ½øÖÆÐ­Òé,רÃÅ´úÀí´Ó Web ·þÎñÆ÷µ½Î»ÓÚºó¶ËµÄÓ¦Óà ³ÌÐò·þÎñÆ÷µÄÈëÕ¾ÇëÇó ×èÈû IO

·Ç×èÈû IO

** IO¶à·¸´ÓÃ**

×èÈûÓë·Ç×èÈûµÄÇø±ðÔÚÓÚ½øÐжÁ²Ù×÷ºÍд²Ù×÷µÄϵͳµ÷ÓÃʱ£¬Èç¹û´ËʱÄÚºË̬ûÓÐÊý¾Ý¿É¶Á»òÕßûÓлº³å¿Õ¼ä¿Éдʱ£¬ÊÇ·ñ×èÈû¡£

IO¶à·¸´Óõĺô¦ÔÚÓÚ¿Éͬʱ¼àÌý¶à¸ösocketµÄ¿É¶ÁºÍ¿Éдʼþ£¬ÕâÑù¾ÍÄÜʹµÃÓ¦ÓÿÉÒÔͬʱ¼àÌý¶à¸ösocket£¬ÊÍ·ÅÁËÓ¦ÓÃÏß³Ì×ÊÔ´¡£

Tomcat¸÷ÀàConnector¶Ô±È

ConnectorµÄʵÏÖģʽÓÐÈýÖÖ£¬·Ö±ðÊÇBIO¡¢NIO¡¢APR£¬¿ÉÒÔÔÚserver.xmlÖÐÖ¸¶¨¡£

JIO£ºÓÃjava.io±àдµÄTCPÄ£¿é£¬×èÈûIO

NIO£ºÓÃjava.nio±àдµÄTCPÄ£¿é£¬·Ç×èÈûIO£¬£¨IO¶à·¸´Óã©

APR£ºÈ«³ÆApache Portable Runtime£¬Ê¹ÓÃJNIµÄ·½Ê½À´½øÐжÁÈ¡ÎļþÒÔ¼°½øÐÐÍøÂç´«Êä

Apache Portable RuntimeÊÇÒ»¸ö¸ß¶È¿ÉÒÆÖ²µÄ¿â£¬ËüÊÇApache HTTP Server 2.xµÄºËÐÄ¡£ APR¾ßÓÐÐí¶àÓÃ;£¬°üÀ¨·ÃÎʸ߼¶IO¹¦ÄÜ£¨Èçsendfile£¬epollºÍOpenSSL£©£¬²Ù×÷ϵͳ¼¶¹¦ÄÜ£¨Ëæ»úÊýÉú³É£¬ÏµÍ³×´Ì¬µÈ£©ºÍ±¾µØ½ø³Ì´¦Àí£¨¹²ÏíÄڴ棬NT¹ÜµÀºÍUnixÌ×½Ó×Ö£©¡£

±í¸ñÖÐ×ֶκ¬Òå˵Ã÷£º

Support Polling£ºÊÇ·ñÖ§³Ö»ùÓÚIO¶à·¸´ÓõÄsocketʼþÂÖѯ

Polling Size£ºÂÖѯµÄ×î´óÁ¬½ÓÊý

Wait for next Request£ºÔڵȴýÏÂÒ»¸öÇëÇóʱ£¬´¦ÀíÏß³ÌÊÇ·ñÊÍ·Å£¬BIOÊÇûÓÐÊͷŵģ¬ËùÒÔÔÚkeep-alive=trueµÄÇé¿öÏ´¦ÀíµÄ²¢·¢Á¬½ÓÊýÓÐÏÞ

Read Request Headers£ºÓÉÓÚrequest headerÊý¾Ý½ÏÉÙ£¬¿ÉÒÔÓÉÈÝÆ÷Ìáǰ½âÎöÍê±Ï£¬²»ÐèÒª×èÈû

Read Request Body£º¶ÁÈ¡request bodyµÄÊý¾ÝÊÇÓ¦ÓÃÒµÎñÂß¼­µÄÊÂÇ飬ͬʱServletµÄÏÞÖÆ£¬ÊÇÐèÒª×èÈû¶ÁÈ¡µÄ

Write Response£º¸ú¶ÁÈ¡request bodyµÄÂß¼­ÀàËÆ£¬Í¬ÑùÐèÒª×èÈûд

NIO´¦ÀíÏà¹ØÀà

AcceptorÏ̸߳ºÔð½ÓÊÕÁ¬½Ó£¬µ÷ÓÃaccept·½·¨×èÈû½ÓÊÕ½¨Á¢µÄÁ¬½Ó£¬²¢¶Ôsocket½øÐзâ×°³ÉPollerEvent£¬Ö¸¶¨×¢²áµÄʼþΪop_read£¬²¢·ÅÈëµ½EventQueue¶ÓÁÐÖУ¬PollerEventµÄrun·½·¨Âß¼­µÄÊǽ«Selector×¢²áµ½socketµÄÖ¸¶¨Ê¼þ£»

PollerÏ̴߳ÓEventQueue»ñÈ¡PollerEvent£¬²¢Ö´ÐÐPollerEventµÄrun·½·¨£¬µ÷ÓÃSelectorµÄselect·½·¨£¬Èç¹ûÓпɶÁµÄSocketÔò´´½¨Http11NioProcessor£¬·ÅÈëµ½Ï̳߳ØÖÐÖ´ÐУ»

CoyoteAdapterÊÇConnectorµ½ContainerµÄÊÊÅäÆ÷£¬Http11NioProcessorµ÷ÓÃÆäÌṩµÄservice·½·¨£¬ÄÚ²¿´´½¨RequestºÍResponse¶ÔÏ󣬲¢µ÷ÓÃ×î¶¥²ãÈÝÆ÷µÄPipelineÖеĵÚÒ»¸öValveµÄinvoke·½·¨

MapperÖ÷Òª´¦Àíhttp url µ½servletµÄÓ³É乿ÔòµÄ½âÎö£¬¶ÔÍâÌṩmap·½·¨

NIO ConnectorÖ÷Òª²ÎÊý

Comet

CometÊÇÒ»ÖÖÓÃÓÚwebµÄÍÆËͼ¼Êõ£¬ÄÜʹ·þÎñÆ÷ʵʱµØ½«¸üеÄÐÅÏ¢´«Ë͵½¿Í»§¶Ë£¬¶øÎÞÐë¿Í»§¶Ë·¢³öÇëÇó ÔÚWebSocket³öÀ´Ö®Ç°£¬Èç¹û²»Ê¹ÓÃcomet£¬Ö»ÄÜͨ¹ýä¯ÀÀÆ÷¶ËÂÖѯServerÀ´Ä£ÄâʵÏÖ·þÎñÆ÷¶ËÍÆËÍ¡£ CometÖ§³ÖservletÒì²½´¦ÀíIO£¬µ±Á¬½ÓÉÏÊý¾Ý¿É¶Áʱ´¥·¢Ê¼þ£¬²¢Ò첽дÊý¾Ý(×èÈû)

TomcatҪʵÏÖComet£¬Ö»Ðè¼Ì³ÐHttpServletͬʱ£¬ÊµÏÖCometProcessor½Ó¿Ú

Begin£ºÐµÄÇëÇóÁ¬½Ó½ÓÈëµ÷Ó㬿ɽøÐÐÓëRequestºÍResponseÏà¹ØµÄ¶ÔÏó³õʼ»¯²Ù×÷£¬²¢±£´æresponse¶ÔÏó£¬ÓÃÓÚºóÐøÐ´ÈëÊý¾Ý

Read£ºÇëÇóÁ¬½ÓÓÐÊý¾Ý¿É¶Áʱµ÷ÓÃ

End£ºµ±Êý¾Ý¿ÉÓÃʱ£¬Èç¹û¶ÁÈ¡µ½Îļþ½áÊø»òÕßresponse±»¹Ø±ÕʱÔò±»µ÷ÓÃ

Error£ºÔÚÁ¬½ÓÉÏ·¢ÉúÒ쳣ʱµ÷Óã¬Êý¾Ý¶ÁÈ¡Òì³£¡¢Á¬½Ó¶Ï¿ª¡¢´¦ÀíÒì³£¡¢socket³¬Ê±

Note£º

Read£ºÔÚpostÇëÇóÓÐÊý¾Ý£¬µ«ÔÚbeginʼþÖÐûÓд¦Àí£¬Ôò»áµ÷ÓÃread£¬Èç¹ûreadûÓжÁÈ¡Êý¾Ý£¬Ôڻᴥ·¢Error»Øµ÷£¬¹Ø±Õsocket

End£ºµ±socket³¬Ê±£¬²¢ÇÒresponse±»¹Ø±ÕʱҲ»áµ÷Óã»server±»¹Ø±Õʱµ÷ÓÃ

Error£º³ýÁËsocket³¬Ê±²»»á¹Ø±Õsocket£¬ÆäËû¶¼»á¹Ø±Õsocket

EndºÍErrorʱ¼ä´¥·¢Ê±Ó¦¹Ø±Õµ±Ç°comet»á»°£¬¼´µ÷ÓÃCometEventµÄclose·½·¨ Note£ºÔÚʼþ´¥·¢Ê±Òª×öºÃḬ̈߳²È«µÄ²Ù×÷

Òì²½Servlet

´«Í³Á÷³Ì£º

Ê×ÏÈ£¬Servlet ½ÓÊÕµ½ÇëÇóÖ®ºó£¬requestÊý¾Ý½âÎö£»

½Ó×Å£¬µ÷ÓÃÒµÎñ½Ó¿ÚµÄijЩ·½·¨£¬ÒÔÍê³ÉÒµÎñ´¦Àí£»

×îºó£¬¸ù¾Ý´¦ÀíµÄ½á¹ûÌá½»ÏìÓ¦£¬Servlet Ï߳̽áÊø

Òì²½´¦ÀíÁ÷³Ì£º

¿Í»§¶Ë·¢ËÍÒ»¸öÇëÇó

ServletÈÝÆ÷·ÖÅäÒ»¸öÏß³ÌÀ´´¦ÀíÈÝÆ÷ÖеÄÒ»¸öservlet

servletµ÷ÓÃrequest.startAsync()£¬±£´æAsyncContext, È»ºó·µ»Ø

Èκη½Ê½´æÔÚµÄÈÝÆ÷Ï̶߳¼½«Í˳ö£¬µ«ÊÇresponseÈÔÈ»±£³Ö¿ª·Å

ÒµÎñÏß³ÌʹÓñ£´æµÄAsyncContextÀ´Íê³ÉÏìÓ¦£¨Ï̳߳أ©

¿Í»§¶ËÊÕµ½ÏìÓ¦

Servlet Ï߳̽«ÇëÇóת½»¸øÒ»¸öÒì²½Ïß³ÌÀ´Ö´ÐÐÒµÎñ´¦Àí£¬Ï̱߳¾Éí·µ»ØÖÁÈÝÆ÷£¬´Ëʱ Servlet »¹Ã»ÓÐÉú³ÉÏìÓ¦Êý¾Ý£¬Òì²½Ï̴߳¦ÀíÍêÒµÎñÒԺ󣬿ÉÒÔÖ±½ÓÉú³ÉÏìÓ¦Êý¾Ý£¨Òì²½Ïß³ÌÓµÓÐ ServletRequest ºÍ ServletResponse ¶ÔÏóµÄÒýÓã©

ΪʲôwebÓ¦ÓÃÖÐÖ§³ÖÒì²½£¿

ÍÆ³öÒì²½£¬Ö÷ÒªÊÇÕë¶ÔÄÇЩ±È½ÏºÄʱµÄÇëÇ󣺱ÈÈçÒ»´Î»ºÂýµÄÊý¾Ý¿â²éѯ£¬Ò»´ÎÍⲿREST APIµ÷ÓÃ, »òÕßÊÇÆäËûһЩI/OÃܼ¯ÐͲÙ×÷¡£ÕâÖÖºÄʱµÄÇëÇó»áºÜ¿ìµÄºÄ¹âServletÈÝÆ÷µÄÏ̳߳أ¬¼Ì¶øÓ°Ïì¿ÉÀ©Õ¹ÐÔ¡£

Note£º´Ó¿Í»§¶ËµÄ½Ç¶ÈÀ´¿´£¬requestÈÔÈ»ÏñÈÎºÎÆäËûµÄHTTPµÄrequest-response½»»¥Ò»Ñù£¬Ö»ÊǺķÑÁ˸ü³¤µÄʱ¼ä¶øÒÑ

Ò첽ʼþ¼àÌý

onStartAsync£ºRequestµ÷ÓÃstartAsync·½·¨Ê±´¥·¢

onComplete£ºsyncContextµ÷ÓÃcomplete·½·¨Ê±´¥·¢

onError£º´¦ÀíÇëÇóµÄ¹ý³Ì³öÏÖÒ쳣ʱ´¥·¢

onTimeout£ºsocket³¬Ê±´¥·¢

Note : onError/ onTimeout´¥·¢ºó£¬»á½ô½Óׯص÷onComplete onComplete Ö´Ðк󣬾Ͳ»¿ÉÔÙ²Ù×÷requestºÍresponse

 
   
2045 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]
 
×îÐÂÎÄÕÂ
JavaÐéÄâ»ú¼Ü¹¹
JVM¡ª¡ªJavaÐéÄâ»ú¼Ü¹¹
JavaÈÝÆ÷Ïê½â
Java½ø½×--ÉîÈëÀí½âArrayListʵÏÖÔ­Àí
Java²¢·¢ÈÝÆ÷£¬µ×²ãÔ­ÀíÉîÈë·ÖÎö
×îпγÌ
java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
SpringBoot&Cloud¡¢JavaSSM¿ò¼Ü
Spring Boot Åàѵ
³É¹¦°¸Àý
¹úÄÚÖªÃûÒøÐÐ Spring+SpringBoot+Cloud+MVC
±±¾© Java±à³Ì»ù´¡ÓëÍøÒ³¿ª·¢»ù´¡
±±¾© Struts+Spring
»ªÏÄ»ù½ð ActiveMQ Ô­Àí
ijÃñº½¹« Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢