Лучшее решение, которое я придумал, было вдохновлено этим вопросом .Я указал несколько контекстов на один и тот же файл военных действий:
<Service ...>
<Engine ...>
<Host ... autoDeploy="false">
<Context docBase="myapp.war" path="/tenant1"/>
<Context docBase="myapp.war" path="/tenant2"/>
</Host>
</Engine>
</Service>
По сути, это то же самое, что создание копий myapp.war под названием tenant1.war, tenant2.war и т. Д. Каждый арендатор технически управляет своимсобственное веб-приложение, даже если все они используют один и тот же код.Если у вас есть пользователи с учетными данными на двух или более арендаторах, они могут войти в систему обоих одновременно, и каждое веб-приложение получит свой собственный сеанс, поскольку каждый из файлов cookie JSESSIONID, содержащих идентификатор сеанса, связан с определенным контекстным путем.
У этого подхода есть недостатки.Во-первых, все классы в файле войны перезагружаются для каждого арендатора, поэтому мне придется следить за пространством PermGen.Во-вторых, мне придется редактировать server.xml каждый раз, когда появляется новый клиент.Вы нашли лучшее решение?