Что лучший способ состоит в том, чтобы совместно использовать экземпляры бизнес-объекта между веб-приложениями Java с помощью JBoss и Spring?

https://github.com/PHPOffice/PHPWord

В PHPWord также есть Reader, который можно использовать для редактирования существующих документов.

14
задан Nils-Petter Nilsen 11 December 2008 в 07:36
поделиться

9 ответов

Веб-приложения развертываются на том же сервере?

я не могу говорить за Spring, но это просто для перемещения бизнес-логики в к Бобам Сессии использования уровня EJB.

организация приложения является прямой. Логика входит к Бобам Сессии, и эти Бобы Сессии связываются в единственной банке как Java артефакт EE с файлом ejb-jar.xml (в EJB3, это, вероятно, будет практически пусто).

Затем пакет Вы классы Объекта в в отдельный файл банки.

Затем, Вы создадите каждое веб-приложение в в их собственный ВОЕННЫЙ файл.

Наконец, все банки и войны связываются в к Java EE EAR со связанным файлом application.xml (снова, это, вероятно, будет довольно минимально, просто перечисляя банки в EAR).

Этот EAR развертывается оптовая торговля на сервере приложений.

Каждая ВОЙНА эффективно независима - их собственные сессии, там владейте путями контекста, и т.д. Но они совместно используют общий бэкэнд EJB, таким образом, у Вас есть только единственный 2-й кэш уровня.

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

я думаю, что это решает вполне хорошо проблему, которую Вы имеете, и довольно просто в Java EE 5 с EJB 3.

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

5
ответ дан 1 December 2019 в 13:48
поделиться

Терракота могла бы быть подходящим вариантом здесь (раскрытие: Я - разработчик для Терракоты). Терракота прозрачно кластеризируется, Java возражает на уровне JVM и интегрируется и с Spring, и Быть в спящем режиме. Это свободно и с открытым исходным кодом.

, Поскольку Вы сказали, проблема больше чем одного клиентского веб-приложения с помощью кэша L2 сохраняет те кэши в синхронизации. С Терракотой можно кластеризироваться, сингл В спящем режиме кэш L2. Каждый клиентский узел работает с, он - копия того кластеризованного кэша, и Терракота сохраняет его в синхронизации. Эта ссылка объясняет больше.

Что касается Ваших бизнес-объектов, можно использовать Терракоту интеграция Spring для кластеризации бобов - каждое веб-приложение может совместно использовать кластеризируемые бобовые экземпляры, и Терракота сохраняет кластеризованное состояние в синхронизации прозрачно.

3
ответ дан 1 December 2019 в 13:48
поделиться

На самом деле, если Вы хотите легкое решение и не нуждаетесь в транзакциях, или кластеризирующийся просто используют Пружинную опору RMI. Это позволяет выставлять бобы Spring удаленно с помощью простых аннотаций в последних версиях. См. http://static.springframework.org/spring/docs/2.0.x/reference/remoting.html .

2
ответ дан 1 December 2019 в 13:48
поделиться

Необходимо смотреть на Терракотовое Ссылочное веб-приложение - Examinator. Это имеет большинство компонентов, которые Вы ищете - это получено, в спящем режиме, JPA и Spring с бэкендом MySQL.

Это было предварительно настроено для увеличения масштаба к 16 узлам, 20k параллельные пользователи.

Проверка это здесь: http://reference.terracotta.org/examinator

2
ответ дан 1 December 2019 в 13:48
поделиться

Я не действительно уверен, что Вы пытаетесь решить; в конце дня каждый jvm будет или копировать экземпляры объектов или тупики, представляющие объекты, существующие на другом (логическом) сервере.

Вы могли, установить третий сервер 'бизнес-логики', который имеет удаленный API, который могли назвать Ваши два веб-приложения. Стандартное решение состоит в том, чтобы использовать EJB, но я думаю, что пружине встроили опции дистанционной работы в ее стек.

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

0
ответ дан 1 December 2019 в 13:48
поделиться

Спасибо за Ваши ответы до сих пор. Мы все еще не вполне там, но мы попробовали несколько вещей теперь и видим вещи более ясно. Вот короткое обновление:

решением, которое, кажется, является самым жизнеспособным, является EJB. Однако это потребует некоторого количества изменений в нашем коде, таким образом, мы не соберемся полностью реализовывать то решение прямо сейчас. Я почти удивлен, что мы не смогли найти, что некоторая функция Spring помогает нам здесь.

Мы также попробовали маршрут JNDI, который заканчивается потребностью в тупиках для всех общих интерфейсов. Это чувствует себя подобно большому количеству стычки, полагая, что все находится на том же сервере так или иначе.

Вчера, у нас было маленькое повреждение через с JMX. Хотя JMX определенно не предназначен для этого вида использования, мы доказали, что это может быть сделано - без изменений кода и минимальной суммы XML (большое Спасибо для Киданий за MBeanExporter и MBeanProxyFactoryBean). Главные недостатки к этому методу являются производительностью и тем, что наши доменные классы должны быть совместно использованы через папку сервера/lib JBOS. Т.е. мы должны удалить некоторые зависимости из наших ВОЙН и переместить их в сервер/lib, еще мы получаем ClassCastException, когда бизнес-слой возвращает объекты из нашей собственной модели предметной области. Я полностью понимаю, почему это происходит, но это не идеально, для какого мы пытаемся достигнуть.

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

1
ответ дан 1 December 2019 в 13:48
поделиться

Смотрите на JBossCache. Это позволяет Вам легко совместно использовать/копировать карты данных между mulitple экземплярами JVM (то же поле или отличающийся). Это просто в использовании и имеет много проводных опций протокола уровня (TCP, Многоадресная передача UDP, и т.д.).

-1
ответ дан 1 December 2019 в 13:48
поделиться

В Spring есть точка интеграции, которая может вас заинтересовать: Инъекционный перехватчик EJB 3 . Это позволяет получить доступ к компонентам Spring из EJB.

1
ответ дан 1 December 2019 в 13:48
поделиться

А как насчет spring parentContext? Ознакомьтесь с этой статьей:

http://springtips.blogspot.com/2007/06/using-shared-parent-application-context.html

4
ответ дан 1 December 2019 в 13:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: