У war-файлов с моками веб-сервисов, которые генерирует soapUI, есть одна существенная проблема - они очень большие (около 68Мб). Особенно эта проблема ощущается, когда нужно развернуть много моков сразу, а канал до сервера очень узкий.
99% размера мока занимают библиотеки, которые у всех моков одинаковые. Поэтому первая идея, которая возникла - положить все эти библиотеки в /lib томката, на котором производится развертывание. Тогда в war-никах перед их деплоем можно удалять все jar-файлы из WEB-INF/lib (не руками конечно, написать для этого ant-билдфайл не проблема, тем более, что он позволит сразу и автоматизировать развертывание, чтобы не делать это через веб-интерфейс Tomcat Manager`а).
Но тут возникла следующая курьезная ситуация: мок, развернутый последним, каким-то чудесным образом заменял конфигурацию всех ранее развернутых моков на свою, и в результате все мок-сервисы на томкате начинали работать как один - выдавать одинаковые wsdl`ки и т.п. Конечно, такому поведению можно найти логичное объяснение, но лучше от этого не становится =)
Поэтому пришлось поступить хитрее. Во-первых, я переместил все soapui-шные библиотеки из /lib томката в другое место (не суть важно, в какое). Во-вторых, процесс деплоя стал выглядеть так:
- Мок деплоится без библиотек
- Только что развернутое веб-приложение останавливается
- В его WEB-INF/lib делаются симлинки на все необходимые библиотеки (чтобы не копировать и не занимать тем самым лишнее место на диске сервера)
- Приложение стартует
Для автоматизации такого процесса одним только ant-билдфайлом на стороне клиента (машины, с которой производится развертывание) не обойтись (если только поднять ssh / ftp на сервере, что мне показалось не лучшей идеей), пришлось на сервере разместить небольшой сервлет, выполняющий создание симлинков и вызываемый из клиентского билдфайла. Всё, задача решена, моки размером в несколько десятков килобайт деплоятся влет.
Комментариев нет:
Отправить комментарий