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

Trackback

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다

Comments

Write your comment

댓글 입력 폼
[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다