Как использовать MessageEndPoint в JCA на сервере, совместимом с Java EE?

Я новичок в архитектуре Java Connector (JCA) и Java Enterprise Edition (Java EE) в целом. Я прочитал спецификации JCA 1.6, но не все понял на 100%.

Итак, вот некоторые вопросы, которые у меня есть:

  • Является ли MessageEndPoint ссылкой на корпоративную информационную систему (EIS)? или это приложение на сервере пытается использовать сообщение, полученное от EIS?
  • Должен ли MessageEndPoint быть bean-компонентом?
  • Что означает активация MessageEndPoint?

Можете ли вы показать какой-нибудь простой пример работы/развертывания MessageEndPoint? Я тестирую это на WebSphere Application Server — профиль Liberty


person Marko    schedule 29.10.2014    source источник
comment
JCA обычно используется для доступа к системам EIS через адаптеры, предоставляемые поставщиками или разработанные на заказ. Это довольно сложная функция. Пожалуйста, укажите, чего вы пытаетесь достичь, так как может быть более простой способ сделать это, чем JCA. :) Если вы просто пытаетесь получать асинхронные сообщения, лучше использовать JMS и MDB, а не JCA.   -  person Gas    schedule 02.11.2014
comment
@Gas Я пытаюсь понять, как Endpoint в целом вписывается в мир JCA. Я работаю над каким-то проектом JCA, и переход на другие технологии не вариант. Документ спецификации настолько сух и не содержит достаточного количества примеров использования таких вещей, как конечная точка.   -  person Marko    schedule 08.01.2015


Ответы (1)


Давайте сначала проясним некоторые термины:

  • Исходящие сообщения — это место, где сообщение начинается с сервера (точнее, оно инициируется вашим приложением, которое у вас есть на сервере, в данном случае WebSphere Liberty) и заканчивается в EIS.
  • Входящие сообщения — это место, где сообщение начинается с EIS и заканчивается на сервере.
  • Конечная точка сообщения, как правило, место, где сообщение в конечном итоге находится/получается на определенном этапе его жизненного цикла.

введите здесь описание изображения

Таким образом, под исходящим подключением мы имеем в виду ситуацию, когда приложение получает подключение к внешней EIS и считывает или записывает в нее данные. Под входящим подключением мы подразумеваем ситуацию, когда адаптер ресурсов (RA) прослушивает события от внешней EIS и вызывает ваше приложение, когда такое событие происходит.

Иллюстрация исходящего RA введите здесь описание изображения

Иллюстрация входящего RA введите здесь описание изображения

Что означает MessageEndPoint в JCA?

Сервер приложений (например, WebSphere Liberty) предоставляет конечные точки сообщений MBeans, чтобы помочь вам в управлении доставкой сообщения вашим компонентам, управляемым сообщениями, которые действуют как слушатели в определенных конечных точках, которые являются пунктами назначения, а также в управлении используемыми ресурсами EIS. этими управляемыми сообщениями bean-компонентами. Компоненты, управляемые сообщениями, развернутые как конечные точки сообщений, отличаются от управляемых сообщениями компонентов, настроенных для порта прослушивателя. Компоненты, управляемые сообщениями, которые используются в качестве конечных точек сообщений, должны быть развернуты с использованием ActivationSpecification, который определен в конфигурации RA для JCA (находится в файле ra.xml).

Что означает активация MessageEndPoint?

С конечными точками сообщений MBeans вы можете активировать и деактивировать определенные конечные точки в своих приложениях, чтобы гарантировать, что сообщения доставляются только слушающим управляемым сообщениями bean-компонентам, которые взаимодействуют с работоспособными ресурсами EIS. Эта возможность позволяет оптимизировать производительность ваших JMS-приложений в ситуациях, когда ресурс EIS ведет себя не так, как ожидалось. Доставка сообщения в конечную точку обычно завершается сбоем, когда прослушивающий компонент, управляемый сообщениями, вызывает операцию над неработоспособным ресурсом. Например, провайдер обмена сообщениями, который является адаптером входящих ресурсов, совместимым с JCA, может не доставить сообщения в конечную точку, когда его базовый компонент, управляемый сообщениями, пытается зафиксировать транзакции с сервером базы данных, который не отвечает.

Должен ли MessageEndPoint быть компонентом?

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

Можете ли вы показать простой пример работы/развертывания MessageEndPoint?

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

Полезные учебные ресурсы:

person M. A. Kishawy    schedule 20.08.2015
comment
Ссылка 1 кстати битая. То, что мне никогда не было совершенно ясно, это то, как конечная точка может быть «деактивирована». Или как конечная точка динамически активируется на лету, если уж на то пошло. Интернет полон «примеров» конечных точек, активированных во время развертывания EAR, и, поскольку мне никогда не нужно было знать какой-либо другой метод, и он отлично подходит для обучения вас, как начать работу, я никогда не настаивал на этом. Но сейчас я нахожусь на этапе, когда этого недостаточно, и мне нужно знать, как выполнять как динамическую активацию, так и деактивацию. - person searchengine27; 05.09.2019