Tomcat предоставляет API для создания нового виртуального хоста. Чтобы получить доступ к объекту-оболочке, необходимому для этого, вам необходимо реализовать ContainerServlet. Вы можете создать виртуальный хост, как это,
Context context = (Context) wrapper.getParent();
Host currentHost = (Host) context.getParent();
Engine engine = (Engine) currentHost.getParent();
StandardHost host = new StandardHost();
host.setAppBase(appBase);
host.setName(domainName);
engine.addChild(host);
Необходимо убедиться, что каталог appBase существует, и вам нужно найти способы сохранить новый хост в файле server.xml, иначе вы потеряете хост при перезапуске.
Однако такой подход редко работает. Если ваши пользователи запускают свои собственные приложения, вам действительно нужно запускать отдельные экземпляры Tomcat, чтобы вы могли лучше помещать приложения в песочницу. например Одно приложение не хватает памяти не убивает все другие приложения.
Если вы предоставите приложение, вы можете просто использовать один хост (defaultHost). Вы можете получить доменное имя из заголовка Host
и делать все, что связано с доменом, в вашем коде.