2009-09-09 3 views
2

자바 애플리케이션에서 분산 트랜잭션 관리를 위해 자바 트랜잭션 서비스를 사용하고 싶습니다.자바 트랜잭션 서비스

3 개의 다른 Connection 개체를 사용하여 연결할 수있는 3 개의 데이터베이스가 있습니다. 3 개의 데이터베이스 각각에 특정 데이터를 삽입하고 싶습니다. 내 요구 사항은 원자 성을 유지해야한다는 것입니다. 따라서 데이터는 3 개의 데이터베이스 모두에 삽입되어야합니다. 그렇지 않으면 어느 데이터베이스에도 삽입되어서는 안됩니다. 이러한 종류의 트랜잭션을 net에서 검색했으며 Java Transaction 서비스를 받았습니다. 여기에서 해당 API를 찾을 수 있습니다. http://java.sun.com/products/jts/javadoc/index.html 하지만 아직 어떻게 사용하고있는 트랜잭션을 구현하지 못하고 있습니다. 누군가 Java Transaction Service의 샘플 코드 또는 자습서에 대한 링크를 제공 할 수 있습니까? 사전에

감사합니다, 아니 켓 Kedari

답변

0

당신이 검색 할 필요가있는 항목 XA 트랜잭션입니다.

당신은 잘 여기에 덮여 알아야 할 사항 :

http://www.javaworld.com/javaworld/jw-04-2007/jw-04-xa.html

분산 트랜잭션 처리 시스템 분산 환경에서 이기종 걸쳐 거래, 트랜잭션 인식 자원을 촉진하기 위해 설계되었습니다 . 분산 트랜잭션을 사용하여, 애플리케이션 등 ( 일관성 격리 내구성 자성) 를 메시지 큐에서 메시지를 검색하고, ACID에 부착 한 트랜잭션 유닛에 하나 이상의 데이터베이스를 업데이트하는 등의 작업을 수행 할 수있다 기준. 이 문서에서는 응용 프로그램이 기술 품종의 최고와 함께 JTA 사용 트랜잭션 처리를 얻을 수있는 방법을 일부 사용할 수 분산 트랜잭션을 사용 사례 (XA)의 및 설명합니다. 주요 초점은 Spring을 서버 프레임 워크로 사용하고 엔터프라이즈 레벨 분산 트랜잭션에 대해 다양한 JTA 구현을 원활하게 통합 할 수있는 방법입니다.

+0

안녕하세요, 귀하의 소중한 의견에 감사드립니다. XAResource를 사용하려고했습니다. http://www.datadirect.com/developer/jdbc/topics/jta/dist-trans/index.ssp ​​ 하지만 불행히도 내 databse 'hp Non Stop Databse'에 대한 내 데이터 소스는 XAresource를 지원하지 않습니다. CAP 정리 및 BASE를 지금 검색 할 것입니다. –

0

단일 데이터베이스를 사용하는 단순한 상황에서는 걱정할 필요가 없습니다. JDBC와 데이터베이스 자체 기능의 조합으로 충분합니다. 귀하의 상황은 더욱 복잡합니다. 데이터베이스 전체에서 분산 트랜잭션을 관리하는 모든 세부 사항을 검토하는 트랜잭션 관리자가 필요합니다. 따라서 JTA API를 제공하는 구현이 필요합니다.

원칙적으로 자아를 개발할 수 있지만 매우 구체적인 작업이므로 기존 구현을 사용해야합니다. 이것은 Java EE 애플리케이션 서버를 사용할 때 얻을 수있는 것들 중 하나입니다.

많은 Java EE App Server 중 하나를 사용하십시오. 비용이 많이 들지 않는 좋은 예가 있습니다.

WebSphere Community Edition은 IBM의 것입니다. JBOSS은 널리 사용되는 서버로, Glassfish은 Sun에서 구할 수 있습니다.

JDBC 연결 풀을 사용하여 JDBC 연결 풀을 사용하는지 확인하십시오. (매우 쉽게 할 수 있습니다) 간단한 세션 빈을 사용하는 것이 좋습니다 (EJB 3에서이 작업도 매우 쉽습니다). .

전반적으로 약 4 줄의 코드 (또는 특수 효과)를 작성해야합니다. 당신이 지금 가지고있는 것보다 "빙고!" 당신은 2PC 거래를하고 있습니다. App Server를 설치하고 기능을 사용하는 방법을 배우는 데 약간의 학습 곡선이 있지만 Java 분산 트랜잭션이 필요한 경우 인프라 서비스와 프 래밍 프레임 워크가 필요하므로 일정 수준의 학습이 불가피합니다.

3

몇 가지 포인트 : 아마 그것 때문에 주위 툴의 성숙도의 간단한 (CAP 정리와 BASE를 검색하지만

  1. XA는이 문제를 해결하기위한 유일하게 가능한 해결책이 아니다 - 기본적으로 사용 가능한 소프트 상태 결국 일치).
  2. XA 트랜잭션은 실패 모드를 가지며 참여 데이터베이스간에 불일치의 창이 발생할 수 있습니다.
  3. 사용중인 데이터베이스를 말하지 않습니다. 아마도 하나 또는 모두가 XA 트랜잭션을 지원하지 않을 수 있습니다.
  4. Java에서 원시 JTS/JTA API를 사용하지 않으려는 대신 잘 알려진 Java 응용 프로그램 서버에 JTS/JTA를 사용하는 트랜잭션 관리자가 포함되어 있으므로 사용할 수 있습니다.

는 그래서, 나는 봄, EJB 3.0 또는 수동으로 작성하는 거래보다 훨씬 깨끗 그들은 당신이 선언적인 트랜잭션을 수행 할 수 있습니다으로 데이터베이스 상호 작용을위한 비슷한 사용하는 것이 좋습니다 것 자바 응용 프로그램 서버를 사용하기로 결정 가정 논리 자신.

트랜잭션에 대한 Spring의 문서는 link입니다.

관련 문제