2014-11-14 34 views
9

Bối cảnh và thiết lập thông tin:chậm trễ khởi động Jetty do quét

  • Jetty 9 với cầu tàu thực plugin
  • Xuân 4.1.1.RELEASE với Xuân An 3.2.3
  • Java Cấu hình mùa xuân (không có web.xml)

Mô tả sự cố Bắt đầu cầu tàu 9 là rất chậm trong một dự án nơi JavaConfig của Spring được sử dụng để khởi động bối cảnh mùa xuân thay vì sử dụng một web.xml. Cầu tàu dường như không làm gì trong một khoảng thời gian ân cần. Điều này xảy ra sau khi các dòng:

INFO:oejs.Server:main: jetty-9.2.3.v20140905

Jetty không bắt đầu cuối cùng, nhưng phải mất rất nhiều thời gian để khởi động so với một bản phân phối tomcat 7 thông thường.


Tài nguyên bổ sung

public class DispatcherServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {  
    //implementation 
    } 

Trả lời

18

Điều này là do thực tế là Jetty 9 quét tất cả Chum trong thư mục WEB-INF cho các chú thích để bắt đầu bối cảnh web. Nếu bạn đã cố gắng tìm một giải pháp cho vấn đề này, có thể bạn đã khám phá ra thực tế đó. Tôi đã thử một số câu trả lời như vậy, nhưng không bao giờ tìm thấy giải pháp chính xác trong số đó.

Để loại bỏ việc quét như vậy càng nhiều càng tốt, chúng tôi có thể xác định một mẫu cho Jetty biết nguồn nào cần quét và không quét. Điều này được thực hiện bằng cách thiết lập một số cấu hình trong maven, hoặc bằng cách thiết lập một thuộc tính trong jetty-context.xml. (Nếu bạn đang sử dụng các plugin maven, bạn cần phải thiết lập Jetty cũng của jetty-context.xml trong bạn pom.xml)

Một số giải pháp khác mà chưa từng làm việc cho tôi (hoặc không tăng thời gian khởi động hoặc không khởi động đúng ở tất cả)

Jetty 8.1.2 startup delay jetty8 with maven plugin takes to long to start

, vv

Các giải pháp đúng cũng được thực hiện sử dụng như jetty-context.xml, nhưng với mô hình khác. Trong một ứng dụng Spring, chúng ta cần phải quét các lọ Spring, và điều này một mình sẽ tạo ra một sự tăng cường lớn nếu bạn có nhiều phụ thuộc. Thậm chí tốt hơn là nếu bạn chỉ quét các bình spring-web. Nếu bạn có Bảo mật mùa xuân, thì cũng có thể cần thiết để bao gồm các lọ đó.

Như vậy, mô hình đó đã cho tôi tăng tốc tối đa được hiển thị ở đây:

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd"> 

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 

    <Call name="setAttribute"> 
     <Arg>org.eclipse.jetty.server.webapp.WebInfIncludeJarPattern</Arg> 
     <Arg>.*/spring-security[^/]*\.jar$|.*/spring-web[^/]*\.jar$|.*/classes/.*</Arg> 
    </Call> 

</Configure> 

Chúng tôi loại trừ bất cứ điều gì mà không có trong thư mục classes của chúng tôi trong WEB-INF, cũng như bất kỳ lọ mà không bao gồm các mô hình regex được.

Hy vọng điều này sẽ giúp ai đó!

+0

Ngoài ra còn có mô-đun 'quickstart' trong Jetty 9.2.x có thể thực hiện quét tại thời gian xây dựng/biên dịch, tạo ra một' jetty-quickstart.xml' của những gì nó tìm thấy trong tập tin chiến tranh, làm cho khởi động sản xuất phụ thứ hai. –

+0

Thật tuyệt vời. Tôi sẽ cố gắng tìm một ví dụ về làm thế nào để làm điều đó, vì vậy tôi có thể thêm nó vào câu trả lời này, hoặc bạn có thể gửi của riêng bạn nếu bạn có một trong một câu trả lời :). Cảm ơn! – froginvasion

+0

Tôi không thấy bất kỳ sự khác biệt lớn bất kể tôi đã thử giải pháp nào. –

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