Это может быть очень элементарным вопросом, но, пожалуйста, выручите меня, если это известно и было решено в другом месте.
У меня есть мультивоенная установка (все модули знатока) говорят килограмм-webapp1
и килограмм-webapp2
как две ВОЙНЫ, которые я должен развернуть на случае Кота. Эти два webapps обе услуги по использованию от банки общего обслуживания, говорят kilo-common-services.jar
. kilo-common-services.jar
имеет его собственный весенний контекст, который загружается пользователями банки то есть килограмм-webapp1
и килограмм-webapp2
в этом случае. Это так происходит, что инициализация услуг в общем обслуживании килограмма занимает много времени, и следовательно я хочу, чтобы он произошел только однажды (чтобы гарантировать, что время, которое требуется, чтобы поднять случай, не очень высоко), который также помогает мне использовать его в качестве второго тайника уровня, который это держало в курсе в случае JVM. Чтобы сделать это, мы обратились к следующим шагам:
- Modify the catalina.properties of CATALINA_BASE in tomcat to have
shared.loader
as ${catalina.base}/shared/lib
- Copied the
kilo-common-services.jar
and all of its dependent jars to the CATALINA_BASE/shared/lib
. [Manual step]
- Copy spring related jars to the
CATALINA_BASE/shared/lib
location [Manual step]
- Created a
beanRefContext.xml
file in kilo-common-services.jar
. Define a new ClassPathXmlApplicationContext
here, where the constructor was provided with the location to the spring context file for the common services.
- Noted the dependency scope of
kilo-common-services.jar
and every other dependency (like Spring related jars) as provided
in the kilo-webapp1
and kilo-webapp2
pom files. For Spring this is needed to ensure that the classpath scanning actions are not triggered twice. Also this causes different ClassCastException
s (for log4j lets's say) if not excluded via the provided
scope.
- web.xml for
kilo-webapp1
and kilo-webapp2
indicated that the parentContext for them is the servicesContext
defined in kilo-common-services.jar
.
Я смог проверить, что только один случай услуг по общему обслуживанию килограмма существует, но установка, как вы, возможно, предположили, болезненная. Если бы у кого-то есть методы наиболее успешной практики о такой установке в IDE как Затмение, был бы очень признателен за его. Мои проблемы как указано ниже:
- #2 становится проблемой. Я в настоящее время бегу
mvn dependency:copy-зависимости
на общее обслуживание килограмма
, чтобы скопировать зависимые банки с , цель/зависимость
к делилась/освобождала
, который является горестно ручным шагом. Снова и снова я забываю восстанавливать зависимости и иметь, чтобы сделать повторно развертывание снова.
- #3 также не прямой как снова и снова есть более новые общие зависимости, и мы всегда должны не забывать копировать его к общему lib, чтобы избежать ClassCastExceptions
- #5 является снова кошмаром обслуживания.
Также в то время как время прогрессирует, там будут больше таких разрозненных общих банок, которые должны быть разделены, и оно включило бы боль для каждой из тех банок. Не стесняйтесь критиковать установку и предлагать лучшую в его месте, которое может быть просто в использовании (от IDE также). Было бы радо предоставить любую другую подробную информацию.
Заранее спасибо!