嵌入式Jetty入门
我刚刚开始使用嵌入式jetty。我被困在一些错误消息。这是简单和直接的几行代码,我在网上找到并想测试。嵌入式Jetty入门
import org.jaxen.Context;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.servlet.ServletHolder;
public class Main {
public static void main(String[] args) throws Exception {
ServletHolder sh = new ServletHolder(ServletContainer.class);
sh.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig");
sh.setInitParameter("com.sun.jersey.config.property.packages", "jerseyplusjetty");
Server server = new Server(80);
ServletContextHandler sch = new ServletContextHandler(server, "/");
sch.addServlet(sh, "/*");
server.start();
server.join();
}
}
我在Java构建路径中的所有码头罐子。但我不断收到错误:构造函数ServletHolder(Class)未定义,构造函数Server(int)未定义,ServletContextHandler无法解析为类型。 如果我删除ServletHolder和Server中的参数,它将停止抱怨。例如如果我有:ServletHolder sh = new ServletHolder();服务器服务器=新服务器(); 但这是不对的。我读过Jetty文档和ServletHolder类可以带参数。我在这里错过了什么吗?
ServletHolder的版本我在构造函数中使用了一个String或一个Servlet。所以不要做
new ServletHolder(ServletContainer.class)
你应该做new ServletHolder(ServletContainer.class.getCanonicalName())
或new ServletHolder(new ServletContainer())
。
ServletContainer是一个servlet的奇怪名称,确保它实际上是一个servlet。
另外,请注意,有许多不同版本的Jetty(您使用的是旧版本,因为在新版本中,所有类都位于org.eclipse.jetty包中),并且很容易找到示例代码是指与您拥有的版本不同的版本。我会从maven得到jetty 7.2.2并使用示例代码here。
只是在嵌入式码头的FYI一般......我已经创建了一个我虚心提交的github项目,可能会涵盖大部分仍在不断出现的嵌入式码头问题。
我已经得到了AbstractHandlers,Servlets,Jersey Servlets,静态文件,webapps以及其他的例子。仍然在RoR和Sinatra工作,但会到达那里。
详情请参阅https://github.com/ZenGirl/EmbeddedJettyRepository。 任何人都想贡献,只是问。