kr.co.hit.live.container.impl
Class EnlistedServiceContainer

java.lang.Object
  extended by kr.co.hit.live.container.impl.EnlistedServiceContainer
All Implemented Interfaces:
ServiceContainer

public class EnlistedServiceContainer
extends Object
implements ServiceContainer

서비스 객체를 생성/관리/제공하는 핵심 기능을 제공하는 ServiceContainer의 구현 클래스이다. 서비스가 정의된 서비스 레지스트리는 외부에서 생성하여 생성자에게 전달해야한다.

Since:
4.0
Author:
김형도

Field Summary
protected  ServiceRegistry svcRegistry
           서비스 정의 목록인 서비스 레지스트리이다.
 
Constructor Summary
EnlistedServiceContainer(ServiceRegistry svcRegistry)
           
EnlistedServiceContainer(ServiceRegistry svcRegistry, ClassLoader loader)
          서비스 정의 목록인 서비스 레지스트리 객체를 입력으로 받는 생성자이다.
 
Method Summary
 void addPostProcessor(ServicePostProcessor postProcessor)
          서비스 객체 생성후 후처리를 진행할 ServicePostProcessor 객체를 등록한다.
 void close()
          컨테이너를 종료한다.
 boolean containsService(String svcName)
          주어진 서비스 명이 등록되어 있는지 여부를 반환한다.
 String[] getAllServiceNames()
          등록되어 있는 모든 서비스 명을 배열로 반환한다.
 ClassLoader getClassLoader()
          서비스 클래스를 로딩할 때 사용하는 클래스로더 객체를 반환한다.
 String[] getPatternServiceNames()
          등록되어 있는 서비스 명 중에서 패턴형태의 이름을 반환한다.
 Object getService(String svcName)
          주어진 서비스 명에 해당되는 서비스 객체를 반환한다.
 ServiceInfo[] getServiceInfo()
          등록된 서비스들에 대한 정보 목록을 반환한다.
 ServiceInfo getServiceInfo(String svcName)
          특정 서비스에 대한 정보를 반환한다.
 Map<String,Object> getServicesOfType(String typeName)
          주어진 타입명에 해당되는 서비스 객체 목록을 반환한다.
 void populateServices()
          pre-init, singleton, activate 속성이 모두 true 인 서비스들을 미리 생성한다.
 void reload()
          서비스 객체들을 다시 생성한다.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

svcRegistry

protected ServiceRegistry svcRegistry

서비스 정의 목록인 서비스 레지스트리이다.

Constructor Detail

EnlistedServiceContainer

public EnlistedServiceContainer(ServiceRegistry svcRegistry,
                                ClassLoader loader)
서비스 정의 목록인 서비스 레지스트리 객체를 입력으로 받는 생성자이다. 서비스 객체를 생성하기 위하여 사용할 ClassLoader 객체를 지정할 수 있다. ClassLoader를 null로 지정하면 Thread의 ContextClassLoader를 사용한다.

Parameters:
svcRegistry -
loader -

EnlistedServiceContainer

public EnlistedServiceContainer(ServiceRegistry svcRegistry)
Method Detail

getClassLoader

public ClassLoader getClassLoader()
Description copied from interface: ServiceContainer
서비스 클래스를 로딩할 때 사용하는 클래스로더 객체를 반환한다.

Specified by:
getClassLoader in interface ServiceContainer
Returns:

containsService

public boolean containsService(String svcName)
주어진 서비스 명이 등록되어 있는지 여부를 반환한다.

Specified by:
containsService in interface ServiceContainer
Parameters:
svcName -
Returns:

getAllServiceNames

public String[] getAllServiceNames()
등록되어 있는 모든 서비스 명을 배열로 반환한다.

Specified by:
getAllServiceNames in interface ServiceContainer
Returns:
String[] 서비스 명 배열

getPatternServiceNames

public String[] getPatternServiceNames()
등록되어 있는 서비스 명 중에서 패턴형태의 이름을 반환한다.

Specified by:
getPatternServiceNames in interface ServiceContainer
Returns:

getService

public Object getService(String svcName)
                  throws ServiceContainerException
Description copied from interface: ServiceContainer
주어진 서비스 명에 해당되는 서비스 객체를 반환한다. 서비스 명이 서비스 정의 파일에 없다면 ServiceContainerException이 발생된다.

Specified by:
getService in interface ServiceContainer
Parameters:
svcName - 얻고자하는 서비스 명
Returns:
해당 서비스 객체
Throws:
ServiceContainerException - 서비스가 정의되지 않았거나, 서비스 객체 생성 시 오류가 발생했을 경우

addPostProcessor

public void addPostProcessor(ServicePostProcessor postProcessor)
Description copied from interface: ServiceContainer
서비스 객체 생성후 후처리를 진행할 ServicePostProcessor 객체를 등록한다.

Specified by:
addPostProcessor in interface ServiceContainer

close

public void close()
Description copied from interface: ServiceContainer
컨테이너를 종료한다. 필요한 리소스를 반환하고 서비스들을 제거하는 작업들을 수행한다.

Specified by:
close in interface ServiceContainer

getServiceInfo

public ServiceInfo[] getServiceInfo()
Description copied from interface: ServiceContainer
등록된 서비스들에 대한 정보 목록을 반환한다.

Specified by:
getServiceInfo in interface ServiceContainer
Returns:
ServiceInfo[]

getServiceInfo

public ServiceInfo getServiceInfo(String svcName)
Description copied from interface: ServiceContainer
특정 서비스에 대한 정보를 반환한다.

Specified by:
getServiceInfo in interface ServiceContainer
Returns:

reload

public void reload()
Description copied from interface: ServiceContainer
서비스 객체들을 다시 생성한다.

Specified by:
reload in interface ServiceContainer

getServicesOfType

public Map<String,Object> getServicesOfType(String typeName)
                                     throws ServiceContainerException
Description copied from interface: ServiceContainer
주어진 타입명에 해당되는 서비스 객체 목록을 반환한다. 하위클래스는 여부는 고려하지 않고 타입명이 정확히 일치하는 경우만 찾아서 반환한다. 타입 명 비교 시에 서비스의 interface와 class 설정 값을 모두 확인한다.

Specified by:
getServicesOfType in interface ServiceContainer
Parameters:
typeName - 얻고자하는 서비스의 클래스 명(전체 패키지)
Returns:
해당 서비스 객체를 담고 있는 Map 객체
Throws:
ServiceContainerException - 서비스 객체 생성 시 오류가 발생했을 경우

populateServices

public void populateServices()
pre-init, singleton, activate 속성이 모두 true 인 서비스들을 미리 생성한다.

Specified by:
populateServices in interface ServiceContainer


Copyright © 2014. All Rights Reserved.