jetty服务器9.1多个嵌入式端口和应用程序在同一服务器实例中

时间:2013-12-10 09:40:27

标签: java jetty

我应该使用一个Server对象,并且需要打开多个端口和多个应用程序(WAR文件)。 例如,一个服务器对象, 8080另外.war 8081 subraction.war 等

我正在使用Jetty服务器9.1.0 我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

要完成此任务,您需要:

  1. 每个ServerConnector都应具有通过ServerConnector.setName(String)
  2. 声明的唯一名称
  3. 定义WebAppContext时,声明一组采用命名虚拟主机语法"@{name}"的虚拟主机,其中{name}与您为连接器选择的相同。 (注意:没有“@”符号的虚拟主机是基于主机名的传统虚拟主机)
  4. 喜欢这个......

    package jetty.demo;
    
    import org.eclipse.jetty.server.Server;
    import org.eclipse.jetty.server.ServerConnector;
    import org.eclipse.jetty.server.handler.HandlerCollection;
    import org.eclipse.jetty.webapp.WebAppContext;
    
    public class ConnectorSpecificContexts
    {
        public static void main(String[] args)
        {
            Server server = new Server();
    
            ServerConnector connectorA = new ServerConnector(server);
            connectorA.setPort(8080);
            connectorA.setName("connA"); // connector name A
            ServerConnector connectorB = new ServerConnector(server);
            connectorB.setPort(9090);
            connectorB.setName("connB"); // connector name B
    
            server.addConnector(connectorA);
            server.addConnector(connectorB);
    
            // Basic handler collection
            HandlerCollection contexts = new HandlerCollection();
            server.setHandler(contexts);
    
            // WebApp A
            WebAppContext appA = new WebAppContext();
            appA.setContextPath("/a");
            appA.setWar("./webapps/webapp-a.war");
            appA.setVirtualHosts(new String[]{"@connA"}); // connector name A
            contexts.addHandler(appA);
    
            // WebApp B
            WebAppContext appB = new WebAppContext();
            appB.setContextPath("/b");
            appB.setWar("./webapps/webapp-b.war");
            appB.setVirtualHosts(new String[]{"@connB"}); // connector name B
            contexts.addHandler(appB);
    
            try
            {
                server.start(); // start server thread
                server.join(); // wait for server thread to end
            }
            catch (Throwable t)
            {
                t.printStackTrace(System.err);
            }
        }
    }