Jetty嵌入式:JSP和Servlet在一起?

时间:2010-11-13 00:08:19

标签: java jsp servlets jetty

我有一个嵌入式Jetty 6.1.26的应用程序。 Servlet 2.5。 以下是我的服务器配置。

问题是,当我尝试将JSP和Servlet放在一起时,它不起作用。根据我在下面的代码中是server.addHandler()还是server.setHandler(),我要么有一个工作,要么工作。

通过“不起作用”我的意思是Jetty返回404,但是否则它看起来很好,甚至Jetty日志显示配置也没问题 - 请参阅http://pastebin.com/PzbEx0qc(使用addHandler(),JSP无效)

请求的URL是
http://localhost:17283/jars?mvnPath= ......和 http://localhost:17283/jsp/index.jsp

谢谢, Ondra

Server server = new Server( PORT );
Context ctx = new Context( server, "/", Context.NO_SECURITY | Context.SESSIONS );


final String WEBAPP_RESOURCES_PATH = "org/jboss/qa/mavenhoe/web/jsp";
final String JSP_CONTEXT_PATH = "/jsp";

// For localhost:port/jsp/index.html and whatever else is in the directory...
final URL warUrl = this.getClass().getClassLoader().getResource(WEBAPP_RESOURCES_PATH);
final String warUrlString = warUrl.toExternalForm();
    WebAppContext webAppContext = new WebAppContext(warUrlString, JSP_CONTEXT_PATH);
webAppContext.setAttribute("jarIndex", jarIndex);
server.addHandler( webAppContext );


// .jar's download.
final ServletHolder mavenhoeSH = new ServletHolder(new JarFinderServlet(this.jarIndex));
ctx.addServlet( mavenhoeSH, "/jars" );


final ServletHolder shutdownSH = new ServletHolder(new JettyShutdownServlet( server ));
shutdownSH.checkServletType();
ctx.addServlet( shutdownSH, "/shutdown" );

1 个答案:

答案 0 :(得分:0)

每个路径组件应由其自己的上下文处理,并确保对多个上下文使用ContextHandlerCollection

ContextHandlerCollection contexts = new ContextHandlerCollection();

contexts.setHandlers(new Handler[] { jspContext, servletContext });

server.setHandler(contexts);