2011-02-11 82 views
1

由於wicket不使用JSP,因此我使用嵌入式jetty作爲我的Wicket項目,沒有任何問題。直到我運行一個任務,使用嵌入式碼頭應用程序服務器創建基本的動態Web應用程序。如何在Eclipse中使用jsp將jetty嵌入到動態web項目中

我知道,默認情況下,jetty不支持JSP。我也知道有幾個其他的Servlet容器可供選擇。但是對於這個任務,我想展示一下如何使用jetty進行強大而簡單的web開發,因爲我一直在爲大型項目使用它而取得巨大成功。

我使用Eclipse太陽神作爲我的IDE,並添加下面的罐子我的類路徑

  • 的junit-4.8.1.jar
  • 碼頭,6.1.25.jar
  • 碼頭管理-6.1.25.jar
  • 碼頭-util的-6.1.25.jar
  • 的log4j-1.2.14.jar
  • servlet的API-2.5-6.1.4.jar
  • JSP-2.1-6.1.5.jar
  • javax.servlet.jar

這裏是我用來啓動我的嵌入式碼頭

import org.mortbay.jetty.Connector; 

import org.mortbay.jetty.Server; 

import org.mortbay.jetty.bio.SocketConnector; 

import org.mortbay.jetty.webapp.WebAppContext; 

public class Start { 

    public static void main(String[] args) throws Exception { 
     Server server = new Server(); 
     SocketConnector connector = new SocketConnector(); 

     // Set some timeout options to make debugging easier. 
     connector.setMaxIdleTime(1000 * 60 * 60); 
     connector.setSoLingerTime(-1); 
     connector.setPort(8080); 
     server.setConnectors(new Connector[] { connector }); 

     WebAppContext bb = new WebAppContext(); 
     bb.setServer(server); 
     bb.setContextPath("/"); 
     bb.setWar("WebContent"); 

     server.addHandler(bb); 

     try { 
      System.out.println(">>> STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP"); 
      server.start(); 
      System.in.read(); 
      System.out.println(">>> STOPPING EMBEDDED JETTY SERVER"); 
      // while (System.in.available() == 0) { 
      // Thread.sleep(5000); 
      // } 
      server.stop(); 
      server.join(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
      System.exit(100); 
     } 
    } 
} 

和下面的代碼是錯誤消息

2011-02-11 09:18:12.953:INFO::Logging to STDERR via org.mortbay.log.StdErrLog STARTING EMBEDDED JETTY SERVER, PRESS ANY KEY TO STOP 2011-02-11 09:18:13.000:INFO::jetty-6.1.25 2011-02-11 09:18:13.156:WARN::failed jsp: java.lang.NoClassDefFoundError: javax/servlet/jsp/JspApplicationContext 2011-02-11 09:18:13.171:WARN::failed [email protected]{/,WebContent}: java.lang.NoClassDefFoundError: javax/servlet/jsp/JspApplicationContext 2011-02-11 09:18:13.171:WARN::Error starting handlers java.lang.NoClassDefFoundError: javax/servlet/jsp/JspApplicationContext at org.apache.jasper.compiler.JspRuntimeContext.(JspRuntimeContext.java:103) at org.apache.jasper.servlet.JspServlet.init(JspServlet.java:134) at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:440) at org.mortbay.jetty.servlet.ServletHolder.doStart(ServletHolder.java:263) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.servlet.ServletHandler.initialize(ServletHandler.java:685) at org.mortbay.jetty.servlet.Context.startContext(Context.java:140) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1272) at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:517) at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) at org.mortbay.jetty.Server.doStart(Server.java:224) at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50) at com.pldt.embededserver.Start.main(Start.java:36) 2011-02-11 09:18:13.203:INFO::Started [email protected]:8080

我希望你們能幫我解決這個問題。我感到非常失望(有關jetty的文檔),這樣一個非常簡單的任務由於糟糕的文檔而變得非常混亂和耗時,即使是最簡單的任務(如何使用JSP運行Web應用程序)對於那些想學習java並將jetty作爲Servlet容器的人來說,這將非常困難。

在此先感謝。

+0

碼頭支持JSP,必須有一些配置問題。沒有什麼可以添加額外的東西來獲得使用嵌入式Jetty的JSP示例。 – Nishant 2011-02-12 10:45:50

回答

3

它看起來像你只是缺少一些jar文件。

儘管如此,我認爲你對文檔的抱怨不合適。 Jetty可以在JSP中正常工作,獨立的Jetty和Jetty-Maven插件都可以自動包含JSP支持。

你選擇做的是通過嵌入Jetty構建你自己的服務器,然後你沒有包含必要的jar文件來完成工作。
嵌入式Jetty是一種高級用例,文檔假定您知道自己在做什麼。現在

,至於這個問題,你碰到的......

裏面的碼頭分佈有一個lib/目錄。
那個lib/裏面有一個jsp-2.1目錄。
您需要在類路徑中包含該目錄中的所有jar文件。
你似乎缺少

  • JSP-2.1-與GlassFish 2.1.v20091210.jar
  • JSP-API-2.1-與GlassFish 2.1.v20091210.jar
  • ANT-1.6.5.jar
  • 核心3.1.1.jar

(他們可能會略有不同版本6.1.25碼頭 - 我把這些從6.1.26)

相關問題