有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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时,会收到未找到的错误消息

码头启动看起来像这样-

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: Started o.e.j.s.ServletContextHandler@7c87c24a{/test1,null,AVAILABLE} 2013-06-07 18:58:59.896:INFO:oejsh.ContextHandler:main: Started o.e.j.s.ServletContextHandler@34e4c825{/test2,null,AVAILABLE} 2013-06-07 18:58:59.919:INFO:oejs.ServerConnector:main: Started ServerConnector@3932f2b2{HTTP/1.1}{0.0.0.0:8080}


共 (1) 个答案

  1. # 1 楼答案

    您的配置有一个"/test1"的上下文,在"/test1/*"的上下文下有一个servlet

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

    这样想就会有意义

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

    我想你想要的是一个单一的ServletContextHandler,比如说"/",并在其中添加两个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似乎最相关