Обработка мультивоенной установки с общим родительским весенним контекстом у кота со знатоком

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

У меня есть мультивоенная установка (все модули знатока) говорят килограмм-webapp1 и килограмм-webapp2 как две ВОЙНЫ, которые я должен развернуть на случае Кота. Эти два webapps обе услуги по использованию от банки общего обслуживания, говорят kilo-common-services.jar . kilo-common-services.jar имеет его собственный весенний контекст, который загружается пользователями банки то есть килограмм-webapp1 и килограмм-webapp2 в этом случае. Это так происходит, что инициализация услуг в общем обслуживании килограмма занимает много времени, и следовательно я хочу, чтобы он произошел только однажды (чтобы гарантировать, что время, которое требуется, чтобы поднять случай, не очень высоко), который также помогает мне использовать его в качестве второго тайника уровня, который это держало в курсе в случае JVM. Чтобы сделать это, мы обратились к следующим шагам:

  1. Modify the catalina.properties of CATALINA_BASE in tomcat to have shared.loader as ${catalina.base}/shared/lib
  2. Copied the kilo-common-services.jar and all of its dependent jars to the CATALINA_BASE/shared/lib. [Manual step]
  3. Copy spring related jars to the CATALINA_BASE/shared/lib location [Manual step]
  4. 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.
  5. 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 ClassCastExceptions (for log4j lets's say) if not excluded via the provided scope.
  6. 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 также). Было бы радо предоставить любую другую подробную информацию.

Заранее спасибо!

3
nl ja de
@khmarbaise я заинтригован знать, каковы эти реальные проблемы, когда у меня было впечатление, это было точно трудным знатоком, поблочным тестированием и непрерывной интеграцией, были разработаны, чтобы решить...
добавлено автор NimChimpsky, источник
Какой вид те услуги в kilo-common-services.jar ? Веб-сервисы? Или просто вид функциональности библиотеки, которая будет использоваться в качестве общего кода?
добавлено автор khmarbaise, источник
Если бы это - просто общая кодовая библиотека, я предложил бы, просто упаковывают его и с военными файлами и с вашим избавленным из отдельного шага развертывания (разделенная библиотека), который обычно вызывает проблему в реальной жизни.
добавлено автор khmarbaise, источник
Я думаю, что он хочет держать тайник на приложении, that' s, почему он хочет только один случай общих для килограмма. Вы могли использовать распределенный тайник, но that' s добавляющий БОЛЬШУЮ сложность:S.
добавлено автор Augusto, источник
Обычная библиотека незавершенные услуги.
добавлено автор Kilokahn, источник

2 ответы

Проблема состоит в том, что ваша архитектура сломана (и вот почему вы боретесь с решением). У вас есть два решения:

1) Если вы хотите разделить обслуживание, которому требуется много времени (чтобы инициализировать) между двумя приложениями войны, сделать это отдельным обслуживанием полностью и получить доступ к нему через отдых или любой вид remoting.

2) Слейте обоих webapps в один.

Наличие общей библиотеки является общей папкой lib, собирается принести вам много головных болей, и вы закончите тем, что понизили его до прежнего уровня.

Мой (личный) подход должен был бы слить оба заявления, но сохранять пакеты достаточно отдельными и иметь отдельные весенние конфигурации. Таким образом по крайней мере вы все еще сохраняете логическое разделение обоих webapps. Также, так как оба работают на том же самом контейнере, есть мало выгоды от наличия 2 отдельных войн (если вы не планируете переместить их в различные контейнеры очень скоро).


О IDE можно использовать грузовой плагин знатока, чтобы запустить кота с несколькими веб-приложениями с (почти) любой конфигурацией, которую вы хотите.

2
добавлено
"Наличие общей библиотеки является общей папкой lib, собирается принести вам много головных болей" Почему? У вас есть одна версия необходимых файлов/классов в общем ресурсе, какова проблема...? Если вы преобразовываете в требования ОТДЫХА, это - третье веб-приложение, которым необходимо управлять (и во-первых разработать успокоительный интерфейс для),
добавлено автор NimChimpsky, источник
"как ввести общие объекты в оба веб-приложения", Почему это было бы проблемой? вы просто делаете это столь же нормальный (в моем случае, включайте банку как depdencies и введите с аннотацией. Я все еще don' t понимают, почему это "classloader кошмар". Я только что переместил все свои банки в совместно используемую папку, и я должен был увеличить MaxPermspace..., но мои складные военные файлы сжались в размере от 20 МБ до 400 КБ.
добавлено автор NimChimpsky, источник
Ответ находится в оригинальном вопросе: он хочет инициализировать общее обслуживание только однажды. Проблема очень проста (но не очевидна), it' s очень легкий создать classloader кошмар. Этот подход хорошо работает со стандартными ресурсами (например, jdbc связи), но наличие полной стопки бизнес-логики в общей библиотеке не. У этого также есть проблема того, как ввести общие объекты в оба веб-приложения (но это может быть сделано с некоторым jndi hackery),
добавлено автор Augusto, источник
"Этот подход хорошо работает со стандартными ресурсами (например, jdbc связи)", Вы ясно имели в виду источники данных JDBC (не связи). Ну, that' s хороший пример общей бизнес-услуги - объединил источники данных JDBC, всегда разделялись, и она хорошо работала. И they' ре ни в коем случае "стандартные ресурсы", they' распространенное ре, но не стандартный. Так it' s не ясный, почему другие бизнес-услуги не могут использоваться тем же самым способом в качестве источников данных JDBC. Что касается RESTifying их - это - большое исполнительное воздействие. Теперь instad запроса метода в JVM необходимо преобразовать в последовательную форму параметры в JSON и том же самом для ответа.
добавлено автор mvmn, источник

Мы развиваем успокоительный soa, с весной и котом и используем Область, которую Ведут Дизайном (хорошо, это - план так или иначе). Есть migrationProject и начальный основной поисковый сервис. Два отдельных ВОЕННЫХ файла, с двумя отдельными АНГЛИЧАНАМИ. Оба используют те же самые Объекты области.

Таким образом, у меня будет отдельный проект, который будет просто DomainObjects, я оберну их в банку и затем использование знатока и/или jenkins, который это развернет автоматически (каждый раз, когда я формирую (например, когда выдвинуто в определенное хранилище).

Имея две копии той же самой банки, походит на намного худшую идею мне. Не ваша архитектура, которая сломана, ее ваш процесс развертывания и процесс разработки, это - улучшение потребностей, по моему скромному мнению.

(мой вид связанного вопроса).

Наш долгосрочный план состоит в том, чтобы иметь один проект как успокоительный интерфейс с многократными Диспетчерами, у которых есть сервисные классы и хранилища, введенные в них от их зависимостей.

0
добавлено
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Spring Framework and more
Spring Framework and more
839 участник(ов)

чат о spring framework и связанных с ним технологиях. We're discussing: job, tech questions, beer meet up/networking: tech review ,LinkedIn skills, SOF q/a raise up& etc. languages: russian,java,eng.

IDE и редакторы — русскоговорящее сообщество
IDE и редакторы — русскоговорящее сообщество
393 участник(ов)

Общаемся, сравниваем и помогаем друг другу решать задачи с продуктами JetBrains, VS Code, Atom, vim, Emacs, Sublime и т.д. Всё в одном месте, ведь каждый из них хорош по своему. См. также: @js_ru, @typescript_ru, @react_js, @nodejs_ru, @javascript_jobs

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async