2010-05-05 1 views
3

결과를 DB (SQL Server) 및 스프레드 시트 (POI)에 모두 기록하는 Java 프로그램이 있으며 둘 다 쓰지 않는 것이 가장 좋습니다 둘 중 하나에 오류가있는 경우단일 "트랜잭션"에서 데이터베이스 쓰기 및 스프레드 시트 쓰기를 그룹화하는 방법

스프레드 시트가 생성 된 후 DB에 저장하는 동안 오류가 발생하면 DB 쓰기가 먼저 수행됩니다. 그럼에도 불구하고 누군가가 성공하거나 실패 할 수있는 방법을 알고 있는지 궁금합니다.

감사합니다.

답변

5

File Transaction component 인 Java 공통 트랜잭션을 고려하십시오.

데이터베이스 호출과 파일 쓰기를 더 포괄적 인 트랜잭션으로 래핑 할 수 있다면 찾고있는 것이있을 수 있습니다. 이메일은 트랜잭션 내에서 데이터베이스 테이블에 기록하고, 도우미 스레드는 그들을 받아 비동기 적으로 보냅니다됩니다 http://commons.apache.org/transaction/file/index.html

+0

일부 XA에서 2 단계 커밋을 수행하면 완료됩니다. http://matthewneale.net/2008/11/27/an-xa-filesystem/ – Guillaume

+0

TxFileResourceManager는 처리되지 않은 파일 시스템에서 작동합니까? –

+0

정확히 3 일 전에 나 자신을 위해 구현하고 싶은 무언가를 보여주는 +1 ... – Daniel

0

거래에서 이메일을 보낼 위해 우리는 현재 다음과 같은 방법을 사용에서

더. 후자는 몇 번 재 시도 될 수 있습니다. 그렇게되면 이메일을 남길 수 있다고 확신하게됩니다. 보고서 서버, FAX 서버 등을 호출 할 때와 동일합니다.

1

XA 트랜잭션을 사용하여 파일 시스템 작업과 데이터베이스 작업을 동일한 트랜잭션에 포함하므로 원자 단위로 만듭니다. SQL Server는 이미 XA를 지원합니다. XA를 사용하여 파일 시스템 트랜잭션을 활성화하려면 XADisk을 사용하십시오.