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

  1. การบันทึก (Logging) Tomcat
    1.1 ทำความเข้าใจการกำหนดค่าการบันทึกของ Tomcat
    1.2 ใช้ Log4j แทน JULI
  2. การแก้ไขปัญหา (Troubleshooting) Apache Tomcat
    2.1 Tomcat ไม่สามารถเริ่มต้นได้ (Fails to Start)
    2.2 OutOfMemoryError
    2.3 การใช้งาน CPU สูง
  3. การทำแอพใน Apache Tomcat

Apache Tomcat เป็นที่รู้จักในด้านการนำข้อกำหนด Java EE หลายข้อไปใช้ เป็นเว็บเซิร์ฟเวอร์โอเพ่นซอร์สและคอนเทนเนอร์เซิร์ฟเล็ตที่ใช้กันอย่างแพร่หลาย ในบทความนี้ เราจะเจาะลึกประเด็นสำคัญบางประการของ Tomcat: การบันทึก การแก้ไขปัญหา และการทำแอพ

1. การบันทึก (Logging) Tomcat

Tomcat ใช้ JULI (Java Unified Logging Interface) ซึ่งเป็นยูทิลิตี้การบันทึกมาตรฐานของ Java รุ่นแก้ไข java.util.logging (JUL) JULI ปรับปรุงความสามารถในการบันทึกของ Tomcat ทำให้สามารถจัดการบันทึกที่ซับซ้อนยิ่งขึ้น แอปพลิเคชันบนเว็บแต่ละรายการสามารถมีชุดไฟล์บันทึกของตัวเองและลักษณะการบันทึกเฉพาะบุคคลได้

1.1 ทำความเข้าใจการกำหนดค่าการบันทึกของ Tomcat

ไฟล์การกำหนดค่าการบันทึกหลักของ Tomcat คือlogging.propertiesไฟล์ในไดเร็กทอรี /conf ไฟล์นี้สรุปตัวจัดการบันทึก (ซึ่งกำหนดว่าข้อมูลบันทึกควรไปอยู่ที่ใด) และตัวบันทึก (ซึ่งจัดการการผลิตรายการบันทึก)

ตัวอย่างเช่น ตัวจัดการทั่วไปคือ java.util.logging.ConsoleHandler ซึ่งนำบันทึกไปยังคอนโซล ในทางกลับกัน คนบันทึกมักจะตั้งชื่อตามแพ็คเกจ Java ที่จัดการบันทึก ตัวอย่างเช่น org.apache.catalina.core.ContainerBase.[Catalina].[localhost] เป็นคนตัดไม้สำหรับคลาสที่มีชื่อ

1.2 ใช้ Log4j แทน JULI

แม้ว่า JULI จะให้บริการผู้ใช้ส่วนใหญ่อย่างเพียงพอ แต่นักพัฒนาบางรายชอบ Log4j มากกว่าสำหรับตัวเลือกการกำหนดค่าเพิ่มเติม หากต้องการใช้ Log4j ใน Tomcat คุณจะต้องแทนที่ JULI อัปเดตไฟล์ logging.properties หรือสร้างไฟล์ log4j.properties และเพิ่มไฟล์ Log4j JAR ที่จำเป็นลงในไลบรารีของคุณ

2. การแก้ไขปัญหา (Troubleshooting) Apache Tomcat

แม้จะมีระบบที่แข็งแกร่งเช่น Apache Tomcat คุณอาจพบปัญหาในบางครั้ง ต่อไปนี้คือปัญหาทั่วไปและแนวทางแก้ไขที่เป็นไปได้:

2.1 Tomcat ไม่สามารถเริ่มต้นได้ (Fails to Start)

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

2.2 OutOfMemoryError

โดยทั่วไป OutOfMemoryError หมายถึงแอปพลิเคชันของคุณกำลังจัดการคำขอมากกว่าที่จะจัดการได้ หรือมีหน่วยความจำรั่ว ใช้ Java profiler เพื่อช่วยระบุการรั่วไหลที่อาจเกิดขึ้น หากเซิร์ฟเวอร์ทำงานหนักเกินไป ให้พิจารณาเพิ่ม RAM ปรับใช้โหลดบาลานซ์ หรือปรับโค้ดของคุณให้เหมาะสม

2.3 การใช้งาน CPU สูง

การใช้งาน CPU สูงอาจหมายความว่าเธรดหรือกระบวนการเฉพาะภายในแอปพลิเคชันของคุณใช้ทรัพยากรมากกว่าที่คาดไว้ เครื่องมือเช่น Java profiler หรือเครื่องมือ Java VisualVM สามารถช่วยระบุเธรดที่ละเมิดได้

3. การทำแอพใน Apache Tomcat

การทำเว็บแอปพลิเคชันใน Tomcat เกี่ยวข้องกับการออกแบบแอปพลิเคชันที่ใช้ Java Servlets, JavaServer Pages (JSPs) หรือทั้งสองอย่างรวมกัน

3.1 การตั้งค่าสภาพแวดล้อมการพัฒนาของคุณ

ในการทำเว็บแอปพลิเคชันสำหรับ Tomcat คุณต้องใช้ Java Development Kit (JDK) และสภาพแวดล้อมการทำแอพหรือโปรแกรมแก้ไขข้อความ Eclipse และ IntelliJ IDEA เป็นสองตัวเลือกยอดนิยมพร้อมการรองรับ Tomcat ในตัว

3.2 การสร้างเซิร์ฟเล็ต (Servlet)

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

นี่คือตัวอย่างง่ายๆ ของ Servlet “Hello, World”:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorldServlet extends HttpServlet {
 
  public void doGet(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {
    PrintWriter out = response.getWriter();
    out.println("Hello, World!");
  }
}

3.3 การสร้าง JavaServer Page (JSP)

JSP คล้ายกับเซิร์ฟเล็ต แต่สามารถเขียนได้เหมือนหน้า HTML มาตรฐานที่มีโค้ด Java ฝังอยู่ นี่คือตัวอย่างของ JSP “Hello, World”:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Hello World JSP Page</title>
</head>
<body>
<%= "Hello, World!" %>
</body>
</html>

3.4 การทำแอพและปรับใช้แอปพลิเคชันของคุณ

เมื่อคุณสร้าง Servlets และ/หรือ JSP แล้ว คุณต้องคอมไพล์เป็นไฟล์ .war (Web Application Archive) จากนั้นไฟล์นี้จะถูกปรับใช้กับ Tomcat โดยวางไว้ในไดเร็กทอรี webapps หรือโดยใช้แอปพลิเคชัน Tomcat Manager


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


Apache Tomcat คืออะไร

Apache Tomcat คือ ตอนที่ 6 : Connectors คืออะไร
Apache Tomcat คือ ตอนที่ 8 : ความสามารถขั้นสูง