2010-12-08 142 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。 任何人都想貢獻,只是問。