Aplikacje zainstalowane w serwerze JBoss można zarówno zatrzymywać jak i ponownie uruchamiać, bez konieczności ich instalacji.
Odpowiednie akcje można bez trudności znaleźć w np. w konsoli administracyjnej:
Odpowiednie akcje pozwalają na zatrzymanie, uruchomienie lub restart aplikacji.
Co jednak zrobić, aby takie same akcje wykonać przy użyciu linii poleceń?
Za zarządzanie serwerem JBoss z linii poleceń odpowiada polecenie twiddle
, można je znaleźć w katalogu bin
serwera, tam gdzie pliku run.sh
. Przy jego pomocy można wykonywać określone akcje na odpowiednich ziarnach.
Pozostaje więc teraz tylko znaleźć ziarna odpowiedzialne za poszczególne akcje i powinno być po sprawie.
Operacja na aplikacjach typu WAR
Aplikacje typu war
to aplikacje webowem uruchamiane w ramach kontenera JBoss Web Container (czyli we wbudowanym Tomcacie). Aby taką aplikację zatrzymać czy też wystartować, należy znaleźć tylko odpowiednie ziarno, które za nią stroi. W tym przypadku wystarczy się przyjrzeć zawartości ziaren znajdujących się w grupie jboss.web.deployment
.
Można to zrobić albu używając konsoli JMX lub też bezpośrednio przy użyciu polecenie twiddle
:
jboss.web.deployment:war=/ROOT
jboss.web.deployment:war=/admin-console
jboss.web.deployment:war=/jmx-console
jboss.web.deployment:war=/invoker
jboss.web.deployment:war=/juddi
Tym sposobem otrzymamy listę ziaren, które odpowiadają za zarządzaniem poszczególnymi aplikacji. Teraz pozostaje się dowiedzieć, jakich metod można na nich używać:
Description: Management Bean.
+++ Attributes:
Name: SecurityManagement
Type: org.jboss.security.ISecurityManagement
Access: -w
Name: PolicyRegistration
Type: org.jboss.security.authorization.PolicyRegistration
Access: -w
Name: Kernel
Type: org.jboss.kernel.Kernel
Access: -w
+++ Operations:
void destroy()
void start()
void stop()
void create()
Interesujące są dwie metody: start
oraz stop
. Polecenie, które zatrzyma aplikację:
W logach JBossa powinien pojawić się taki komunikat:
Uruchomienie aplikacji jest możliwe poprzez taką komendę:
I w logach można znaleźć informację o uruchomieniu aplikacji:
Inne typy aplikacji
Niestety, nie udało mi się znaleźć odpowiednich ziaren dla typów EAR czy RAR. Widać, że takie istnieją, ale nie zachowują się do końca tak jak bym chciał.
Polecenie to wyświetli listę ziaren z grupy jboss.j2ee
:
W moim przypadku wyświetlone zostały dwa ziarna które pasowały do aplikacji. Jedno z nich zawierało akcje start
oraz stop
. I tak wywołanie akcji stop
niczego nie zmieniło (aplikacja dalej działała). Wywołanie natomiast akcji start
powodowało wyświetlenie komunikatów o zainstalowaniu aplikacji, ale także niczego nie zmieniło w jej działaniu (jak obsługiwała połączenia tak obsługiwała je cały czas).
Metodą, która natomiast zadziałała bez zastrzeżeń, jest wymuszenie odinstalowania aplikacji. Więcej można przeczytać w tym artykule: Zarządzanie instalacją aplikacji w JBoss AS. W skrócie wygląda to tak:
- usunięcie aplikacji:
$ twiddle.sh invoke "jboss.system:service=MainDeployer" undeploy "file:/ścieżka/do/pliku/do/instalacji"
- instalacja aplikacji:
$ twiddle.sh invoke "jboss.system:service=MainDeployer" deploy "file:/ścieżka/do/pliku/do/instalacji"
Przy takim instalowaniu aplikacji należy jednak pamiętać o dwóch sprawach:
- jeżeli JBoss ma uruchomioną usługę
HDScanner
, to jeżeli zostanie odinstalowana aplikacje znajdująca się w katalogudeploy
, może ona zostać zaraz zainstalowana ponownie przez tą usługę - aplikacje, które nie znajdują się w katalogu
deploy
nie są automatycznie instalowane podczas startu serwera JBoss, więc trzeba je zainstalować później[/cci]