讓我先介紹了一下目前的架構:兩階段提交不同的技術之間(COM +,JAVA)
申請A是在JBoss中運行Java應用程序,並擁有自己的數據庫(MSSQL)。
應用程序B是在Windows機器上運行的COM +應用程序,它也受其自己的數據庫(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不是問題,那將會很好。
歡迎任何想法/解決方案。你認爲最好的選擇是什麼?
請注意,雖然JBoss應用程序可能支持WS_AT,但真正的問題是從它到COM組件的事務流程(應用程序A - >應用程序B)。據我所知,沒有MS DTC支持MySQL。這意味着JBoss應用程序必須通過另一個可以與MS DTC通信的事務協調器創建本地事務上下文,並將其傳遞給MySQL,以便它可以登錄到它。這會增加複雜性。儘管很可能JBoss已經有一個可以與DTC協同工作的事務協調器。 – 2010-12-07 21:59:04