>> BUY 1000 ZZZZ MARKET
<< EXECUTED #1234567 TOTAL 50400.00 FEE 252.00
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
Пример trading
демонстрирует, как реализовать и использовать простой адаптер исходящих ресурсов, который отправляет запросы в EIS с использованием сокета TCP. Пример демонстрирует сценарий на рис. 56-1 и состоит из следующих модулей:
trading-eis
: программа на Java SE, которая имитирует EIS
trading-rar
: реализация адаптера исходящих ресурсов
trading-war
: веб-приложение, использующее адаптер ресурсов
trading-ear
: корпоративный архив, содержащий адаптер ресурсов и веб-приложение
Модуль trading-eis
— это вспомогательный проект, имитирующий платформу для проведения торговых операций с акциями. Он содержит программу Java SE, которая слушает торговые запросы в виде простого текста по сокету TCP. Программа отвечает на торговые запросы со значением статуса, номером подтверждения и суммой в долларах за запрошенные акции и сборы. Например, пара запрос-ответ будет выглядеть так:
>> BUY 1000 ZZZZ MARKET
<< EXECUTED #1234567 TOTAL 50400.00 FEE 252.00
Модуль trading-rar
реализует исходящий контракт архитектуры коннекторов Java EE для отправки запросов и получения ответов от платформы биржевой торговли. Модуль trading-rar
предоставляет и реализует пользовательский интерфейс клиента для использования приложениями Java EE. Этот интерфейс проще, чем Common Client Interface (CCI).
Модуль trading-war
— это веб-приложение с интерфейсом JavaServer Faces и Managed-бином. Это приложение позволяет клиентам отправлять заявки в EIS, используя адаптер ресурсов, предоставленный модулем trading-rar
. Модуль trading-war
использует пользовательский интерфейс клиента, предоставленный адаптером ресурсов, для получения соединений с EIS.
В большинстве случаев разработчики приложений Java EE используют адаптеры исходящих ресурсов, разработанные третьей стороной. Адаптеры исходящих ресурсов либо реализуют общий клиентский интерфейс (CCI), либо предоставляют пользовательский интерфейс для взаимодействия приложений с EIS. Адаптеры исходящих ресурсов предоставляют приложениям Java EE следующие элементы:
Фабрики соединений
Дескрипторы соединений
Другие интерфейсы и объекты, специфичные для EIS
Приложения Java EE получают объект фабрики соединений посредством инъецирования ресурсов, а затем используют его для получения дескрипторов соединения с EIS. Дескрипторы соединений позволяют приложению отправлять запросы и получать информацию из EIS.
Модуль trading-rar
предоставляет пользовательский интерфейс клиента, который состоит из классов, перечисленных в таблице 56-1.
Таблица 56-1 Классы и интерфейсы в пакете javaeetutorial.trading.rar.api
API-компонент |
Описание |
|
Представляет торговую заявку для EIS |
|
Представляет ответ от EIS на торговую заявку |
|
Представляет дескриптор подключения к EIS Предоставляет способ подачи заявок в EIS |
|
Позволяет приложениям получать дескрипторы подключения к EIS |
|
Указывает, что возникла проблема при обработке торгового запроса |
Managed-бин ResourceAccessBean
в модуле trading-war
настраивает фабрику соединений для адаптера ресурсов trading-rar
с помощью аннотации @ConnectionFactoryDefinition
следующим образом:
@Named
@SessionScoped
@ConnectionFactoryDefinition(
name = "java:comp/env/eis/TradeConnectionFactory",
interfaceName = "javaeetutorial.trading.rar.api.TradeConnectionFactory",
resourceAdapter = "#trading-rar",
minPoolSize = 5,
transactionSupport =
TransactionSupport.TransactionSupportLevel.NoTransaction
)
public class ResourceAccessBean implements Serializable { ... }
Параметр name
указывает имя JNDI для фабрики соединений. В этом примере регистрируется фабрика соединений в области java:comp
. Вы можете использовать аннотацию @ConnectionFactoryDefinition
, чтобы указать другую область, такую как java:global
, java:app
или java:module
. Аннотация @AdministeredObjectDefinition
также позволяет регистрировать объекты администрируемых коннекторов в пространстве имён JNDI.
Параметр interfaceName
указывает интерфейс, реализованный фабрикой соединений, включённой в адаптер ресурсов. В этом примере это пользовательский интерфейс.
Параметр resourceAdapter
указывает имя адаптера ресурса, который содержит реализацию фабрики соединений. Префикс #
в #trading-rar
указывает, что trading-rar
является встроенным адаптером ресурсов, который входит в тот же EAR, что и это веб-приложение.
Замечание: Вы также можете настроить фабрику соединений для ранее развёрнутого адаптера исходящих ресурсов, используя команды администрирования с вашего сервера приложений. Однако эта процедура зависит от производителя ПО. |
Managed-бин получает объект фабрики соединений, используя инъецирование ресурсов следующим образом:
...
public class ResourceAccessBean implements Serializable {
@Resource(lookup = "java:comp/env/eis/TradeConnectionFactory")
private TradeConnectionFactory connectionFactory;
...
}
Managed-бин использует фабрику соединений для получения дескрипторов соединений следующим образом:
TradeConnection connection = connectionFactory.getConnection();
Адаптер ресурса возвращает дескриптор соединения, связанный с физическим соединением с EIS. Как только дескриптор соединения становится доступным, Managed-бин отправляет заявку и получает ответ следующим образом:
TradeOrder order = new TradeOrder();
order.setNShares(1000);
order.setTicker(TradeOrder.Ticker.YYYY);
order.setOrderType(TradeOrder.OrderType.BUY);
order.setOrderClass(TradeOrder.OrderClass.MARKET);
...
try {
TradeResponse response = connection.submitOrder(order);
...
} catch (TradeProcessingException ex) { ... }
Модуль trading-rar
реализует исходящий контракт и пользовательский интерфейс клиента для EIS, используемой в этом примере. Архитектура адаптера исходящих ресурсов показана на рис. 56-2.
Модуль trading-rar
реализует интерфейсы, перечисленные в таблице 56-2.
Таблица 56-2 Интерфейсы, реализованные в модуле trading-rar
Пакет |
Интерфейс |
Описание |
|
|
Определяет методы жизненного цикла адаптера ресурса |
|
|
Определяет фабрику соединений, которую менеджер соединений с сервера приложений использует для получения физических соединений с EIS |
|
|
Определяет физическое соединение с EIS, которым может управлять менеджер соединений |
|
|
Определяет фабрику соединений, которую приложения используют для получения дескрипторов соединений |
|
|
Определяет дескриптор соединения, который приложения используют для взаимодействия с EIS |
Когда архив trading-ear
развёрнут и ресурс пула соединений настроен, как описано в Использование адаптера исходящих ресурсов, сервер приложений создаёт объекты TradeConnectionFactory
, которые приложения могут получить, используя инъецирование ресурсов. Реализация TradeConnectionFactory
делегирует создание соединений с менеджером соединений, предоставляемым сервером приложений.
Менеджер соединений использует реализацию ManagedConnectionFactory
для получения физических соединений с EIS и поддерживает пул активных физических соединений. Когда приложение запрашивает дескриптор соединения, менеджер соединений связывает соединение из пула с новым дескриптором соединения, который может использовать приложение. Пул соединений повышает производительность приложений и упрощает разработку адаптера ресурсов.
Для получения дополнительной информации см. код и комментарии в модуле trading-rar
.
Вы можете использовать IDE NetBeans или Maven для сборки, упаковки, развёртывания и запуска примера trading
.
Здесь рассматриваются следующие темы:
Удостоверьтесь, чтобы GlassFish Server был запущен (см. Запуск и остановка сервера GlassFish).
В меню «Файл» выберите «Открыть проект».
В диалоговом окне «Открыть проект» перейдите к:
tut-install/examples/connectors
Выберите каталог trading
.
Нажмите Открыть проект.
На вкладке «Проекты» разверните узел trading
.
Кликните правой кнопкой мыши модуль trading-eis
и выберите «Открыть проект».
Кликните правой кнопкой мыши проект trading-eis
и выберите «Выполнить».
Сообщения от EIS появляются на вкладке Вывод:
Trade execution server listening on port 4004.
Кликните правой кнопкой мыши проект trading-ear
и выберите Сборка.
Эта команда упаковывает адаптер ресурса и веб-приложение в EAR-файл и развёртывает его на сервере GlassFish.
Откройте следующий URL в веб-браузере:
http://localhost:8080/trading/
Веб-интерфейс позволяет подключаться к EIS и отправлять сделки. В журнале сервера отображаются запросы от веб-приложения и последовательность вызовов, которые предоставляют дескрипторы подключения от адаптера ресурсов.
Перед удалением приложения trading-ear
, закройте приложение trading-eis
из строки состояния.
Удостоверьтесь, чтобы GlassFish Server был запущен (см. Запуск и остановка сервера GlassFish).
В окне терминала перейдите в:
tut-install/examples/connectors/trading/
Введите следующую команду:
mvn install
Эта команда собирает и упаковывает адаптер ресурсов и веб-приложение в архив EAR и развёртывает его на сервере GlassFish.
В том же окне терминала перейдите в каталог trading-eis
:
cd trading-eis
Введите следующую команду для запуска платформы исполнения сделок:
mvn exec:java
Сообщения от EIS появляются в окне терминала:
Trade execution server listening on port 4004.
Откройте следующий URL в веб-браузере:
http://localhost:8080/trading/
Веб-интерфейс позволяет подключаться к EIS и отправлять сделки. В журнале сервера отображаются запросы от веб-приложения и последовательность вызовов, которые предоставляют дескрипторы подключения от адаптера ресурсов.
Перед удалением приложения trading-ear
нажмите Ctrl+C в окне терминала, чтобы закрыть приложение trading-eis
.
Назад | Вперёд | Содержание |