Позвольте мне сначала немного описать текущую архитектуру:
Приложение A - это Java-приложение, работающее в JBOSS и имеющее собственную базу данных (mssql).
Приложение B - это приложение COM +, работающее на компьютере с Windows, которое также поддерживается собственной базой данных (mssql).
Для определенных бизнес-требований приложение A должно вызывать приложение B. Для этой цели COM-прокси устанавливается на одном компьютере с приложением A (то есть на компьютере JBOSS). Интерфейс JNI позволяет нам совершать вызов из Приложения A -> B.
Это то, что мы имеем сегодня, и оно отлично работает. Теперь появилось новое бизнес-требование, и необходимо реализовать функциональность двухфазной фиксации следующим образом:
Будет создано новое приложение C (возможно, приложение .net), которое будет поддерживаться своей собственной базой данных. Приложение C будет находиться на третьем сервере (не на нашем сайте).
Приложение C вызывает приложение A в транзакции. Приложение A должно выполнить некоторые действия после учета встроенной бизнес-логики. Действия включают записи в базу данных приложения A и вызов приложения B. Приложение B выполняет дополнительные действия (для базы данных приложения B). Приложение C обновляет свою базу данных на основе полученных отзывов. Теперь, если все действия выполнены успешно, изменения фиксируются в базах данных, в противном случае эти действия являются откатом.
Вопрос прост (думаю, ответ более сложный). Возможно ли это, учитывая различные технологии, поддерживающие каждое приложение? Я прекрасно понимаю, что если все приложения были написаны в .Net или как приложения COM +, это возможно. Замена компонентов Java другой технологией на данный момент невозможна. Есть идеи?
Мы проверили JNBridge, но я не думаю, что он может обеспечить то, что мы хотим. Было бы хорошо, если бы приложение C не было проблемой.
Любые идеи / решения приветствуются. Какие, по вашему мнению, лучшие варианты?