我在我的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();
}
}
答案 0 :(得分:0)
我知道这是一个迟到的帖子。但我有同样的问题,我找到了答案,所以我想与可能正在搜索的任何人分享。答案很简单: 只需将servlet添加到WebAppContext。
public class JettyTest {
public static void main(String[] args) throws Exception {
Server server = new Server(8081);
ContextHandlerCollection contexts = new ContextHandlerCollection();
ServletHolder mainHolder = new ServletHolder(new HttpServlet() {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.getWriter().write("main");
}
});
WebAppContext webAppContext = new WebAppContext("test.war", "/test");
webAppContext.addServlet(mainHolder, "/main");
server.setHandler(webAppContext);
server.start();
server.join();
}
现在可以在anydomain中找到servlet:8081 / test / main。 我不知道如何获得' / main'在根下:)