Wersja społecznościowa (community) serwera aplikacji JBoss jest wydawana co jakiś czas w wersji stabilnej i na tym kończy się wsparcie ze strony Red Hata. Można to łatwo zauważyć na przykładzie wersji 5.1 serwera. Została ona wydana 23.05.2009 (czyli ponad półtora roku temu) i następną wersja stabilna, która się pojawiła do wersja 6.0 wydana pod koniec grudnia. W międzyczasie nie została opublikowana żadna wersja pośrednia.

Oczywiście, nie oznacza to że serwer nie posiada żadnych błędów. Jest to raczej związane z polityką firmy Red Hat, która poprawki do poszczególnych wersji wydaje tylko w ramach subskrypcji. Pozostają więc takie możliwości:

  1. Wykupić wsparcie w Red Hacie i mieć dostęp do wszelkich aktualizacji (generalnie najlepsza opcja).
  2. Pobrać aktualne źródła serwera aplikacji JBoss i samodzielnie je skompilować.

Przy pierwszym wariancie dużo do roboty nie ma, i w razie problemów zawsze można zawracać głowę firmie Red Hat. Zapewni to dostęp do przetestowanej aplikacji i da gwarancje, że wszystkie elementy działają poprawnie.

Jeżeli nie zdecydujemy się wykupienie wsparcia, pozostaje samodzielna kompilacja aplikacji. Pojawia się tutaj pytanie: po co w ogóle kompilować serwer aplikacji? Czy nie wystarczy po prostu używać opublikowanej aplikacji?

Poniższe polecenia będzie można wykonać samodzielnie po pobraniu źródeł serwera aplikacji.

Lista wszystkich zmian w repozytorium od momentu wydania wersji stabilnej JBossa 5.1:

svn log -r {2009-05-24}:BASE

Możemy sprawdzić, ile było poszczególnych zmian w kodzie źródłowym:

svn log -r {2009-05-24}:BASE | grep  ^r[[:digit:]] | wc -l

W moim przypadku wyszło 866 zmian w kodzie źródłowym.

Można także sprawdzić, ile usunięto zgłoszeń w systemie śledzenia błędów:

svn log -r {2009-05-24}:BASE | grep JBPAPP- | wc -l

W moim przypadku wyszło 502 zgłoszenia.

Jak widać, prace nad wersją JBossa 5.1 cały czas trwają.

Konfiguracja systemu

W moim przypadku cały proces kompilacji odbywa się na maszynie z systemem Ubuntu 10.10. Na szczęście system nie ma podczas tego procesu dużego znaczenia (poza detalami związanymi z instalacją pakietów).

Wymagania początkowe:

  • dostępność JDKw wersji co najmniej 1.5 (ja testowałem na JDK 1.6.22)
  • instalacja klienta Subversion
    sudo aptitude install subversion
  • instalacja aplikacji patch:
    sudo aptitude install patch

Kolejnym krokiem jest utworzenie odpowiedniego katalogu przeznaczonego na źródła serwera JBoss a następnie pobranie źródeł przy użyciu klienta Subversion:

mkdir JBoss-5.1
svn co http://anonsvn.jboss.org/repos/jbossas/branches/JBPAPP_5_1/ JBoss-5.1

Teraz pozostaje odczekać, aż źródła zostaną pobrane.

Jeżeli w przyszłości będziemy chcieli zaktualizować źródła, wystarczy wejść do katalogu z nimi (w moim przypadku do katalogu JBoss-5.1) i wydać polecenie:

svn update

Kompilacja źródeł

Pozostaje teraz skompilować serwer aplikacji. Jest to czynność stosunkowo łatwa, sprowadza się do uruchomienia jednego skryptu:

cd build
./build.sh

Podczas pierwszego uruchomienia zostaną pobrane wszystkie niezbędne do kompilacji i działania serwera biblioteki (przy użyciu aplikacji Maven). Proces ten może trwać dość długo. Po zakończeniu pobierania bibliotek źródła zostaną skompilowane i pliki binarne można będzie znaleźć w katalogu build/output.

W moim przypadku znalazł się tam katalogu jboss-5.1.1.Branch, co jak widać jest wersją nowszą niż ostatnia wersja społecznościowa serwera aplikacji JBoss 5.1.

Kompilacja ta jest także bardzo podobna do wersji komercyjnej serwera:

  • znajdziemy w niej profil production
  • w profilach jest także wyłączony dostęp do konsol zarządczych, użytkownik admin jest wyłączony w plikach konfiguracyjnych

Jeżeli z jakiś powodów wolimy wersję podobną do wersji społecznościowej, należy uruchomić na binarnym serwerze odpowiednie pliki przy użyciu polecenia patch. Dokładne instrukcje można znaleźć w pliku build/REDME.

Na zakończenie mały skrypt, który wywoła kompilację serwera JBoss, ale zapisze ją w katalogu zawierającym numer wersji repozytorium. Pozwoli to w łatwy sposób oznaczyć wersje źródeł, co może przydać się podczas testowania, czy aktualna wersja działa poprawnie i może zostać użyta na serwerach produkcyjnych.

Skrypt nazwa się build_jboss.sh i należy wywołać go z nazwą katalogu w którym znajdują źródła serwera JBoss:

./build_jboss.sh JBoss-5.1

Skrypt:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash

if [ ! -n "$1" -o ! -d "$1" ]; then
        cat <<EOF
Prosze podac katalog ze zrodlami serwera JBoss:

$0 jboss-svn
EOF

        exit 1
fi

JBOSS_DIR="$1"
BUILD_DIR="build"

echo -n "Numer wersji repozytorium: "

cd $JBOSS_DIR
REVISION=$(svn info | grep Revision | cut -c 11-)
echo $REVISION

cd $BUILD_DIR

echo "Kompilacja"
./build.sh -Dversion.tag=$REVISION

echo Kompilacja zakonczona, sprawdz katalog $JBOSS_DIR/build/output
echo

exit 0

Źródła