Apache Tomcat คือ ตอนที่ 6 : Connectors คืออะไร

  1. Tomcat Connectors คืออะไร
  2. การกำหนดค่าตัวเชื่อมต่อ Tomcat
  3. การทำแอพด้วย Tomcat Connectors
  4. การทำแอพอย่างง่าย

Apache Tomcat คือการใช้งานโอเพ่นซอร์สที่มีชื่อเสียงของ Java Servlet, JavaServer Pages (JSP), Java Unified Expression Language และเทคโนโลยี WebSocket มีสภาพแวดล้อมที่แข็งแกร่งและปรับขนาดได้สำหรับการรันการทำแอพ Java ส่วนสำคัญของ Apache Tomcat ที่อนุญาตให้ให้บริการคำขอและเรียกใช้แอปพลิเคชันคือตัวเชื่อมต่อ บทความนี้จะเจาะลึกเพื่อทำความเข้าใจตัวเชื่อมต่อ Apache Tomcat วิธีกำหนดค่าและวิธีโต้ตอบกับการทำแอพ

1. Tomcat Connectors คืออะไร

ใน Apache Tomcat ตัวเชื่อมต่อแสดงถึงจุดสิ้นสุดที่รับคำขอและตอบกลับ โดยพื้นฐานแล้วมันเป็นส่วนประกอบที่ช่วยให้สามารถสื่อสารระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ได้ Apache Tomcat มีตัวเชื่อมต่อที่หลากหลาย โดยตัวเชื่อมต่อที่ใช้บ่อยที่สุดคือ HTTP และ AJP (Apache JServ Protocol)

ตัวเชื่อมต่อ HTTP หรือที่เรียกว่าตัวเชื่อมต่อ Coyote HTTP/1.1 ใช้ความสามารถในตัวของ Java เพื่อให้การสนับสนุนโปรโตคอล HTTP/1.1 โดยจะรับฟังการเชื่อมต่อ TCP ขาเข้าบนที่อยู่ IP และพอร์ตเฉพาะ ประมวลผลคำขอ HTTP ที่เข้ามา และตอบสนองแบบฟอร์ม

ในทางกลับกัน AJP Connector ซึ่งมักเรียกกันว่า Coyote JK หรือ AJP/1.3 Connector จะใช้รูปแบบไบนารีของ HTTP ที่ได้รับการปรับให้เหมาะสมสำหรับการโต้ตอบระหว่าง Tomcat และ Apache HTTP Server สิ่งนี้มีประโยชน์สำหรับการรวม Tomcat เข้ากับสภาพแวดล้อมเว็บเซิร์ฟเวอร์ที่มีอยู่ โดยที่ Apache หรือเซิร์ฟเวอร์อื่นจัดการเนื้อหาแบบสแตติก และ Tomcat จัดการเนื้อหาไดนามิกของเซิร์ฟเล็ตและ JSP

2. การกำหนดค่าตัวเชื่อมต่อ Tomcat

การกำหนดค่าตัวเชื่อมต่อ Tomcat ทำใน server.xml ไฟล์ที่อยู่ใน conf ไดเร็กทอรี เป็นหลัก ตัวเชื่อมต่อแต่ละตัวได้รับการกำหนดค่าภายในองค์ประกอบ <Connector> ตัวเชื่อมต่อ HTTP ทั่วไปอาจมีลักษณะดังนี้:

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

แอตทริบิวต์ port ระบุพอร์ตที่ตัวเชื่อมต่อจะรับฟังคำขอ protocolระบุโปรโตคอลที่จะใช้ (HTTP/1.1 ที่นี่) แอตทริบิวต์ connectionTimeout คือจำนวนมิลลิวินาทีที่ตัวเชื่อมต่อนี้จะรอ หลังจากยอมรับการเชื่อมต่อ เพื่อให้แสดงบรรทัด URI คำขอ คือ redirectPort หมายเลขพอร์ตที่คำขอควรเปลี่ยนเส้นทางหากมาในพอร์ตที่ไม่ใช่ SSL และอยู่ภายใต้ข้อจำกัดด้านความปลอดภัยที่มีการรับประกันการขนส่งที่ต้องใช้ SSL

การกำหนดค่าตัวเชื่อมต่อ AJP มีลักษณะคล้ายกัน:

<Connector protocol="AJP/1.3" port="8009" redirectPort="8443" />

ตัวเชื่อมต่อประเภทต่างๆ มีแอตทริบิวต์เพิ่มเติมมากมายที่คุณสามารถใช้เพื่อปรับแต่งประสิทธิภาพหรือความปลอดภัย

3. การทำแอพด้วย Tomcat Connectors

ในขณะที่ทำเว็บแอปพลิเคชันเพื่อใช้งานบน Tomcat เราจำเป็นต้องทราบตัวเชื่อมต่อที่กำหนดค่าไว้บนเซิร์ฟเวอร์ เนื่องจากประเภทและการกำหนดค่าของตัวเชื่อมต่ออาจส่งผลต่อลักษณะการทำงาน ประสิทธิภาพ และความปลอดภัยของการทำแอพ

ตัวอย่างเช่น โปรโตคอลและพอร์ตของตัวเชื่อมต่อจะกำหนดวิธีที่ไคลเอนต์จะสื่อสารกับแอปพลิเคชันของคุณ หากคุณกำลังทำแอพที่มีไว้สำหรับการสื่อสาร HTTP บนพอร์ต 8080 คุณควรตรวจสอบให้แน่ใจว่ามีตัวเชื่อมต่อ HTTP ที่กำหนดค่าไว้พร้อมกับพอร์ตนั้น หากไคลเอ็นต์พยายามเชื่อมต่อกับแอปพลิเคชันของคุณผ่านโปรโตคอลหรือพอร์ตอื่น การเชื่อมต่อจะล้มเหลว

การทำแอพด้วยตัวเชื่อมต่อที่ใช้ HTTPS ที่ปลอดภัยจำเป็นต้องมีขั้นตอนเพิ่มเติม เช่น การได้รับใบรับรอง SSL การกำหนดค่าตัวเชื่อมต่อสำหรับ SSL/TLS และการแก้ไขไฟล์ web.xml ของแอปพลิเคชันเพื่อให้ต้องมีการเชื่อมต่อที่ปลอดภัย

พิจารณาแอปพลิเคชันที่โต้ตอบกับฐานข้อมูล คุณอาจถูกล่อลวงให้เชื่อมต่อฐานข้อมูลและเคียวรีภายใน doGet() หรือ doPost() เมธอดของเซิร์ฟเล็ตของคุณ อย่างไรก็ตาม วิธีการนี้จะสร้างการเชื่อมต่อใหม่สำหรับทุกคำขอ ซึ่งอาจส่งผลกระทบอย่างมากต่อประสิทธิภาพการทำงาน ด้วยการทำความเข้าใจตัวเชื่อมต่อและการจัดการคำขอ คุณสามารถออกแบบแอปพลิเคชันที่ใช้การรวมการเชื่อมต่อเพื่อรักษากลุ่มของการเชื่อมต่อฐานข้อมูล

4. การทำแอพอย่างง่าย

มาทำเว็บแอปพลิเคชันอย่างง่ายโดยใช้ Servlet และ JSP และปรับใช้บน Tomcat เพื่อทำความเข้าใจว่าตัวเชื่อมต่อที่กำหนดค่าไว้รับคำขออย่างไร และการตอบสนองถูกส่งไปยังไคลเอ็นต์อย่างไร

สำหรับสิ่งนี้ เราจะใช้แอปพลิเคชันการเข้าสู่ระบบอย่างง่าย แอปพลิเคชันของเราจะมีหน้าเข้าสู่ระบบที่ผู้ใช้ป้อนชื่อผู้ใช้และรหัสผ่าน หากรายละเอียดที่ป้อนถูกต้อง ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าต้อนรับ มิฉะนั้นพวกเขาจะเห็นหน้าแสดงข้อผิดพลาด

โครงสร้างโครงการของเราจะมีลักษณะดังนี้:

-- LoginApp
   |-- WEB-INF
       |-- web.xml
       |-- classes
           |-- LoginServlet.java
   |-- login.jsp
   |-- welcome.jsp
   |-- error.jsp

ไฟล์ login.jsp ประกอบด้วยแบบฟอร์มที่ผู้ใช้จะกรอก:

<form action="LoginServlet" method="post">
    Username: <input type="text" name="username"><br>
    Password: <input type="password" name="password"><br>
    <input type="submit" value="Login">
</form>

เมื่อส่งแบบฟอร์มแล้ว คำขอจะถูกส่งไปที่ LoginServlet นี่คือโค้ดเซิร์ฟเล็ต:

@WebServlet("/LoginServlet")
public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        
        if (username.equals("admin") && password.equals("password")) {
            RequestDispatcher rd = request.getRequestDispatcher("welcome.jsp");
            rd.forward(request, response);
        } else {
            RequestDispatcher rd = request.getRequestDispatcher("error.jsp");
            rd.include(request, response);
        }
    }
}

ไฟล์ welcome.jspand error.jsp มีข้อความที่ผู้ใช้จะเห็นหลังจากเซิร์ฟเล็ตประมวลผลการส่งแบบฟอร์ม

หลังจากสร้างแอปพลิเคชันเป็นไฟล์ WAR (Web ARchive) และปรับใช้บนเซิร์ฟเวอร์ Tomcat คุณจะสามารถเข้าถึงได้ผ่าน http://localhost:8080/LoginApp/login.jsp โดยสมมติว่าตัวเชื่อมต่อของคุณได้รับการตั้งค่าสำหรับโปรโตคอล HTTP บนพอร์ต 8080


ตัวเชื่อมต่อของ Apache Tomcat เป็นส่วนสำคัญของสถาปัตยกรรม ทำให้สามารถสื่อสารกับแอปพลิเคชันไคลเอ็นต์และส่งมอบเนื้อหาแบบไดนามิกได้ เมื่อเข้าใจบทบาทของตัวเชื่อมต่อและวิธีกำหนดค่า คุณจะสามารถใช้ประโยชน์จากคุณลักษณะเพื่อทำแอพและปรับแต่งแอปพลิเคชัน Java ของคุณได้ การทำความเข้าใจตัวเชื่อมต่อไม่ได้เกี่ยวกับการตั้งค่าเซิร์ฟเวอร์เท่านั้น แต่ยังเกี่ยวกับการตระหนักถึงสภาพแวดล้อมเซิร์ฟเวอร์ของคุณเมื่อทำแอพ และยังเกี่ยวกับความสามารถในการวินิจฉัยปัญหาและคอขวดด้านประสิทธิภาพเมื่อเกิดขึ้น


Apache Tomcat คืออะไร

Apache Tomcat คือ ตอนที่ 5 : ความปลอดภัย (Security)
Apache Tomcat คือ ตอนที่ 7 : การบันทึก (Logging) และการแก้ไขปัญหา (Troubleshooting)