我在我的java应用程序中使用嵌入式Jetty服务器 . 我想同时动态地在嵌入式jetty服务器中使用Web应用程序(war文件)和Servlet . 为此我使用jetty库中提供的WebAppContext和ServletContextHandler . 一旦服务器启动,只能通过浏览器访问servlet . 任何人都可以一次性使用这两种方法吗?
除了上面两个,我还想添加WebSocketHandler,CometDServlet和另一个静态网站 . 感谢是否有人能告诉我这样做的正确方法 .
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.webapp.WebAppContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class JettyTest {
public static void main(String[] args) throws Exception {
Server server = new Server(8081);
ContextHandlerCollection contexts = new ContextHandlerCollection();
ServletContextHandler main = new ServletContextHandler(server, "/", true, false);
main.addServlet(new ServletHolder(new HttpServlet() {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().write("main");
}
}), "/main");
WebAppContext webAppContext = new WebAppContext("test.war", "/test");
contexts.addHandler(webAppContext);
contexts.addHandler(main);
server.setHandler(contexts);
server.start();
server.join();
}
}
1 回答
我知道这是一个迟到的帖子 . 但我有同样的问题,我找到了答案,所以我想与可能正在搜索的任何人分享 . 答案很简单:只需将servlet添加到WebAppContext即可 .
现在servlet可以在任何域中找到:8081 / test / main . 我不知道如何在root下获得'/ main':)