|
|
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
Сейчас у нас имеется одно большое приложение. Хочу разделить его на несколько маленьких. Связей между ними будет не много. Общий код (утилиты) вынесу в отдельный проект, который будет собираться в .jar и помещаться в каждый .war (приложение). Я не знаю как быть с БД. У нас используется Spring Data JPA. В основном, у каждого приложения свои таблицы, но как быть в общими таблицами (пользователи, авторизованные пользователи и т.п.)? Я думаю организовать мапинг их в одном приложении, а из других получать эти данные сообщениями. Нагуглил RMI, JMX, JMS, но ни с одним опыта не имею. Что считается лучшей практикой для обмена данными между приложениями в рамках одного Tomcat? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 10:50 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-Max и помещаться в каждый .war (приложение). Это чревато тем что когда модули начнуть обмениваться объектами классов из этого jar, то они отхватят ClassCastException. Либо их предется каждый раз сериализовать, что для передачи внутри JVM довольно глупо. DS-MaxЯ не знаю как быть с БД. У нас используется Spring Data JPA. В основном, у каждого приложения свои таблицы, но как быть в общими таблицами (пользователи, авторизованные пользователи и т.п.)? Я думаю организовать мапинг их в одном приложении, а из других получать эти данные сообщениями. Не понятно что значить "общие таблицы". Это физически одни и те же таблицы, или одинаковые имена таблица в разных БД. DS-MaxНагуглил RMI, JMX, JMS, но ни с одним опыта не имею. RMI это Remote Method Invocation. Удаленный вызов методов. У вас тут чего удаленного в одном Томкате? JMX это Java Management Extensions. Чем управлять собрались? JMS служит для асинхронной обрабоки сообщений. Асинхронность нужна? DS-MaxЧто считается лучшей практикой для обмена данными между приложениями в рамках одного Tomcat? Внутри одной JVM - вызов Java методов считается лучшей практикой. Для кластера, соостветственно нужны кластерные решения. Апологеты JEE могут ещё припомнить EJB в виде Session Bean-ов с их локальными интерфейсами. А ещё вы не рассказали зачем именно собираетесь разбивать приложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 10:58 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxОбщий код (утилиты) вынесу в отдельный проект, который будет собираться в .jar и помещаться в каждый .war (приложение). Это как понимать? Общий код выносят в ОБЩИЙ \lib папку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:05 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxЧто считается лучшей практикой для обмена данными между приложениями в рамках одного Tomcat? сначала придумайте какой БЛ будете обмениваться. Обмен пользователями это SSO а не то что вы подумали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:07 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
Petro123DS-MaxОбщий код (утилиты) вынесу в отдельный проект, который будет собираться в .jar и помещаться в каждый .war (приложение). Это как понимать? Общий код выносят в ОБЩИЙ \lib папку. Думали так сделать, но, не помню почему, решили в каждый war'ник класть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:08 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxДумали так сделать, но, не помню почему, решили в каждый war'ник класть. Как вообще можно что-то делать не понимя зачем именно это делаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:18 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНе понятно что значить "общие таблицы". Это физически одни и те же таблицы, или одинаковые имена таблица в разных БД. Физически одни таблицы, но данные из них нужны в разных приложениях (приложение = .war в Tomcat). BlazkowiczАсинхронность нужна? Нет. BlazkowiczВнутри одной JVM - вызов Java методов считается лучшей практикой. Для кластера, соостветственно нужны кластерные решения. Можно чуть по подробнее? Я думал нельзя просто вызвать метод из соседнего приложения (в одном Tomcat). BlazkowiczАпологеты JEE могут ещё припомнить EJB в виде Session Bean-ов с их локальными интерфейсами. Погуглю. BlazkowiczА ещё вы не рассказали зачем именно собираетесь разбивать приложение. [/quot] В компании текучка, а новичку проще разобраться в маленьком приложении, не разбираясь сразу во всём приложении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:19 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxВ компании текучка, а новичку проще разобраться в маленьком приложении, не разбираясь сразу во всём приложении. может наоборот? Сложнее разобраться во хитрых взаимосвязях разрезанного на куски одеяла и зоопарка приложений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:21 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
BlazkowiczDS-MaxДумали так сделать, но, не помню почему, решили в каждый war'ник класть. Как вообще можно что-то делать не понимя зачем именно это делаешь? Я же говорю, когда принимали решение, были аргументы. Сейчас их не помню, я этому вопросу не уделил должного внимания. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:26 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
Petro123DS-MaxВ компании текучка, а новичку проще разобраться в маленьком приложении, не разбираясь сразу во всём приложении. может наоборот? Сложнее разобраться во хитрых взаимосвязях разрезанного на куски одеяла и зоопарка приложений? На самом деле у нас отдельные приложения будут слабо связаны между собой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:30 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxФизически одни таблицы, но данные из них нужны в разных приложениях (приложение = .war в Tomcat). Ну, тогда и Persistence Unit нужен один на всех. Смысл разделения? DS-MaxМожно чуть по подробнее? Я думал нельзя просто вызвать метод из соседнего приложения (в одном Tomcat). Это одна JVM. Вызывать можно любой метод, главное получить ссылку на объект. DS-MaxВ компании текучка, а новичку проще разобраться в маленьком приложении, не разбираясь сразу во всём приложении. В зависимости от того чтоименно вы пытаетесть достичь, я бы - Разделял модули в Maven, оставил один war. - Разделять war-ы, но завести общие либы. А ещё лучше завернуть в один ear. Но что-то более конкретное вам советовать сложно, потому что понимания для чего это делать - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:32 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxНа самом деле у нас отдельные приложения будут слабо связаны между собой. Связность больше является характеристикой кода. Никто вам не мешает добиться слабо связаных модулей на уровне кода, но собирать их в один war. Это совершенно отдельные друг от друга задачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:34 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxЯ же говорю, когда принимали решение, были аргументы. Сейчас их не помню, я этому вопросу не уделил должного внимания. Ну, это как водитель такси, которому сказали ехать, но не сказали куда. И он едет. Не знает куда, но едет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:36 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxНа самом деле у нас отдельные приложения будут слабо связаны между собой. программист каждый день принимает такие решения взвешенно. Кто сказал что будет не зоопарк? Сам не в курсе - позови того кто в курсе. Иначе рано делать связи между приложениями. Делай связи между классами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:36 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
Petro123сначала придумайте какой БЛ будете обмениваться. А что такое "БЛ"? :) Petro123Обмен пользователями это SSO а не то что вы подумали. Для работы с пользователями у нас свой велосипед :( С хранением сессий в БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:38 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
Petro123DS-MaxНа самом деле у нас отдельные приложения будут слабо связаны между собой. программист каждый день принимает такие решения взвешенно. Кто сказал что будет не зоопарк? Сам не в курсе - позови того кто в курсе. Иначе рано делать связи между приложениями. Делай связи между классами. Я хорошо знаю проект, давно в нём. Несколько приложений давно отделены от основного. Т.е. какой-то опыт есть, только костыльный, а хочется сделать правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:44 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxА что такое "БЛ"? :) бизнес логика. например, 1С:Бухгалтерия и 1С:Торговля и Склад (ТиС) DS-MaxТ.е. какой-то опыт есть, только костыльный, а хочется сделать правильно. попробуй связь через REST. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 11:55 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, тогда и Persistence Unit нужен один на всех. Смысл разделения? Я как раз и не знаю как сделать его один на всех. Имелось ввиду на все war'ники в одном Tomcat? BlazkowiczЭто одна JVM. Вызывать можно любой метод, главное получить ссылку на объект. Тогда, чтобы далеко не ходить, можно нескромный вопрос? :) Как получить эту ссылку из соседнего war'ника? BlazkowiczВ зависимости от того что именно вы пытаетесь достичь, я бы - Разделял модули в Maven, оставил один war. - Разделять war-ы, но завести общие либы. А ещё лучше завернуть в один ear. Но что-то более конкретное вам советовать сложно, потому что понимания для чего это делать - нет. Разбить на маленькие части, чтобы упростить работу. Возможно закрепить персонал за своими приложениями. В идеале сделать так, чтобы прогеру было достаточно знания только этого приложения для выполнения задачи по нему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 12:03 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxСейчас у нас имеется одно большое приложение. Хочу разделить его на несколько маленьких. Связей между ними будет не много. Общий код (утилиты) вынесу в отдельный проект, который будет собираться в .jar и помещаться в каждый .war (приложение). Я не знаю как быть с БД. У нас используется Spring Data JPA. В основном, у каждого приложения свои таблицы, но как быть в общими таблицами (пользователи, авторизованные пользователи и т.п.)? Я думаю организовать мапинг их в одном приложении, а из других получать эти данные сообщениями. Нагуглил RMI, JMX, JMS, но ни с одним опыта не имею. Что считается лучшей практикой для обмена данными между приложениями в рамках одного Tomcat? Spring Data JPA -> Spring Data REST ;-) Т.е. все обращение к БД, ч/з REST-API. Как-то так. <:o) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 12:09 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
BlazkowiczСвязность больше является характеристикой кода. Никто вам не мешает добиться слабо связаных модулей на уровне кода, но собирать их в один war. Это совершенно отдельные друг от друга задачи. Полностью с вами согласен и конечно мы к этому стремимся, но не все и не всегда. И не всегда есть возможность проконтролировать. Лично я считаю, что проще когда у тебя в проекте лежат десяток другой классов, которые относятся только к этому проекту. Например, бывают ситуации, когда руководству срочно надо такой-то сервис, под который берут пару новых прогеров (все штатные заняты своими задачами), которым удобнее выделить отдельное приложение и пусть творят там сами что хотят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 12:14 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
mad_nazgulТ.е. все обращение к БД, ч/з REST-API +1 но он не слышит. У него "идея фикс". DS-MaxВ идеале сделать так, чтобы прогеру было достаточно знания только этого приложения для выполнения задачи по нему. тоже уже было. Приложения делят по программистам - микросервисы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 12:15 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-Maxкоторым удобнее выделить отдельное приложение и пусть творят там сами что хотят. для такого типа характера постановщиков ("не пущать в основной код") есть тема. Микросервисы - есть ли альтернатива спринговым? Дерзайте. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 12:21 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
Petro123попробуй связь через REST. О REST я подумал в первую очередь, но решил уточнить, что в данном случае будет наилучшим решением. mad_nazgulSpring Data JPA -> Spring Data REST ;-) Об этом не подумал :) Но опять же, возможно в рамках одного Tomcat есть что-то более православное. Вот, например, уважаемый Blazkowicz пишет: BlazkowiczЭто одна JVM. Вызывать можно любой метод, главное получить ссылку на объект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 12:27 |
|
||
|
Обмен данными между приложениями одного Tomcat
|
|||
|---|---|---|---|
|
#18+
DS-MaxЯ как раз и не знаю как сделать его один на всех. Имелось ввиду на все war'ники в одном Tomcat? Не могу сказать как это делается на варниках и в Томкате. В полноценном JEE для этого можно завести EJB JAR и выпячить его наружу через локальный интерфейс. DS-MaxТогда, чтобы далеко не ходить, можно нескромный вопрос? :) Как получить эту ссылку из соседнего war'ника? Через любой общий (а не одинаковый) класс для этих war-ников (под общим имеется ввиду загруженый родительским ClassLoader). Про иерархию class-loader-ов таки стоит почитать. DS-MaxРазбить на маленькие части, чтобы упростить работу. Возможно закрепить персонал за своими приложениями. В идеале сделать так, чтобы прогеру было достаточно знания только этого приложения для выполнения задачи по нему. Если есть острое желание разбить не разбивая, я бы посмотрел в сторону EAR - у него куча возможностей шарить либы и PU. Вот только не помню поддерживает ли их Tomcat. Возможно нужен другой контейнер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2016, 12:37 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39346708&tid=2123493]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 384ms |

| 0 / 0 |
