2010-05-03 28 views
9

Khi tôi chạy ứng dụng grails của tôi bằng cách sử dụng embedded jetty server (tomcat cho grails 1.2), tôi có thể thay đổi bộ điều khiển, dịch vụ và các tệp java khác trong thời gian chạy mà không cần khởi động lại ứng dụng. Làm thế nào tôi có thể đạt được chức năng tương tự trên ứng dụng của tôi được triển khai trên Tomcat (hoặc bất kỳ máy chủ nào) cho vấn đề đó. Tôi đã quan sát thư mục chiến tranh bùng nổ trong webapps có tệp gsp nhưng không phải tệp groovy.Sửa đổi mã groovy khi chạy trong ứng dụng grails

Trả lời

9

Hoàn thành câu trả lời của Eric, bạn không thể thay đổi khi đang chạy mã nguồn trong môi trường sản xuất. Tuy nhiên, nếu bạn thực sự muốn sửa đổi mã của mình trực tiếp, bạn có thể:

  1. Thay đổi lớp groovy, biên dịch nó, thay thế tệp .class trong thư mục chiến tranh đã bùng nổ và khởi động lại tomcat (Tôi biết, tôi biết, đó là đau đớn nhưng tôi không biết cách nào tốt hơn)
  2. Đối với các tệp gsp, có một mẹo. thêm vào số Config.groovy tệp thuộc tính sau: grails.gsp.enable.reload=true. Điều này sẽ cho phép bạn thay đổi khi đang chạy tập tin gsp của bạn. Hãy cẩn thận vì nó sẽ làm tổn thương hiệu suất. Xem here để biết chi tiết
3

Khi bạn đóng gói ứng dụng của mình dưới dạng WAR, các tệp Groovy được biên dịch sang Java bytecode (tệp .class) và được bao gồm trong WAR. Sự trao đổi nóng của các tập tin trong thời gian chạy không thích hợp cho việc sử dụng sản xuất do rò rỉ bộ nhớ.

1

Vấn đề permgen có cụ thể cho Spring/Grails hoặc có thể giữ đúng trong thiết lập Tomcat/Groovlet không?

Hiệu suất khôn ngoan, không có lợi ích nào đối với tệp Groovy đã biên soạn so với không được biên dịch, đúng không? Là bước biên dịch chỉ để làm cho Java và Groovy làm việc cùng nhau?

Tôi hy vọng trong tương lai không xa, chúng tôi sẽ có một môi trường sản xuất hoàn toàn có thể tải lại hoạt động tốt và không bị rò rỉ bộ nhớ.

Có vẻ ngớ ngẩn rằng Grails & Đường ray cả hai đều không cung cấp tùy chọn tải lại sản xuất khả thi (trong Grails, yêu cầu cái chết sớm hơn hoặc muộn hơn). PHP rõ ràng là con chó chậm, và hàng triệu trang web Apache/PHP được định hướng cung cấp nội dung cho người dùng chỉ trong tích tắc. Nếu chúng tôi không chạy Facebook, chúng ta có nên quan tâm đến các hình phạt về hiệu suất mà chúng tôi được cảnh báo trong các trại * Rails không?

Từ bên ngoài nhìn vào, vấn đề liên tục của Java permgen dường như vô lý, có phải là không thể giải quyết được không?

Các vấn đề liên quan