6장. JBoss EAP 모듈 아키텍처
JBoss EAP 5에서는 JBoss Microcontainer를 이용한 아키텍처를 사용하고 있었다. JBoss EAP 5의 각 서비스는 POJO나 JMX MBean로 구현된 모듈로 제공되며 이것들을 Microcontainer가 로드한다. HTTP나 JMS등의 여러 가지 기능을 제공하거나 각 서비스를 유연하게 추가하거나 제거하는 것이 가능했었다.
JBoss EAP 6에서는 이 모듈화를 더욱 개선하여 JBoss Module과 MSC(Modular Service Container)로 불리는 관리 기능으로 한층 더 개선시켜 개별적으로 로드 가능한 모듈 아키텍처를 적용하였다.
각각의 모듈에 대하여 기능을 설정하는 서브시스템은 Java EE의 표준을 제공하는 모듈로 JBoss 시작시의 코어 기능을 제공하는 핵심 서브시스템(Core Subsystems), 클러스터 기능을 제공하는 것 등 여러 가지 기능을 제공하는 모듈이다. 어느 서브시스템을 이용할지는 프로파일로 불리는 서브시스템 세트를 설정 파일(statndalone.xml, domain.xml)로 정의할 수가 있다.
JBoss EAP 6의 시작시 맨 처음에 bootstrap 서비스라는 다른 서비스를 배포하는데 필요한 최소한의 서비스로 JBoss Module, MSC(Modular Service Container)와 코어 서비스인 Threads, Logging, Deployment Scanner, Remoting을 시작하고, 이후에 그 외의 서비스들을 배포하게 되었다. 쉽게 말하자면 JBoss EAP 6 자체도 서브시스템으로부터 구성되어 있기 때문에 모듈의 집합체가 곧 JBoss EAP 6라고 할 수 있다. 또한 JBoss EAP 6는 이러한 서브시스템을 관리할 수 있는 운용 관리 서비스로서 Management를 제공한다. 관리 CLI나 관리 콘솔이라고 하는 운용 관리도구는 Management에 요청을 보내 결과를 수신한다.
JBoss EAP 6의 아키텍처와 JBoss EAP 6에서 제공하는 서브시스템의 관계는 그림과 같다.

그림 1. JBoss EAP 6 아키텍처
이 장에서는 JBoss EAP 6의 핵심 아키텍처라고 할 수 있는 모듈에 대해서 설명한다. 모듈은 클래스 로딩을 담당하기 때문에 클래스 로딩에 대해서도 설명하고 설정 방법을 소개한다.