Có hai biến môi trường - CATALINA_OPTS
và JAVA_OPTS
- đó đều được sử dụng trong catalina.sh khởi động và tắt kịch bản cho Tomcat. Chúng được mô tả trong chú thích trong tập tin đó như:
[JAVA_OPTS]: (không bắt buộc) tùy chọn thời gian chạy Java sử dụng khi "bắt đầu", "dừng" hoặc "chạy" lệnh được thực thi
và
[CATALINA_OPTS]: tùy chọn thời gian chạy (không bắt buộc) Java sử dụng khi "bắt đầu" hoặc "chạy" lệnh được thực thi
Vậy tại sao có hai biến khác nhau? Và sự khác biệt là gì?
Thứ nhất, bất kỳ thứ gì được chỉ định trong biến EITHER đều được truyền, đến lệnh khởi động Tomcat - lệnh "bắt đầu" hoặc "chạy" - nhưng chỉ các giá trị được đặt trong JAVA_OPTS mới được chuyển đến lệnh "dừng". Điều đó có lẽ không tạo ra bất kỳ sự khác biệt nào về cách Tomcat chạy trong thực tế vì nó chỉ ảnh hưởng đến kết thúc chạy, chứ không phải là sự khởi đầ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 thiết lập các biến môi trường để chỉ sử dụng bởi Tomcat, bạn nên sử dụng CATALINA_OPTS, trong khi nếu bạn đang thiết lập các biến môi trường được sử dụng bởi 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 - What is the difference?
Nó cũng hữu ích để suy nghĩ về chúng như "Tôi cần một cái gì đó cho khởi động tomcat" hoặc "Tôi cần một cái gì đó cho mỗi JVM". Hãy nói rằng 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 - chúng tôi sẽ cần hai cổng RMI do đó để thiết lập Djava.rmi.server dưới dạng * startup * arg. Chúng ta có thể thực hiện điều này như một JAVA_OPT khi tắt máy một JVM mới cố gắng lắng nghe trên các cổng JMX, không thể lấy nó như tomcat đã nghe nó và JVM sẽ dừng lại với một lỗi về nó đang được sử dụng - không những gì chúng tôi muốn là nó? –
Cảm ơn bạn rất nhiều! – Serzhas