Доступ к архитектуре Java Connector Architecture (JCA) из неуправляемой среды - PullRequest
0 голосов
/ 03 мая 2010

Мы использовали JCA для взаимодействия с низкоуровневым сетевым ресурсом изнутри WebSphere, однако у нас есть требование иметь возможность доступа к тому же сетевому ресурсу извне из Tomcat (т.е. не в управляемой среде).Схемы сетевых коммуникаций и протоколов очень многословны, поэтому мы не будем копировать / вставлять несколько тысяч строк кода (а затем должны поддерживать их отдельно).

При чтении спецификации JCA, предположительно, есть некоторая поддержкавыполнить код в неуправляемой среде (такой как Tomcat).К сожалению, я не знаю что интерфейсы должны делать или как вызывать их из-за пределов управляемой среды (спецификация довольно расплывчатая).

Есть ли примеры реализации изтам показано, как изменить JCA для использования в неуправляемой среде?

Спасибо!

1 Ответ

1 голос
/ 04 мая 2010

У нас был похожий случай, когда мы разработали соединитель для доступа к внешнему хранилищу WebDav и хотели использовать его также из отдельного приложения (неуправляемого).

Я верю, что самый простой способ - решить эту проблему на уровне разработки и организовать свой код таким образом, чтобы основная логика коннектора была независимой от JCA и могла легко использоваться повторно. Затем вы можете обернуть это специальным кодом JCA, который выставляет соединитель на AS. Возможно, он даже может быть упакован в две банки - это, по крайней мере, решение, которое мы выбираем (но мы упаковали все в одну .jar).

В противном случае разъем JCA является «клеем» между следующими тремя сторонами:

  1. Сервер приложений
  2. EIS
  3. Компонент приложения.

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

Одной из основных задач AS в отношении JCA-соединителя является управление пулом соединений, и, насколько я помню, соответствующий интерфейс, который вы затем должны реализовать, - ConnectionManager.

Соединитель JCA получает ссылку на ConnectionManager, но реализация зависит от AS. Написание легкой реализации, которая обеспечивает элементарное объединение (или вообще без объединения), звучит выполнимо.

Однажды я написал диаграмму последовательности механизма распределения соединений . Может быть, вы найдете это полезным. Другой интерфейс - ResourceAdapter, где вы определяете запуск / выключение, но это легко вызвать вручную.

(Вероятно, это немного больше, и, конечно, это зависит от того, что использует ваш JCA-соединитель. Например, если он использует Work и WorkManager, тогда он становится намного сложнее для имитации. То же самое замечание, если разъем является транзакционным. Но это не похоже на ваш случай.)

В противном случае, я думаю, что Spring имеет некоторую поддержку JCA, возможно, стоит посмотреть, как они это сделали.

При чтении спецификации JCA, есть предположительно некоторая поддержка для выполнения код в неуправляемой среде

Можете ли вы упомянуть конкретную часть спецификации, о которой вы говорите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...