2009-08-05 2 views
2

У меня большой монолитный webapp, и всякий раз, когда я вношу изменения в конкретный раздел webapp, я вынужден развернуть все приложение.Разбивка webapp на несколько частей (tomcat)

Я хотел бы разбить это на более мелкие куски на основе функциональности (например, на веб-сайте банка - я хочу отделить информационные материалы от функций онлайн-банкинга, поэтому, если я внесу изменения в функции онлайн-банкинга, я просто разворачивайте эту часть)

Задача здесь заключается в существовании некоторых общих элементов в webapp, таких как общий класс, общий для приложения.

Любые мысли о том, как можно было бы сделать разбиение веб-карт? Благодарю.

ответ

1

Это не характерный для tomcat, но в целом, если вы разбиваете веб-приложение, вам нужно каким-то образом разделить другое состояние на распределенные части. Вы можете сделать это с помощью базы данных или хранилища memcached для информации о сеансе, но убедитесь, что каждое приложение может считывать общие данные сеанса (некоторые фреймворки будут использовать ключ для шифрования данных сеанса, и все они должны иметь один и тот же ключ для чтения Это). Я не думаю, что большинство файлов cookie для информации о сеансе будут хешировать таким образом, чтобы файл cookie не сохранялся правильно между приложениями.

Нарушение функции имеет смысл. Посмотрите, где вы можете отделить свой код. Если у вас хорошие URL-адреса, вы можете посмотреть URL-адреса, чтобы помочь определить хорошие разделы.

Кроме того, если у вас есть большой статический раздел, который вы обновляете отдельно, возможно, это должно быть подано чем-то другим, кроме tomcat.

Для общих классов вы можете размещать реализации классов в банке в своей папке tomcat/lib. Они будут доступны для всего сервера. Они не смогут быть хорошо адаптированы к вашему веб-контексту (если вы не передали им контекст), и вам придется перезапустить весь сервер, чтобы обновить файл jar, чтобы он мог перезагрузить его.

Возможно, вы можете работать с интерфейсами, которые обеспечивают вам большую независимость в каждом разделе, что позволяет им самостоятельно скомпилировать. Возможно, вызов удаленного метода также поможет вам переместить общие функции в один .jar или .war.

+0

Спасибо Danivo. Извините, что в моем вопросе не было ясно, сессия была всего лишь примером совместного объекта. Я ищу любой компонент, который является общим, например. класс, который используется всем приложением. – rubyer

Смежные вопросы