Вы можете начать создавать ClassLoader
, развернуть .war
, загрузить классы и отправить запрос в ваше приложение в нужное суб-веб-приложение. Это похоже на повторное изобретение колеса (учитывая, что сервер приложений уже это делает) и, вероятно, очень сложно.
С другой стороны, это выглядит очень похоже на то, как работает portlets
. Портлеты упаковываются в файл .war
и затем используются порталом. Например, на портале Liferay вы можете загрузить портлет .war
с портала liferay (не самого сервера приложений). Затем Liferay поместит загруженный файл .war
в каталог автоматического развертывания приложения. сервер, который затем будет развернут как обычное веб-приложение. Кроме того, существует мост с портлетами, который отправляет запрос от портала к нужному веб-приложению с портлетами и т. Д. Возможно, стоит взглянуть поближе.
Я не знаю ваших требований, но я бы определенно постарался сделать это простым, так как такие вещи могут стать действительно сложными. Но вы могли бы:
- Позволяет пользователю загружать
.war
из вашего приложения
- Манипулируйте
.war
и web.xml
, чтобы убедиться, что контекст выглядит как /ParentApp/ChildApp
- Сохраните измененный
.war
в папку автоматического развертывания и запустите приложение. сервер развернуть его
Это создаст иллюзию, что вы можете развернуть суб-приложение из родительского веб-приложения.