且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2023-11-22 18:37:16

要实现此目的,您需要:

To accomplish this, you need:

  1. 每个 ServerConnector 应具有通过ServerConnector.setName(String)
  2. 声明的唯一名称
  3. 定义 ,声明一组采用命名虚拟主机语法"@{name}"的虚拟主机,其中{name}与您为连接器选择的相同. (注意:没有"@"符号的虚拟主机是基于主机名的传统虚拟主机)
  1. Each ServerConnector should have a unique name declared via ServerConnector.setName(String)
  2. When you define your WebAppContext, declare a set of virtual hosts that take a named virtual host syntax "@{name}", where the {name} is the same one you chose for the connector. (Note: A virtualhost without the "@" sign is a traditional virtualhost based on hostnames)

喜欢这个...

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);
        }
    }
}