헷갈리는 COM+에서의 Transaction 속성

Transaction이라는 것은 논리적으로 하나의 처리 sequence 갖고 임의의 process 처리하도록 하는 것을 의미하는데, 예를 들어, A, B, C 순서적으로 하나의 Transaction scope 안에 있다면, A, B, C 모두 성공해야만, 해당 process 처리 완료되는 것이고, 어느 하나라도 실패한다면, A, B, C 모두를 Rollback하도록 하는 것이 필요할 , Transaction 처리를 하게 된다.

COM+ Transaction 속성을 지정할 있는 , 다양한 Transaction 시나리오를 위해서 5가지의 Transaction 속성을 지정할 있다. 가지를 비교해서 설명하면,

 

Disabled Not supported 속성을 먼저 비교할 있다. 이들은 엄밀히 말하면 Transaction에서 벗어나 있다. 그러므로, 기존에 해당 Component 호출하는 이전에 이미 Transaction 존재한다면, Not supported 경우는 해당 Transaction context 하위의 Component 흘려 보내지 않는 . 하지만, Disabled 이미 존재하는 Transaction Context 무관하지만, 하위의 Component Transaction Context 흘러 보냄으로써 Transaction Context Share한다. 하지만, 이들 해당 Component에서는 Transaction 무관하므로 Transaction Complete/Abort 대한 voting 없다.

 

오히려 Disabled Supported 경우는 동일하게 Transaction Context Share하는 경우로, 이미 존재하는 Transaction 하위 Component 흘려 보낼 있다. Disabled 자신은 Transaction Context 존재와 상관없이 transaction 무관하다면, Supported Transaction Context 존재할 경우에 Transaction 있으며, 존재하지 않으며, Transaction 타지 않고 수행된다. 그러므로, Disabled 와는 달리 Transaction 대한 Voting 가능하다.

 

Required Required New 비교해보자. Transaction 반드시 타는 경우이므로, Transaction 대한 Voting 가능/필요하다. 하지만, Required 기존에 Transaction 이미 존재한다면, 해당 transaction 타지만, 어떠한 transaction 존재하지 않는 다면, 스스로 Root transaction , New Transaction 만든다. 하지만, Required New 경우는 기존의 Transaction 존재 여부와 상관없이 항상 Root transaction 된다. COM+ Nested Transaction 지원하지 않기 때문에 새로운 Transaction으로 분기되는 경우가 생긴다면, 각각의 Transaction 별개의 Transaction으로 간섭하지 않는 다는 것도 명심해야겠다.

 

만일, Transactional 속성이 Disabled Component에서 Exception 발생하였다면?

상위 내용대로라면, 해당 Component에서의 SetAbort 기존의 transaction 영향을 주지 않는 것이 맞을 것이다. 하지만, Exception Propagation 하여 Transactional Component(Disabled Not supported 아닌)안에서 명시적으로 SetAbort 것인지, SetComplete 것인지를 결정할 있겠다. 복잡한 것이 문제가 Disabled Component 이전의 Transactional Component뿐만이 아니라 Exception handling여부에 따라 미치게 되는 Disabled Component 하위에 transactional Component 존재할 있기 때문에 정상적인 Exception handling외에 .하위 Component Transactional Voting역시 프로그램 흐름상 고려되어 필요가 있을 지도 모르겠다.

by 강세윤 | 2009/10/15 15:29 | 정리되지 않은 기술 | 트랙백 | 덧글(0)
트랙백 주소 : http://byung.egloos.com/tb/5142193
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >