드디어 왔구나...^^

2005/09/13 13:39
같은 비행기를 타고 온 다른 사람들은 다 내렸다는데,
묭이가 안나온다구 그래서 걱정했는데,
좀 전에 전화를 받았다. 잘 나왔다구..

무슨 소지품을 무기로 오해받았다나...-_-;
아마도 묭이 인상때문에 무기로 오해하지 않았을까나? ㅋㅋㅋㅋ

왔다니까...일 고만하고 집에 가서 얼굴 보구 싶네. ^^;
가서 거의 두시간 기다린 민이 고생했구..
또 이따가 나 데리러 와야겠네..ㅎㅎㅎ

Transaction - ACID

2005/09/13 09:22
한 시스템이 안전하다고 말하기위해서 충족되어야 할, 트랜잭션의 4가지 요구사항이
ACID, Atomic, Consistent, Isolated, Durable 이다.

Atomic
트랜잭션이 완전히 실행되거나 아니면 하나도 실행되지 않거나다. 예를 들어, 하나의 트랜잭션에서 1,2,3,4의 네개의 task를 실행해야 한다면,
1. 1,2,3,4가 모두 실행되거나
2. 중간에 실패하면 1,2,3,4 중의 어느 것하나도 실행되면 안된다는 것이다.

Consistent
비지니스 시스템이 트랜잭션이 끝난후의 상태와 이치가 맞아야 한다는 것으로, 다시 말해서 비지니스 시스템의 상태가 진짜 비지니스 상황과 같아야 한다는 말이다.
예를 들어, 비행기표를 예약하는 시스템에서 고객한테 티켓을 발급하면서 돈을 지불하는 과정을 빠트린다면, 실제의 비지니스 상황과 트랜잭션 시스템이 일치하지 않는 것이다.
또 데이터베이스에서도 비지니스와 일치하는 constraint을 가져야 하는데, 예를 들어, 고객이 좌석을 예약할때, 비행기, 좌석, 고객정보가 모두 constraint을 가져야지 안그러면 좌석만 배정받고 실제 타야하는 비행기는 모르는 경우가 생길 수도 있다.
Consistent는 atomic, isolated, durable이 모두 만족되야 만족될 수 있는 사항이다.

Isolated
트랜잭션이 실행되는 중간에 방해를 받지 말아야한다는 것으로, 트랜잭션이 액세스하고 있는 데이터가 중간에 다른 프로세스나 다른 트랜잭션으로 인해 변하는 걸 방지하기 위해 필요한 성질이다.

Durable
트랜잭션이 성공하면 트랙잭션으로 인해 생긴 데이터를 물리적인 저장장소에 기록해야 한다는 것으로, 시스템이 크래쉬되더라도 데이터를 잃지 않도록 하기 위한 것이다.

EJB Patterns - Service Locator

2005/09/12 11:15
Service Locator 패턴은 클라이언트가 엔터프라이즈 비지니스 서비스를 액세스하는 과정을 간단하게 만들어준다. (Simplify client access to enterprise business services.)
(이구...가끔은 그냥 영어를 갖다부치는 게 훨씬 명료하고 짧다는 생각이 든다. 아마도 나의 번역실력이 부족한 탓이겠지만...ㅜㅜ)

내식대로 설명해보자면,,,
EJB API를 이용하기 위해서는 먼저 클라이언트 사이드에서 JNDI로 Lookup을 해서 EJB Home Interface를 얻어야 한다. 그런데 이 lookup 과정을 필요할때마다 클라이언트 프로그램에 하드코드하는 건 코드를 유지보수하기 힘들게 한다, 더구나 불필요한 JNDI initial context를 생성하고 lookup을 하는건 성능을 떨어트리게도 된다. 그래서,,,,Service Locator 패턴을 이용하자는 건데!

이 Service Locator는 JNDI 이름을 받아서 그 이름에 맞는 서버사이드 컴포넌트를 찾아서, 그 레퍼런스를 건네준다. 이건 EJB를 찾을때뿐만이 아니라 JDBC같은 다른 리소스를 찾는데도 유용하다.

다음 다이어그램은 선의 Java Pet Project을 Service Locator에 응용한 것이다.


1. AdminReqestBD라는 클라이언트가 Service Locator한테 OPCAdminFacade 빈을 찾아달라고 요청하면,
2. Service Locator는 캐쉬된 OPCAdminFacade home interface나 혹은 IntitalContext를 이용해서 OPCAdminFacade home interface를 클라이언트에 리턴하고,
3. AdminReqeustBD 클라이언트는 OPCAdminFacade을 이용한다.

Service Locator 패턴은 Business Delegate 패턴과 같이 혼합해서 사용되는데,
(예제의 AdminRequestBD가 Business Delegate임)
Business Delegate는 다음 편에...

좀더 자세한 설명이나 소스코드가 필요하면 밑의 출처를 참고하도록.

참고: http://java.sun.com/blueprints/patterns/ServiceLocator.html