은 내가 먼저 조금에게 현재의 구조를 설명합시다 (COM +, 자바) 다른 기술 사이의 커밋 :2 단계는
응용 프로그램 A는 JBOSS에서 실행되는 자바 응용 프로그램 및 자체 데이터베이스 (MSSQL)가 있습니다.
응용 프로그램 B는 자체 데이터베이스 (mssql)에서 지원되는 Windows 컴퓨터에서 실행되는 COM + 응용 프로그램입니다.
특정 비즈니스 요구 사항의 경우 응용 프로그램 A는 응용 프로그램 B를 호출해야합니다.이 목적을 위해 COM 프록시는 응용 프로그램 A (즉, JBOSS 시스템)와 동일한 컴퓨터에 설치됩니다. JNI 인터페이스를 사용하면 응용 프로그램 A -> B에서 전화를 걸 수 있습니다.
이것은 우리가 오늘 가지고있는 것이며 완벽하게 작동합니다. 이제 새로운 비즈니스 요구 사항이 나타 났으며 다음과 같이 2 단계 커밋 기능을 구현해야합니다.
새 응용 프로그램 C (예 : .net 응용 프로그램)가 생성 될 예정입니다. 자체 데이터베이스. 응용 프로그램 C는 세 번째 서버 (우리 사이트가 아님)에 있습니다.
응용 프로그램 C는 트랜잭션에서 응용 프로그램 A를 호출합니다. 응용 프로그램 A는 포함 된 비즈니스 논리를 고려한 후 몇 가지 작업을 수행해야합니다. 조치에는 응용 프로그램 A 데이터베이스에 대한 기록 및 응용 프로그램 B에 대한 호출이 포함됩니다. 응용 프로그램 B는 응용 프로그램 B 데이터베이스에 대한 추가 조치를 수행합니다. 응용 프로그램 C는받은 피드백을 기반으로 데이터베이스를 업데이트합니다. 이제 모든 작업이 성공하면 변경 내용이 데이터베이스에 커밋되고 그렇지 않으면 작업이 롤백됩니다.
질문은 간단합니다 (대답은 더 복잡하다고 생각합니다). 각 응용 프로그램을 지원하는 다양한 기술을 고려할 때 이것이 가능합니까? 모든 응용 프로그램이 .Net 또는 COM + 응용 프로그램으로 작성된 경우 이것이 가능하다는 것을 완전히 이해합니다. 이 시점에서 자바 컴포넌트를 다른 기술로 대체하는 것은 실행 가능한 옵션이 아닙니다. 어떤 아이디어?
우리는 JNBridge를 확인했지만 그것이 우리가 원하는 것을 제공 할 수 있다고 생각하지 않습니다. Application C가 문제가되지 않는다면 괜찮을 것입니다.
모든 아이디어/솔루션을 환영합니다. 귀하의 의견에 가장 적합한 옵션은 무엇입니까?
JBoss 응용 프로그램이 WS_AT를 지원할 수도 있지만 실제 문제는 COM에서 COM 구성 요소로의 트랜잭션 흐름입니다 (app A -> app B). 내가 아는 한 MySQL에 대한 MS DTC 지원은 없습니다. 즉, JBoss 어플리케이션은 MS DTC와 대화 할 수있는 다른 트랜잭션 코디네이터를 통해 로컬 트랜잭션 컨텍스트를 생성하고이를 MySQL에 전달하여 트랜잭션에 참여할 수있게됩니다. 그러면 복잡성이 높아질 것입니다. 이미 JBoss에는 DTC와 함께 작업 할 수있는 트랜잭션 코디네이터가 이미있을 수 있습니다. –
답변 해 주셔서 감사합니다. 그것은 양면에서 mssql입니다. 나는 그 질문을 편집했다. – yioann