Apache Derby Bài 21: Khởi động và dừng Derby Network Server qua giao diện dòng lệnh
1. Bản chất của Network Server Mode
Ở phần trước, chúng ta đã chạy Derby theo cơ chế Embedded (Nhúng), nơi cơ sở dữ liệu bị khóa chặt vào một tiến trình (JVM) duy nhất. Nếu bạn có một hệ thống yêu cầu nhiều ứng dụng (như Web Backend, Desktop App, và công cụ quản trị GUI) cần đọc/ghi dữ liệu cùng lúc, cơ chế Embedded sẽ lập tức ném ra lỗi Database Locked (XJ040).
Network Server Mode giải quyết bài toán này. Derby sẽ được khởi động như một dịch vụ máy chủ độc lập (standalone server) chạy trên một tiến trình JVM riêng. Máy chủ này mở một cổng TCP/IP và lắng nghe các kết nối từ nhiều Client (khách) gửi tới qua giao thức DRDA, tương tự như cách MySQL hay PostgreSQL hoạt động.
2. Lệnh khởi động máy chủ (startNetworkServer)
Đảm bảo bạn đã cấu hình biến môi trường DERBY_HOME và thư mục bin (đã thực hiện ở Bài 04). Mở một cửa sổ Terminal (hoặc Command Prompt) hoàn toàn mới.
Khởi động với cấu hình mặc định
Nhập lệnh sau và nhấn Enter:
Bash
startNetworkServer
Kết quả màn hình (Console Output):
Plaintext
Security manager installed using the Basic server security policy.
Apache Derby Network Server - 10.17.1.0 - (1908030) started and ready to accept connections on port 1527
Theo mặc định, máy chủ Derby sẽ lắng nghe ở cổng 1527 và chỉ chấp nhận kết nối từ localhost (127.0.0.1). Các máy tính khác trong mạng LAN không thể kết nối vào.
Khởi động với tùy chọn mở rộng
Nếu bạn muốn máy chủ chạy ở một cổng khác (ví dụ: 8080) và cho phép tất cả các máy tính trong mạng LAN kết nối vào, hãy thêm tham số -h (host) và -p (port):
Bash
startNetworkServer -h 0.0.0.0 -p 8080
(Lưu ý: Địa chỉ 0.0.0.0 đại diện cho việc lắng nghe trên tất cả các giao diện mạng khả dụng của máy chủ).
3. Vị trí lưu trữ Database của Network Server
Điều quan trọng nhất khi chạy Network Server là Thư mục làm việc (Working Directory).
Khi bạn gõ lệnh startNetworkServer tại một thư mục nào đó (ví dụ C:\my_projects\), máy chủ Derby sẽ sử dụng chính thư mục đó làm derby.system.home.
-
Mọi thư mục database tạo mới sẽ được đặt tại
C:\my_projects\. -
Tệp nhật ký chung của toàn bộ máy chủ mang tên
derby.logsẽ được sinh ra tại đây.
Best Practice: Đừng mở Terminal và gõ lệnh chạy máy chủ ở thư mục ngẫu nhiên. Hãy tạo một thư mục cố định (ví dụ: /var/lib/derby_data hoặc C:\derby_data), dùng lệnh cd di chuyển vào đó, rồi mới chạy lệnh startNetworkServer.
4. Kiểm tra trạng thái máy chủ (ping)
Để xác nhận máy chủ đã hoạt động ổn định và sẵn sàng nhận kết nối, Derby cung cấp công cụ NetworkServerControl. Mở một Terminal thứ hai và chạy:
Bash
NetworkServerControl ping
Nếu thành công, hệ thống trả về: Connection obtained for host: localhost, port number 1527. Nếu máy chủ chưa chạy hoặc bị lỗi mạng, bạn sẽ nhận được thông báo lỗi kết nối socket.
5. Dừng máy chủ an toàn (stopNetworkServer)
Bạn không nên tắt máy chủ bằng cách đóng cửa sổ Terminal một cách đột ngột hay nhấn Ctrl + C (vì có thể dẫn đến việc các giao dịch đang thực thi bị ngắt ngang).
Hãy mở một Terminal khác và thực thi lệnh tắt mềm (graceful shutdown):
Bash
stopNetworkServer
Nếu bạn đã khởi động máy chủ với host/port tùy chỉnh, bạn cũng phải truyền tham số tương ứng vào lệnh tắt để công cụ biết cần gửi tín hiệu tắt đi đâu:
Bash
stopNetworkServer -h 0.0.0.0 -p 8080
Khi nhận được lệnh, Terminal đang chạy máy chủ sẽ in ra thông báo: Apache Derby Network Server - 10.17.1.0 - (1908030) shutdown và tiến trình JVM sẽ kết thúc sạch sẽ, trả lại bộ nhớ cho hệ điều hành.
Máy chủ đã sẵn sàng hoạt động độc lập trên hệ điều hành. Phần tiếp theo sẽ hướng dẫn cách ứng dụng Java của bạn (hoặc công cụ dòng lệnh) đóng vai trò là một Client để giao tiếp với máy chủ này qua mạng lưới TCP/IP.
All rights reserved