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

问题描述 投票:2回答:1

我有两个码头嵌入式服务器,本地主机:9001 / WebApp1和本地主机:9002 / WebApp2,如您所见,它们位于不同的端口上。我希望他们在服务器创建期间共享相同的端口可能吗? (顺便说一句,它们也是两个单独的jar文件)。所以我可以做这样的事情吗本地主机:9001 / WebApp1和本地主机: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上运行

java jetty
1个回答
8
投票

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();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.