2016-10-14 17 views
13

Tôi đã tạo một dự án quạ thực và thêm phụ thuộc vào cầu nối. Tiếp theo, tôi đã tạo một servlet đơn giản và một lớp khởi động máy chủ jetty. Đây là những gì tôi nhận được cho đến nay:Sử dụng web.xml để tạo cầu nối bắt đầu theo chương trình

package com.example.jetty; 

import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.servlet.ServletContextHandler; 

public class App { 
    public static void main(String[] args) throws Exception { 
     Server server = new Server(80); 
     ServletContextHandler servletContext = new ServletContextHandler(server, "/"); 
     servletContext.addServlet(MyServlet.class, "/"); 
     server.start(); 
    } 
} 

Vấn đề của tôi là hầu hết các hướng dẫn tôi thấy có một web.xml để cấu hình servlet và như vậy. Tôi không thể tìm thấy các cách có lập trình để thực hiện một số điều này. Tôi có thể tạo một web.xml và vẫn bắt đầu cầu nối của tôi một cách có lập trình và bằng cách nào đó sử dụng web.xml đó để cấu hình không?

Để cụ thể hơn, tôi cần phải viết đúng trong tệp web.xml. Tôi không tìm được cách nào để làm điều đó theo chương trình.

+0

Tại sao không chỉ sử dụng maven để thực hiện công việc? Maven jetty-plugin có thể được sử dụng như một giải pháp thay thế. https://www.eclipse.org/jetty/documentation/9.4.x/jetty-maven-plugin.html – artificerpi

+0

Hum ... Không hoàn toàn rõ ràng với tôi. Cách lập trình luôn khác với cách khai báo. Bạn chính xác muốn làm gì? –

+0

Để cụ thể hơn, tôi cần viết true trong web.xml. Tôi không tìm được cách nào để làm điều đó theo chương trình. – user1985273

Trả lời

7

Tôi sẽ bắt đầu với một ví dụ mà bạn có thể quan tâm Nếu bạn muốn sử dụng web.xml với chương trình cách Jetty máy chủ, sau đó bạn có thể làm như sau:.

WebAppContext context = new WebAppContext(); 
context.setContextPath("/myWebApp"); 
context.setExtractWAR(false); 
context.setDescriptor("/file/system/path/to/your/wab/app/WEB-INF/web.xml"); 
context.setResourceBase("/file/system/path/to/your/wab/app"); 
context.setConfigurationDiscovered(false); 

HandlerList handlerList=new HandlerList(); 
handlerList.addHandler(webAppContext); 

Server server = new Server(threadPool); 
server.setHandler(handlerList); 
server.start(); 

Liên quan đến lập trình cấu hình bạn có thể hãy thử sử dụng Servlet 3.x API, được hỗ trợ từ Jetty 8.x (hiện tại Jetty phiên bản 9.x) và có thể được định cấu hình đầy đủ theo lập trình.

+0

Cảm ơn bạn đã gửi anwser. Tôi có hiểu chính xác rằng tôi cần servlet này 3.x api phụ thuộc chỉ khi tôi muốn cấu hình nó lập trình? Bạn cũng có biết ví dụ về cách sử dụng api này để định cấu hình thuộc tính được hỗ trợ không đồng bộ không? – user1985273

+0

Để kích hoạt 'Servlet 3.0', bạn cần phải xác định' version = "3.0" 'trong' web.xml' mọi thứ khác có thể để trống, vì vậy bạn có thể đặt 'web.xml' đó vào đường dẫn lớp thay cho hệ thống tệp. '@ WebServlet' với tham số' asyncSupported = true' có thể được sử dụng cho 'async-supported'. –

+0

[tại đây] (https://github.com/jetty-project/embedded-servlet-3.1) bạn có thể tìm thấy một ví dụ cho 'Jetty' với' Servlet 3.0' –

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