CATALINA_OPTS và JAVA_OPTS - Sự khác biệt là gì?


105

Tôi đang cố gắng tìm ra sự khác biệt giữa các biến Apache Tomcat - CATALINA_OPTSJAVA_OPTStrong SO và ngạc nhiên khi thấy rằng không có câu hỏi / câu trả lời nào được đăng ở đây. Vì vậy, tôi đã nghĩ đến việc chia sẻ nó ở đây (kèm theo câu trả lời) sau khi tìm ra sự khác biệt. Kiểm tra câu trả lời / sự khác biệt bên dưới.

LƯU Ý: Tại thời điểm đăng bài này, chúng tôi đang chạy Apache Tomcat v6.0.10 với JDK 6u32 trên CentOS5 64-bit vòm.

Câu trả lời:


156

Có hai biến môi trường - CATALINA_OPTSJAVA_OPTS- đều được sử dụng trong tập lệnh khởi động và tắt catalina.sh cho Tomcat. Chúng được mô tả trong các nhận xét trong tệp đó là:

[JAVA_OPTS]: (tùy chọn) Tùy chọn thời gian chạy Java được sử dụng khi lệnh "bắt đầu", "dừng" hoặc "chạy" được thực thi

[CATALINA_OPTS]: (tùy chọn) Tùy chọn thời gian chạy Java được sử dụng khi lệnh "bắt đầu" hoặc "chạy" được thực thi

Vậy tại sao lại có hai biến khác nhau? Và sự khác biệt là gì?

Thứ nhất, bất cứ thứ gì được chỉ định trong biến EITHER đều được chuyển, giống hệt nhau, tới lệnh khởi động Tomcat - lệnh "start" hoặc "run" - nhưng chỉ các giá trị được đặt trong JAVA_OPTS mới được chuyển cho lệnh "stop". Điều đó có lẽ không tạo ra bất kỳ sự khác biệt nào đối với cách Tomcat chạy trong thực tế vì nó chỉ ảnh hưởng đến phần cuối của một lần chạy chứ không phải lúc bắt đầu.

Sự khác biệt thứ hai là tinh tế hơn. Các ứng dụng khác cũng có thể sử dụng JAVA_OPTS, nhưng chỉ Tomcat mới sử dụng CATALINA_OPTS. Vì vậy, nếu bạn đang đặt các biến môi trường chỉ để Tomcat sử dụng, tốt nhất bạn nên sử dụng CATALINA_OPTS, trong khi nếu bạn đang đặt các biến môi trường để các ứng dụng java khác, chẳng hạn như JBoss, bạn nên đặt cài đặt của bạn trong JAVA_OPTS.

Nguồn: CATALINA_OPTS v JAVA_OPTS - Sự khác biệt là gì?


11
Nó cũng hữu ích khi nghĩ về chúng như "tôi có cần thứ gì đó để khởi động tomcat không" hoặc "tôi có cần thứ gì đó cho mọi JVM không". Giả sử chúng tôi đang cố gắng thiết lập giám sát JMX trên một môi trường phân tán và chúng tôi đang đứng sau tường lửa - do đó chúng tôi sẽ cần hai cổng RMI để thiết lập Djava.rmi.server như một lập luận khởi động . Liệu chúng ta có thể thực hiện việc này như một JAVA_OPT khi tắt máy sẽ kích hoạt một JVM mới cố gắng lắng nghe trên các cổng JMX, không thể lấy nó vì tomcat đã nghe nó và JVM sẽ dừng lại với lỗi về việc nó đã được sử dụng - không phải những gì chúng ta muốn là nó?
Joao Figueedlyo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.