В программных моделях внешних вызовов IMS IMS играет роль клиента для взаимодействия с бизнес-данными или бизнес-логикой, находящихся в MDB, компоненте EJB или веб-службе. Приложения IMS обращаются к внешним приложениям Java™ посылая запросы внешних вызовов. С точки зрения WebSphere Application Server, такие сообщения из приложений IMS, наоборот, являются входящими сообщениями.
В зависимости от того, ожидается ли ответ от внешнего приложения Java и ожидает ли приложение IMS, отправившее запрос, ответ в той же транзакции, применяются разные программные модели.
Запрос синхронного внешнего вызова - это запрос, ожидающий ответа из внешнего приложения Java или веб-службы в той же транзакции тому же приложению IMS.
Когда приложение IMS посылает запрос синхронного внешнего вызова с помощью вызова IMS DL/I ICAL, для хранения запроса используется канал транзакций OTMA (tpipe). Приложение IMS в зависимости от области остается планируемым и ожидает ответа. После того как внешнее приложение забирает сообщение запроса из tpipe, tpipe остается в состоянии ожидания до тех пор, пока внешнее приложение не вернет ответ.
Для объектов, управляемых сообщениями (MDB), можно использовать входящую спецификацию архитектуры коннекторов J2EE версии 1.5 и инструментальную поддержку в различных интегрированных средах разработки (IDE) Rational и WebSphere. IMS TM принимает сообщения внешних вызовов от IMS Connect и связывает запрос с ответом на него.
В приложениях не MDB опрос IMS Connect на наличие запросов внешних вызовов в очереди блокировки должно выполнять само приложение. Также приложение должно обрабатывать маркер соответствия, переданный в свойстве объекта IMSInteractionSpec.
Главное преимущество передачи запроса внешнего вызова и ответа на него в одной транзакции - возможность размещения логики программы для отправки запросов и обработки ответов в одном приложении IMS. Однако приложение IMS вынуждено ждать ответ, и все зависимые области при этом блокируются.
Запрос асинхронного внешнего вызова - это запрос, не ожидающий ответа или ожидающий ответа в другой транзакции.
После отправки приложением IMS запроса асинхронного внешнего вызова с помощью вызова ISRT ALPCB для хранения запроса используется канал транзакций OTMA (tpipe) или другое место назначения (заданное кодом процедуры exit). После того как внешнее приложение забирает сообщение запроса из очереди блокировки, приложение IMS больше не планируется в зависимой области IMS, и зависимая область освобождается.
Если ожидается ответ, сообщение с ответом возвращается в виде нового запроса транзакции IMS в то же или другое приложение IMS.
Главным преимуществом асинхронного возврата ответа - избежание блокировки зависимых областей и, как следствие, длительной блокировки ресурсов IMS. Однако этот подход в случае обработки ответов требует от приложения IMS уметь обрабатывать выходные данные в отдельной транзакции. Кроме того, приложение должно уметь связывать ответ с запросом.