1. การปรับแต่งสปริงบูตและการเพิ่มประสิทธิภาพของภาชนะบรรจุ Tomcat ในตัว
> มีตู้คอนเทนเนอร์ในตัวสามตัวคือ undertow, Jetty, Tomcat และ Spring Boot คอนเทนเนอร์ทั้งสามนี้ถูกนำไปใช้แยกกัน อินเทอร์เฟซด้านบนคือ EmbeddedServletContainerFactory ซึ่งเป็นแกนหลักหลักของบทความนี้
มีสองวิธีหลักในการปรับแต่งและเพิ่มประสิทธิภาพคอนเทนเนอร์ในตัว วิธีแรกคือการกำหนดค่าผ่านไฟล์การกำหนดค่าและวิธีอื่นคือรหัสรหัส ถัดไปสองวิธีข้างต้นส่วนใหญ่จะถูกนำไปใช้
2. ปรับแต่งและเพิ่มประสิทธิภาพ Tomcat ผ่านไฟล์การกำหนดค่า
> สำหรับเนื้อหาหลักของการกำหนดค่าโปรดดูที่ org.springframework.boot.autoconfigure.web.serverproperties คลาสคุณลักษณะ ต่อไปนี้แสดงการกำหนดค่าบางอย่างของ Tomcat
เซิร์ฟเวอร์: พอร์ต: 8081 # tomcat set tomcat: accesslog: # เปิดใช้งานการเข้าถึงบันทึกการเข้าถึง: จริง # บันทึกการบันทึกไดเรกทอรีพา ธ : e:/tmp/logs
สำหรับเนื้อหาการกำหนดค่าเพิ่มเติมโปรดดูคุณสมบัติในตัวของ org.springframework.boot.autoconfigure.web.serverproperties คลาส
3. ใช้การกำหนดค่าและการเพิ่มประสิทธิภาพของคอนเทนเนอร์ในตัวผ่านรหัสรหัส
> มีสองวิธีในการแสดงการเพิ่มประสิทธิภาพคอนเทนเนอร์ในตัวและการปรับแต่งโดยใช้รหัส สิ่งแรกคือการใช้งาน conticretizer คอนเทนเนอร์ servlet ในตัว (org.springframework.boot.context.embedded.embeddedservletContainerCustomizer) และส่งมอบการจัดการคอนเทนเนอร์สปริง อีกอย่างคือการกำหนดค่าคลาสการใช้งานอินเตอร์เฟส EmbeddedServletContainerFactory ในคอนเทนเนอร์สปริง ที่นี่เราตั้งเป้าหมายไว้ที่ Tomcat ในตัวนั่นคือคลาส tomcatembeddedservletContainerFactory
3.1. วิธีแรกคือการใช้อินเทอร์เฟซ EmbeddedServletContainerCustomizer และส่งมอบให้กับการจัดการคอนเทนเนอร์สปริง
@componentpublic คลาส MyembeddedServletContainerCustomizer ใช้งาน EmbeddedServletContainerCustomizer {@Override โมฆะสาธารณะปรับแต่ง (กำหนดค่าที่กำหนดค่าได้ Tomcat Container System.out.println (container.getClass ()); TomcatembeddedservletContainerFactory โรงงาน = (tomcatembeddedservletContainerFactory); // ตั้งค่า Port Factory.Setport (8088); // ตั้งค่า Tomcat Root Directory Factory.SetBasedIrectory (ไฟล์ใหม่ ("D:/TMP/TOMCAT")); // ตั้งค่า Access Log Storage Directory.AddContextValves (getLogAccessLogValue ()); // ตั้งเธรด Tomcat และการเชื่อมต่อโรงงาน AddConnectorCustomizers (ใหม่ MyTomCatConnectorCustomizer ()); // เริ่มต้นโรงงาน Object ServletContext.AdDinitializers ((servletContext) -> {system.out.println ("= = = = รับข้อมูลเซิร์ฟเวอร์ = =" + servletContext.getServerInfo ());}); } Private AccessLogValve GetLogAccessLogValue () {AccessLogValve AccessLogValve = ใหม่ AccessLogValve (); AccessLogValve.SetDirectory ("D:/TMP/TOMCAT/LOGS"); AccessLogValve.setEnabled (จริง); AccessLogValve.SetPattern (ค่าคงที่. AccessLog.Common_Pattern); AccessLogValve.SetPrefix ("SpringBoot-Access-Log"); Accesslogvalve.setsuffix (". txt"); return AccessLogvalve; }}/*** ปรับแต่งจำนวนการเชื่อมต่อและเธรดของ tomcat*/คลาส mytomcatconnectorcustomizer ใช้ tomcatconnectorcustomizer {@Override โมฆะสาธารณะปรับแต่ง // การเชื่อมต่อโปรโตคอลโปรเซสเซอร์ org.apache.coyote.http11.http11nioprotocol system.out.println (connector.getProtocolHandler (). getClass ()); // http11nioprotocol http11nioprotocol protocolhandler = (http11nioprotocol) connector.getprotocolhandler (); // ตั้งค่าจำนวนสูงสุดของการเชื่อมต่อ ProtocolHandler.SetMaxConnections (2000); // ตั้งค่าจำนวนสูงสุดของเธรด ProtocolHandler.SetMaxThreads (500); -3.1. กำหนดค่าคลาสการใช้งาน EmbeddedServletContainerFactory ในคอนเทนเนอร์ฤดูใบไม้ผลิ
@SpringBootConfigurationPublic คลาส WebServerConfiguration {@Bean Public EmbeddedServletContainerFactory EmbeddedServletContainerFactory () {tomcatembeddedservletContainerFactory = ใหม่ // ตั้งค่า Port Factory.Setport (8089); // ตั้งค่า 404 ข้อผิดพลาดอินเตอร์เฟส Factory.AdderRorPages (ใหม่ข้อผิดพลาดหน้า (httpstatus.not_found, "/404.html")); // ตั้งค่า factory.addinitializers ((servletContext) -> {system.out.println ("= = = = รับข้อมูลเซิร์ฟเวอร์ = =" + servletContext.getServerInfo ());}); // ตั้งค่าจำนวนสูงสุดของการเชื่อมต่อและจำนวนสูงสุดของ Threads Factory.AddConnectorCustomizers ((ตัวเชื่อมต่อ) -> {http11Nioprotocol โปรโตคอล hHandler = (http11nioprotocol) connection.getprotocolhandler () - // ตั้งค่าไดเรกทอรีที่ไฟล์การบันทึกถูกเข้าถึงโรงงาน AddContextValves (getLogAccessLogValue ()); โรงงานกลับมา; } Private AccessLogValve GetLogAccessLogValue () {AccessLogValve AccessLogValve = ใหม่ AccessLogValve (); AccessLogValve.SetDirectory ("D:/TMP/LOGS"); AccessLogValve.setEnabled (จริง); AccessLogValve.SetPattern (ค่าคงที่. AccessLog.Common_Pattern); AccessLogValve.SetPrefix ("SpringBoot-Access-Log"); Accesslogvalve.setsuffix (". txt"); return AccessLogvalve; -4. สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดของตัวอย่างคอนเทนเนอร์ Tomcat ในตัวของการปรับแต่งการบูตสปริงและการเพิ่มประสิทธิภาพที่แนะนำให้คุณรู้จัก ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับคุณทันเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!