Jetty中的这种配置有什么问题?无法运行任何上下文

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jetty中的这种配置有什么问题?无法运行任何上下文相关的知识,希望对你有一定的参考价值。

这是我的代码 -

    Server server = new Server();
    ServerConnector pxy = new ServerConnector(server);
    pxy.setPort(8080);
    server.addConnector(pxy);

    HandlerCollection handlers = new HandlerCollection();

    ServletContextHandler test1 = new ServletContextHandler(handlers, "/test1", ServletContextHandler.NO_SESSIONS);
    ServletContextHandler test2 = new ServletContextHandler(handlers, "/test2", ServletContextHandler.NO_SESSIONS);


    ServletHolder rootServletHolder = new ServletHolder(root.class);      
    test1.addServlet(rootServletHolder, "/test1/*");

    ServletHolder testServletHolder = new ServletHolder(test.class);      
    test2.addServlet(testServletHolder, "/test2/*");


    server.setHandler(handlers);
    server.start();
    server.join();

当我去http://domainName.com:8080/test1http://domainName.com:8080/test2时,我找不到错误信息。

Jetty初创公司看起来像这样 -

2013-06-07 18:58:59.871:INFO:oejs.Server:main:jetty-9.0.3.v20130506 2013-06-07 18:58:59.895:INFO:oejsh.ContextHandler:main:已启动oejsServletContextHandler @ 7c87c24a {/ test1,null,AVAILABLE} 2013-06-07 18:58:59.896:INFO:oejsh.ContextHandler:main:已启动oejsServletContextHandler @ 34e4c825 {/ test2,null,AVAILABLE} 2013-06-07 18:58:59.919 :INFO:oejs.ServerConnector:main:已启动ServerConnector @ 3932f2b2 {HTTP / 1.1} {0.0.0.0:8080}

答案

您的配置具有"/test1"的上下文和"/test1/*"下的servlet

这意味着您的网址将是http://domainName.com:8080/test1/test1/

只要这样思考它就会有意义。

  • ServletContextHandler == WebApp
  • ServletContextHandler.addServlet()==将servlet添加到该WebApp

我想你想要的是一个单独的ServletContextHandler,比如"/",并添加了2个servlet。

例:

Server server = new Server();
ServerConnector pxy = new ServerConnector(server);
pxy.setPort(8080);
server.addConnector(pxy);

// Use ContextHandlerCollection 
ContextHandlerCollection contexts = new ContextHandlerCollection();
// Don't forget to add it to the server!
server.setHandler(contexts);

ServletContextHandler testApp = new ServletContextHandler(contexts, "/",
    ServletContextHandler.NO_SESSIONS);

ServletHolder rootServletHolder = new ServletHolder(root.class);      
ServletHolder testServletHolder = new ServletHolder(test.class);      

testApp.addServlet(rootServletHolder, "/test1/*");
testApp.addServlet(testServletHolder, "/test2/*");


server.setHandler(handlers);
server.start();
server.join();

另外,看看嵌入式jetty示例。 ManyServletContext.java似乎最相关。

以上是关于Jetty中的这种配置有什么问题?无法运行任何上下文的主要内容,如果未能解决你的问题,请参考以下文章

Jetty配置虚拟目录,实现把web项目发布到自定义目录,指定指定上下文访问;jetty编码修改

Jetty总览

IntelliJ IDEA配置Tomcat/Jetty运行Web项目

Cargo 在哪里为 Jetty 6.x 生成上下文 XML?

apache + mod_proxy + jetty无法访问静态资源的问题

idea 中怎么修改jetty的端口号