【发布时间】:2014-02-25 22:11:51
【问题描述】:
我不明白如何将这段代码改写为 6 号码头用于 9 号码头:
import org.mortbay.jetty.*;
import org.mortbay.jetty.nio.SelectChannelConnector;
import org.mortbay.jetty.webapp.WebAppContext;
public class ApplLauncher {
public static void main(String[] args) {
Server server = new Server();
Connector connector = new SelectChannelConnector();
connector.setPort(8080);
server.addConnector(connector);
WebAppContext root = new WebAppContext("C:\\Users\\OZKA\\IdeaProjects\\projectname\\projectname\\web", "/");
root.setWelcomeFiles(new String[]{"index.html"});
//root.addServlet(new ServletHolder(new TestServlet()), "/test");
server.setHandlers(new Handler[]{root});
try {
server.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
上面的代码工作正常,响应来自 web 文件夹和 servlet 的静态内容,映射在 web.xml 中。这是我使用嵌入式码头 9 的尝试:
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.Handler;
public class ApplLauncher {
public static void main(String[] args) {
System.out.println("Hello from ScalaSbt Web Project");
Server server = new Server(8080);
WebAppContext webapp = new WebAppContext("D:\\Dev\\Scala\\ScalaTestProject\\web\\", "/");
ResourceHandler resource_handler = new ResourceHandler();
resource_handler.setWelcomeFiles(new String[]{ "index.html" });
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resource_handler, webapp});
server.setHandler(handlers);
try {
server.start();
server.join();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
}
服务器正在启动,但是 index.html 请求抛出错误:
"java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.isAsyncStarted()Z"
我试图在 Google 中找到一个可行的示例,但没有发现任何有用的东西。官方示例和文档非常混乱,我不明白如何使用嵌入式码头版本 9。
【问题讨论】:
-
你是如何构建和运行这个应用程序的?从您的代码看来,您可能正在使用 SBT?在这种情况下,您能否向我们展示您的 build.sbt 文件?
-
我只是在 Idea IDE 中运行 AppLauncher,SBT 仅用于管理依赖项。
标签: java servlets embedded-jetty