Похоже, что вы выиграете от функционального слоя, например, instead of
|- persistence (daos)
|- domain (model objects)
|- core (biz logic based on spring-integration)
|- services (MDB)
Вы можете функционально распределить свое приложение по слоям.Допустим, ваше приложение торгует:
|- broker
|- product
|- underlying
|- option
|- future
|- forward
|- ..
|- feed
|- valuation
|- ...
При broker
у вас будет broker-persistence
, broker-service
и т. Д. Конечно, сфера бизнеса вашего приложения, вероятно, иная, и этоНаивный пример, но он иллюстрирует суть.
Таким образом, вы все равно можете включить все в свой EAR
, с гораздо большей гибкостью в отношении того, что может быть включено / импортировано в ваше веб-приложение.
Например, вы даже можете создать broker.war
отдельно от product.war
.Что также означает, что вы можете перераспределить a broker.war
без сброса product.war
.Возможно, он вам не понадобится в вашем бизнес-домене, но это хорошая возможность, которую можно получить, только если все наслоено в соответствии с бизнес-потребностями / областью, а не технологическим стеком.
Кстати, не нужно усложнять ситуацию с EAR
только для MDB, вы можете использовать POJO, управляемые сообщениями Spring *, которые будут просто управляться контейнером Spring.