如何在Eclipse中使用jsp将jetty嵌入到动态web项目中
由于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容器的人来说,这将非常困难。
在此先感谢。
它看起来像你只是缺少一些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)
码头支持JSP,必须有一些配置问题。没有什么可以添加额外的东西来获得使用嵌入式Jetty的JSP示例。 – Nishant 2011-02-12 10:45:50