嵌入式Jetty入门

时间:2010-12-08 18:56:51

标签: 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构建路径中拥有所有的Jetty jar。但我不断收到错误:构造函数ServletHolder(Class)未定义,构造函数Server(int)未定义,ServletContextHandler无法解析为类型。 如果我删除ServletHolder和Server中的参数,它会停止抱怨。例如如果我有:ServletHolder sh = new ServletHolder(); Server server = new Server(); 但那不对。我读了Jetty文档和ServletHolder类可以参数。我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:4)

仅仅是关于嵌入式Jetty的FYI ...我已经创建了一个github项目,我谦虚地提交可以涵盖大多数不断出现的嵌入式码头问题。

我有AbstractHandlers,Servlets,Jersey Servlets,静态文件,webapps以及没有的例子。仍在研究RoR和Sinatra,但会到达那里。

有关详细信息,请参阅https://github.com/ZenGirl/EmbeddedJettyRepository。 任何人都想贡献,只要问。

答案 1 :(得分:1)

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