首页 文章

两个上下文一个服务器码头

提问于
浏览
1

我有两个jetty嵌入式服务器,localhost:9001 / WebApp1和localhost:9002 / WebApp2,你可以看到它们在不同的端口上 . 我希望他们在创建服务器期间共享相同的端口是否可能? (顺便说一下,它们也是两个独立的jar文件) . 所以我可以做这样的事情而不是localhost:9001 / WebApp1和localhost:9001 / WebApp2

或者我坚持制作战争文件,然后将它们包含在tomcat / glassfish服务器中

在创建服务器期间我经常看到这个

ContextHandler context = new ContextHandler();
context.setContextPath("/WebApp1");
context.setHandler(new WebApp1());
Server server = new Server(9001);
server.setHandler(context);
server.start();            
server.join();

在第二个应用程序,我想有一些看起来像这样的东西

ContextHandler context = new ContextHandler();
context.setContextPath("/WebApp2");
context.setHandler(new WebApp2());
Server server = getExistingServer(9001);
server.addHandler(context);

我看到有这样的方法server.getHandlers();返回一个处理程序数组如何向现有列表添加新处理程序,或者在端口9001上运行现有的jetty服务器

1 回答

  • 7

    Jetty是一个标准的servlet容器,当然可以处理不同的上下文 . 请参阅Jetty文档第24章中的Embedding Contexts部分 .

    这是ManyContexts example(Jetty文档的一部分):

    public class ManyContexts
    {
      public static void main( String[] args ) throws Exception
      {
        Server server = new Server(8080);
    
        ContextHandler context = new ContextHandler("/");
        context.setContextPath("/");
        context.setHandler(new HelloHandler("Root Hello"));
    
        ContextHandler contextFR = new ContextHandler("/fr");
        contextFR.setHandler(new HelloHandler("Bonjoir"));
    
        ContextHandler contextIT = new ContextHandler("/it");
        contextIT.setHandler(new HelloHandler("Bongiorno"));
    
        ContextHandler contextV = new ContextHandler("/");
        contextV.setVirtualHosts(new String[] { "127.0.0.2" });
        contextV.setHandler(new HelloHandler("Virtual Hello"));
    
        ContextHandlerCollection contexts = new ContextHandlerCollection();
        contexts.setHandlers(new Handler[] { context, contextFR, contextIT, contextV });
    
        server.setHandler(contexts);
    
        server.start();
        server.join();
      }
    }
    

相关问题