2011-12-27 35 views
6

Tôi đang khởi chạy một phiên bản Jetty được nhúng có chứa một ứng dụng web đơn lẻ. Webapp khởi chạy khi khởi động. Tôi muốn biết làm thế nào để phát hiện nếu bối cảnh của WebappInitialized ném một ngoại lệ.Cầu cảng: Phát hiện nếu Webapp không thể bắt đầu

Khi webapp ném ngoại lệ, Server.start() không và server.isRunning() trả về giá trị đúng. Có cách nào để tôi lắng nghe ngoại lệ webapp từ bên ngoài vùng chứa không?

Trả lời

5

Trả lời câu hỏi của riêng tôi.

Đặt WebAppContext.setThrowUnavailableOnStartupException(true) làm cho máy chủ truyền bá bất kỳ ngoại lệ webapp nào tới Server.start(). Tôi đoán một trong những cũng có thể gọi WebAppContext.isFailed() sau khi khởi động máy chủ để kiểm tra bối cảnh cá nhân.

+0

Trong phương thức Jetty 9 'WebAppContext.setThrowUnavailableOnStartupException (true)', nhưng bạn có thể kiểm tra xem webapp có sẵn với 'webappContext.isAvailable()' và có thể có lỗi khi khởi động với 'webappContext.getUnavailableException()'. – reap

+0

org.eclipse.jetty.deploy.DeploymentManager requestAppGoal phương pháp không ném lại ngoại lệ nó chỉ ghi nhật ký dấu vết ngăn xếp ngoại lệ được tạo bởi org.eclipse.jetty.webappWebAppContext.java.doStart(). Vì vậy, làm thế nào nó có thể truyền đến Server.start()? – quintin

4

Tôi tình cờ gặp vấn đề này để thực hiện công việc này cho giải pháp không được nhúng. Trong trường hợp bất cứ ai đang ở trong một chiếc thuyền tương tự, giải pháp cho trường hợp đó là tạo ra WEB-INF/jetty-env.xml với các nội dung sau:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> 

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
    <Set name="throwUnavailableOnStartupException">true</Set> 
</Configure> 

Các máy chủ sẽ thất bại khởi động trên một ngoại lệ như mong đợi.

+0

Lưu ý: DTD không hợp lệ đối với Jetty 9.3+. –

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