2013-02-27 37 views
12

Tôi muốn thử tác nhân nạp lại lớp "Spring Loaded" của Spring Source, với Tomcat chạy qua IntelliJ.IntelliJ + Tomcat + Spring-Loaded

https://github.com/SpringSource/spring-loaded

Tôi đã thêm các đối số JVM để Tomcat chạy cấu hình của tôi, và webapp của tôi bắt đầu lên mà không có lỗi và dường như cư xử bình thường.

Tôi thực sự không chắc chắn cách kích hoạt tải lại lớp học. Tôi có cần phải biên dịch các lớp mà tôi sửa đổi không? Tôi đã thử điều đó và điều đó dường như không hoạt động. Tôi có cần cập nhật Tomcat và triển khai các lớp và tài nguyên không? Điều đó dường như không hoạt động ...?

Bất kỳ chi tiết cấu hình cụ thể nào sẽ được đánh giá rất nhiều.

EDIT: Thông tin thêm, tôi nghĩ rằng vấn đề của tôi có thể liên quan đến việc sử dụng hai mô-đun, một mô-đun là thư viện mã lõi và một ứng dụng web. Tôi sử dụng Maven cho cả hai, một cấu hình như một dự án jar và cái kia như một dự án chiến tranh. IntelliJ thiết lập Artifact cho cuộc chiến bùng nổ để sử dụng tệp jar của mô-đun jar. Tôi đã thử chuyển đổi cấu hình Artifact để kết hợp đầu ra được biên dịch của mô-đun jar vào các lớp WEB-INF/thay vào đó. Bây giờ tôi thấy các tệp .class trong target/webapp/WEB-INF/class/etc. Nhưng tôi không chắc làm cách nào để IntelliJ cập nhật một tệp lớp cụ thể khi tôi chỉnh sửa nó.

+0

Bạn có tìm ra một cách để xử lý các submodules với lò xo? – Damien

+0

Chưa. Tôi đã không trở lại để làm việc này trong một thời gian dài. – sdouglass

Trả lời

5

Nếu bạn thêm các thông số JVM sau (như mô tả ở trang springloaded) để tomcat

-javaagent:<pathTo>/springloaded-{VERSION}.jar -noverify SomeJavaClass 

của bạn, bạn cần sử dụng tốt. Nó có thể giúp vô hiệu hóa tự động tải lại trong tomcat cho webapp bạn đang thử nghiệm. Đối với exmaple trong máy chủ của bạn.xml:

<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> 
    <Context docBase="projekt" path="/projekt" reloadable="false" ... 

Điều này đảm bảo rằng chỉ trình nạp lớp tải xuống tải lớp đã thay đổi.

+0

Cảm ơn câu trả lời của bạn. Điều gì sẽ kích hoạt trình nạp lớp tải xuống để tải lại các lớp đã thay đổi? Nó chỉ xảy ra định kỳ? Nó có giám sát các tệp lớp cho các thay đổi dấu thời gian không? Hay tôi cần phải thực hiện một hành động trong IntelliJ để kích hoạt nó? – sdouglass

+0

Theo https://github.com/spring-projects/spring-loaded lớp tập tin được theo dõi cho một sự thay đổi một lần một giây. – varad

+0

Xin lỗi, bạn đã thay đổi điều này bằng cách sử dụng IntelliJ như thế nào? Ý tôi là, không thể thay đổi bằng IntelliJ vì bạn không có khả năng hiển thị của "server.xml", phải không? –

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