2009-09-22 21 views

Trả lời

-2

Có thể có nhiều hack, nhưng không phải tệp JAR thực sự là ZIP? (không chắc chắn) Bạn có thể giải nén chúng vào một thư mục tạm thời và phục vụ chúng từ đó không?

+1

Tôi có thể, nhưng tôi muốn một ứng dụng web độc lập bên trong một Jar cho mục đích đơn giản. :) – LaSombra

+1

Trên thực tế cầu cảng làm điều này trong nội bộ nếu bạn cố gắng thiết lập một thư mục webapp, vì vậy ông không phải là xa. – fd8s0

-7

Tìm thấy câu trả lời và không phải là Jetty, đó là Winstone. http://winstone.sf.net

+0

Nhưng OP hỏi về Jetty ... – MTCoster

+1

Câu trả lời này là do OP ... – Asaf

+1

Bỏ phiếu xuống vì mặc dù bạn là OP, giải pháp này thực sự không phải là giải pháp. Và nó sẽ là một tình huống cực kỳ hiếm hoi khi một anh chàng vấp phải vấn đề mà bạn đối mặt sẽ đi với giải pháp này. – alok

37

Một ví dụ được liệt kê trên trang nhúng Jetty ở http://docs.codehaus.org/display/JETTY/Embedding+Jetty

Bí quyết là để tạo ra một URL tập tin đến vị trí classpath của bạn.

String webDir = this.class.getClassLoader().getResource("com/company/project/mywebdir").toExternalForm(); 

ServletContextHandler context = new ServletContextHandler(); 
context.setContextPath("/"); 
context.setResourceBase(webDir); 
+1

lớp nào được yêu cầu thực thi mã này? – phtrivier

+0

@phtrivier Lớp mà bạn khởi tạo org.mortbay.jetty.Server hoặc org.eclipse.jetty.server.Server. –

+0

bất kỳ ý tưởng phải làm gì nếu 'request.getRequestDispatcher (...). Forward (req, resp)' không tìm thấy tệp '.jsp' trong' WEB-INF' khi chạy từ tệp JAR? –

5

Thật đơn giản, nếu bạn ném Xuân vào phương trình. Và ở đây nó đi:

 
... 

WebAppContext webAppContext = new WebAppContext(); 
webAppContext.setServer(server); 
webAppContext.setContextPath("/"); 
webAppContext.setResourceBase(new ClassPathResource("webapp").getURI().toString()); 

server.addHandler(webAppContext); 

.... 

Điều đó sẽ làm cho cầu cảng tìm thấy các tài nguyên web cần thiết bên trong tệp jar.

+0

Cảm ơn. Tôi đã làm nó với Maven + Assembly plugin :) – LaSombra

+1

Loại máy chủ nào là 'máy chủ'? –

+1

@WimDeblauwe org.eclipse.jetty.server.Server – fionbio

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