2010-09-15 42 views
7

Tôi có một lớp học chính định cấu hình và kích hoạt Jetty. (Đó là tiêu chuẩn thực hiện từ Wicket để thử nghiệm một ứng dụng web, nhưng nó thực sự không wicket cụ thể.)Thêm tài nguyên vào Jetty theo lập trình

final Server server = new Server(); 
//skipped socketconnector initialization 

final WebAppContext bb = new WebAppContext(); 
bb.setServer(server); 
bb.setContextPath("/"); 
bb.setWar("src/main/webapp"); 
server.addHandler(bb); 
server.start(); 

Như bạn thấy, src/main/webapp được sử dụng như là người chủ webapp. Tuy nhiên, tôi có một số tài nguyên nằm trong mục tiêu/lớp và được sao chép vào webapp sau. Vì vậy, tôi muốn thêm các thư mục ảo vào cầu cảng.

Tôi muốn để lập bản đồ target/classes/js để /jstarget/classes/css-/css

Ai có thể giúp đỡ?

BTW: đó là cầu cảng 6.1.4

Trả lời

8

Thêm một WebAppContext cho mỗi thư mục ảo:

final Server server = new Server(); 
//skipped socketconnector initialization 

final WebAppContext js = new WebAppContext(); 
js.setServer(server); 
js.setContextPath("/js"); 
js.setWar("target/classes/js"); // or whatever the correct path is in your case 
server.addHandler(js); 

// css the same way 

final WebAppContext bb = new WebAppContext(); 
bb.setServer(server); 
bb.setContextPath("/"); 
bb.setWar("src/main/webapp"); 
server.addHandler(bb); 

server.start(); 
+0

Hoạt động như một sự quyến rũ, cảm ơn. –

+0

Tại sao cả hai 'WebAppContext.setServer (Server) 'và' Server.addHandler (WebAppContext) 'cần thiết? – NSPKUWCExi2pr8wVoGNk

3

Để hoàn chỉnh, đây là cách giải quyết tôi đã được sử dụng:

final Server server = new Server(); 
//skipped socketconnector initialization 

final WebAppContext bb = new WebAppContext(); 
bb.setServer(server); 
bb.setContextPath("/"); 
bb.setWar("src/main/webapp"); 
final URL url = new File("target/classes").getAbsoluteFile().toURI().toURL(); 
final Resource resource = new FileResource(url); 
final ResourceHandler handler = new ResourceHandler(); 
handler.setBaseResource(resource); 
server.addHandler(handler); 
server.addHandler(bb); 
server.start(); 

Nhưng nó không phải là rất thanh lịch, nó gắn kết tất cả mọi thứ trong mục tiêu/các lớp học và sử dụng webapp chỉ như dự phòng.

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