1. 설계 목표 및 주요 역할
이 패키지는 Aspectran을 웹 서버 없이 독립적인 백그라운드 프로세스(데몬)로 실행하기 위한 특화된 서비스 구현을 제공합니다. 이 패키지의 설계 목표는 다음과 같습니다.
- 독립 실행 환경 제공: 웹 컨테이너에 의존하지 않고, 자체적인 생명주기를 가지는 독립 실행형 애플리케이션을 구축할 수 있는 기반을 제공합니다.
- 능동적인 요청 실행 모델: 외부의 HTTP 요청에 반응하는
WebService와 달리, 애플리케이션 내부의 특정 로직이나 스케줄러 등이 직접 트랜슬릿 실행을 트리거하는 능동적(Proactive) 실행 모델을 구현합니다. - 프로그래밍 방식의 진입점:
translate()메서드를 통해, 코드 내에서 동적으로 트랜슬릿을 호출할 수 있는 명확하고 제어 가능한 진입점을 제공합니다. - 비-웹 환경에서 세션 기능 지원: 데몬과 같이 오래 실행되는(long-running) 애플리케이션이 여러
translate()호출에 걸쳐 상태를 유지할 수 있도록, 선택적으로 세션 관리 기능을 제공합니다.
결론적으로, 이 패키지는 Aspectran의 강력한 기능(AOP, DI 등)을 백그라운드 작업, 배치 프로세스, 메시지 큐 리스너 등 UI가 없는 서버 애플리케이션에서 그대로 활용할 수 있도록 하는 것을 목표로 합니다.
2. 주요 클래스 및 인터페이스 상세 분석
DaemonService (인터페이스)
데몬 환경에 특화된 Aspectran 서비스의 명세입니다.
주요 책임 (Key Responsibilities):
CoreService를 상속하여 모든 핵심 서비스 기능을 가집니다.- 프로그래밍 방식으로 트랜슬릿을 실행하는 핵심 진입점인
translate(...)메서드들을 정의합니다. 이 메서드는 데몬 애플리케이션이 내부 서비스를 호출하는 주된 방법입니다. - 데몬 환경을 위한 세션 어댑터(
SessionAdapter)를 생성하는newSessionAdapter()메서드를 정의합니다.
DefaultDaemonService (구현 클래스)
DaemonService의 최종 구현체로, 프로그래밍 방식의 트랜슬릿 호출을 받아 DaemonActivity를 생성하고 실행하는 모든 과정을 담당합니다.
주요 책임 (Key Responsibilities):
DefaultCoreService를 상속하여 완전한 기능을 갖춘 핵심 서비스의 역할을 합니다.DaemonConfig설정에 따라DefaultSessionManager를 생성하고 관리하여, 데몬 환경에서도 세션을 시뮬레이션할 수 있도록 합니다.RequestAcceptor를 통해,translate()메서드로 호출될 수 있는 트랜슬릿의 목록을 제한하는 보안 기능을 제공할 수 있습니다.
핵심 메서드 분석:
translate(String transletName, ...): 이 클래스의 핵심 실행 메서드입니다. 웹 환경의WebService.service()에 해당하는 역할을 합니다.- 서비스가 일시 정지 상태인지 확인합니다.
- 요청된
transletName이RequestAcceptor에 의해 허용된 것인지 확인합니다. - 데몬 환경에 특화된
DaemonActivity인스턴스를 생성합니다. DaemonActivity에translate()메서드로 전달받은 트랜슬릿 이름, HTTP 메서드(가상), 속성, 파라미터 등을 설정합니다.activity.prepare()와activity.perform()을 호출하여 Aspectran의 표준 요청 처리 파이프라인을 구동합니다.- 실행 결과를 담고 있는
Translet객체를 반환합니다.
DefaultDaemonServiceBuilder (빌더 클래스)
DefaultDaemonService 인스턴스를 생성하고 설정하는 팩토리 클래스입니다.
주요 책임 (Key Responsibilities):
AspectranConfig객체를 받아DefaultDaemonService를 인스턴스화하고 필요한 설정을 주입합니다.ServiceStateListener를 설정하여, 서비스의 생명주기(시작, 중지, 일시정지 등)가CoreServiceHolder및SessionManager와 올바르게 연동되도록 합니다.
3. 다른 패키지와의 상호작용
com.aspectran.core.service:DefaultCoreService를 직접 상속하여 Aspectran의 모든 핵심 기능(생명주기,ActivityContext관리 등)을 재사용합니다.com.aspectran.daemon.activity:DefaultDaemonService는 모든translate()호출에 대해DaemonActivity를 생성합니다.DaemonActivity는 프로그래밍 방식의 호출을 코어 엔진이 이해할 수 있는 형태로 변환하는 어댑터 역할을 합니다.com.aspectran.core.context.config:DaemonConfig설정 객체로부터 데몬 전용 설정(세션 관리, 폴링 설정 등)을 읽어와 서비스에 반영합니다.
4. 패키지 요약 및 아키텍처적 의미
com.aspectran.daemon.service 패키지는 수동적인(Reactive) 웹 프레임워크를 능동적인(Proactive) 애플리케이션 컨테이너로 전환시키는 중요한 역할을 합니다. WebService가 외부 요청을 기다리는 반면, DaemonService는 애플리케이션 스스로가 필요에 따라 자신의 로직(트랜슬릿)을 호출할 수 있는 구조를 제공합니다.
translate() 메서드는 아키텍처적으로 웹 요청과 동일한 역할을 수행하는 내부 API 호출 게이트웨이입니다. 이 메서드를 통해 호출된 모든 트랜슬릿은 웹 요청과 마찬가지로 애스펙트(트랜잭션, 보안 등), 의존성 주입 등 Aspectran의 모든 기능을 동일하게 적용받을 수 있습니다.
또한, 비-웹 환경에서 세션 관리 기능을 제공하는 것은 이 패키지의 독특한 특징 중 하나입니다. 이를 통해 여러 번의 translate() 호출에 걸쳐 상태를 유지해야 하는 복잡한 백그라운드 애플리케이션을 효과적으로 구축할 수 있습니다.