JBoss Microcontainer jest to nowe jądro serwera aplikacyjnego JBoss AS 5. Powstało w wyniku prac nad poprzednim JXM Microkernel zmierzających do dodanie do niego wsparcia dla obiektów POJO. Nowe wydania jądra serwera aplikacyjnego może także być używane samodzielnie (jak zresztą większość pozostałych produktów JBossa). Oto jego najważniejsze cechy:
- wsparcie dla wszystkich cech JMX Microcontainer
- obsługa bezpośredniej instalacji komponentów POJO
- obsługa wstrzykiwania zależności
- poprawy w zarządzani cyklem życia
- dodanie dodatkowych możliwości kontroli nad zależnościami
- integracja z AOP
- wprowadzenie Virtual File System (VFS)
- ładowanie klas przy użyciu OSGI
Podstawowe moduły jądra
Moduły, jakie wchodzą w skład jądra JBossa oraz zależności między nimi:
- Bootstrap – mechanizm pozwalający na aktywację jądra (jego załadowanie)
- Controller – odpowiada za upewnienie się, że obiekty POJO zostaną załadowane, skonfigurowane oraz uruchomione w zależności od wybranego profilu, rozwiązywanie zależności i konfigurację oraz cykl życia rożnych systemów i usług
- Registry – przechowywanie informacji o zainstalowanych obiektach POJO
- Configurator – inicjalizuje i konfiguruje obiekty POJO
- Deployer – proces instalacji obiektów
- Bus –
- Repository – przechowywanie metadanych o zainstalowanych oraz dostępnych (lecz nie zainstalowanych) obiektach POJO
- Profile – pozwala na zdefiniowanie które systemy, podsystemy, obiekty POJO zostają zainstalowane, które usługi wystartują automatycznie a które będzie można uruchomić ręcznie
Proces startu serwera
Sam proces startu serwera jest obsługiwany przez oddzielaną bibliotekę, pochodząca z projektu JBoss Bootstrap. Start serwera typowo wygląda tak:
- utworzenie serwera
- wskazanie serwerowi, gdzie znajduje się konfiguracja, w przypadku JBossa jest to plik
bootstrap.xml
- uruchomienie serwera
- zamrożenie konfiguracji, uniemożliwienie jej zmian w czasie działania serwera
- serwer zostaje uruchomiony, uruchamia po kolei swoje usługi, zdarzenia
- serwer przechodzi w stan „STARTED”
- można działać
- zamykanie serwera, uruchamianie zdarzeń związanych ze zmianą stanu
- ewentualny restart serwera
Plik XML zawierający konfigurację procesu startu zawiera odnośniki do plików, które odpowiadają za konfigurcację poszczególnych usług serwera. W przypadku JBossa 5.1 wygląda on następująco (znajduje się on w pliku $JBOSS_HOME/server/default/conf/bootstrap.xml
):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | < ?xml version="1.0" encoding="UTF-8"?> <!-- The list of URLs for mc beans to load during bootstrap. $Id: bootstrap.xml 88109 2009-05-01 20:10:48Z bstansberry@jboss.com $ --> <bootstrap xmlns="urn:jboss:bootstrap:1.0"> <url>bootstrap/logging.xml</url> <url>bootstrap/vfs.xml</url> <url>bootstrap/classloader.xml</url> <url>bootstrap/aop.xml</url> <url>bootstrap/jmx.xml</url> <url>bootstrap/deployers.xml</url> <url>bootstrap/profile.xml</url> </bootstrap> |
Poszczególne pliki odpowiadają za konfigurację i inicjalizację odpowiedniego zestawu usług:
- logging.xml
- vfs.xml – inicjalizacja Virtual File System
- classloader.xml – główny system ładowania klas oraz konfiguracja ścieżki dostępu do klas
- aop.xml – inicjalizacja ziarna JBoss AOP AspectManager, wczytanie potrzebnych bibliotek
- jmx.xml – inicjalizacja JMXKernel
- deployers.xml – inicjalizacja szeregu ziaren odpowiedzialnych za aplikację rożnych usług lub aplikacji
- profile.xml –
Źródła
- What is JBoss Microcontainer?
- A Look Inside the JBoss Microcontainer, Part I — Component Models
- A Look Inside JBoss Microcontainer, Part II – Advanced Dependency Injection and IoC
- A Look Inside JBoss Microcontainer, Part 3 – the Virtual File System
- A Look Inside JBoss Microcontainer’s ClassLoading Layer
- JBossKernel
- JBossMicrocontainer
- Administration And Configuration Guide, Chapter 4. Microcontainer