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:
- Wykupić wsparcie w Red Hacie i mieć dostęp do wszelkich aktualizacji (generalnie najlepsza opcja).
- 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?
Lista wszystkich zmian w repozytorium od momentu wydania wersji stabilnej JBossa 5.1:
Możemy sprawdzić, ile było poszczególnych zmian w kodzie źródłowym:
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:
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:
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:
Kompilacja źródeł
Pozostaje teraz skompilować serwer aplikacji. Jest to czynność stosunkowo łatwa, sprowadza się do uruchomienia jednego skryptu:
./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:
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 |
#1 by Maciej on 2011/09/19 - 09:17
Witam,
chciałem skompilować jboss’a 5.1 ze źródeł, tak jak w twoim opisie, ale teraz to już chyba nie działa. Mógłbyś sprawdzić, czy nadal działa Twój opis? Ja budując maven’em dostaję:
1 required artifact is missing.
for artifact:
org.jboss.jbossas:jboss-as-main:jar:5.1.2-Branch
Łukasz Stelmach Reply:
Wrzesień 22nd, 2011 at 08:54
Tak, masz rację. Niedawno próbowałem i nie udało mi się. Wydaje mi się, że są jakieś problemy z konfiguracją Mavena i jego repozytoriów, ale nie udało mi się skonfigurować go poprawnie.
#2 by Maciej on 2011/09/26 - 08:54
Przeglądałem sporo for pod tym kątem i widać, że jest to świadomy ruch redhata. Nawet osoby z wykupionym EAP’em nie mają dostepu do repozytoriów mavena redhata (a tylko z nimi można zbudować wersje). Nie można więc zbudować sobie samemu.