2010-12-08 83 views
2

我刚刚开始使用嵌入式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类可以带参数。我在这里错过了什么吗?

回答

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

3

只是在嵌入式码头的FYI一般......我已经创建了一个我虚心提交的github项目,可能会涵盖大部分仍在不断出现的嵌入式码头问题。

我已经得到了AbstractHandlers,Servlets,Jersey Servlets,静态文件,webapps以及其他的例子。仍然在RoR和Sinatra工作,但会到达那里。

详情请参阅https://github.com/ZenGirl/EmbeddedJettyRepository。 任何人都想贡献,只是问。