Posts Tagged aplikacja

Zatrzymanie i uruchomienie zainstalowanej aplikacji przy użyciu linii poleceń w serwerze JBoss AS

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:

Admin Console - kontrola aplikacji

Admin Console - kontrola aplikacji

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:

$ twiddle.sh query 'jboss.web.deployment:*'
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ć:

$ twiddle.sh info 'jboss.web.deployment:war=/ROOT'
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ę:

$ twiddle.sh invoke 'jboss.web.deployment:war=/ROOT' stop

W logach JBossa powinien pojawić się taki komunikat:

15:35:35,665 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] undeploy, ctxPath=/

Uruchomienie aplikacji jest możliwe poprzez taką komendę:

$ twiddle.sh invoke 'jboss.web.deployment:war=/ROOT' start

I w logach można znaleźć informację o uruchomieniu aplikacji:

15:37:20,268 INFO  [org.jboss.web.tomcat.service.deployers.TomcatDeployment] deploy, ctxPath=/

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:

$ twiddle.sh query '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 katalogu deploy, 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]

Źródła

Tags: , , , , ,

Typy aplikacji jakie można zainstalować w serwerze aplikacji JBoss

Każda aplikacja, która ma działać w ramach danego serwera JBoss musi zostać najpierw zainstalowana przez niego zainstalowana. Jest to możliwe na kilka sposobów:

  • można umieścić aplikację w katalogu deploy serwera;
  • można zainstalować aplikację przy użyciu polecenia twiddle;
  • można użyć konsoli administracyjnej;

Więcej informacji na temat instalacji aplikacji znajduje się w tym wpisie: Zarządzanie instalacją aplikacji w JBoss AS.

Formaty pakietów z aplikacjami

Instalowana aplikacja może zarówno być w formie archiwum jak i jak katalogu z plikami zapisanymi w odpowiedniej strukturze (archiwum to nic innego jak ten sam katalog skompresowany przy użyciu algorytmu ZIP). Każda z form ma swoje wady i zalety, ale nie różnią się one efektem. Zarówno w jednym jak i drugim przypadku pozwalają na instalację aplikacji.

W przypadku skompresowanego archiwum mamy do czynienia z pojedynczym plikiem, które dużo łatwiej przesłać czy też skopiować. W przypadku jego rozkompresowanej formy mamy do czynienia z setkami czy też często tysiącami plików. Trudniej w takim przypadku zarządzać taką aplikacją (nie można np. zainstalować jej przy pomocy konsoli administracyjnej), za istnieje możliwość modyfikacji pojedynczych plików (np. strony JSP) i następnie łatwe wymuszenie restartu aplikacji.

Odpowiedni wątek monitorujący pojawienia się (lub też usuniecie) aplikacji w katalogu deploy monitoruje czasy modyfikacji odpowiednich plików w archiwum. I tak, jeżeli zmienimy odpowiedni plik (w zależności od rodzaju aplikacji) to nastąpi automatyczne odinstalowanie wybranej aplikacji i jej ponowna instalacja.

Podstawowe deskryptory aplikacji
Typ aplikacji Plik deskryptora
WAR WEB-INF/web.xml
EAR META-INF/application.xml
SAR META-INF/jboss-service.xml
JAR META-INF/ejb-jar.xml
RAR META-INF/ra.xml

Typy aplikacji instalowanych przez JBossa

JBoss rozróżnia poszczególne typy aplikacji na podstawie końcówek ich nazw (uwaga, często jest to więcej niż rozszerzenie). Ponieważ każdy typ aplikacji spełnia inne funkcje w ramach infrastruktury, którą zapewnia serwer aplikacji istotne jest zachowanie odpowiedniej kolejności startowania tych aplikacji. I tak różnego rodzaje aplikacje usługowe musza zostać uruchomione przed aplikacjami biznesowymi, które mają z nich korzystać. Tak samo najpierw należy odpowiednio skonfigurować połączenia z bazą danych, zanim zaczną działać aplikacje z nich korzystające.

W poniżej tabeli znajdują się typy poszczególnych aplikacji wraz z ich krótkim omówieniem. Jednocześnie pozycja występowania na tej liście mówi o kolejności startu danej aplikacji.,

Końcówka nazwy Typ aplikacjia
.deployer
-deployer-beans.xml
Aplikacje, które pozwalają na instalację innych rodzajów aplikacji. W przypadku JBossa 5.1 znajdują się one w katalogu $JBOSS_HOME/server/PROFIL/deployers
aop
-aop.xml
Definicja aspektów stosowany do klas lub rozszerzenie czy też dodanie nowych funkcji do tych klas
.sar
-service.xml
Różnego rodzaju aplikacje usługowe, rozszerzające możliwości serwera aplikacji
-jboss-beans.xml Definicja obiektów POJO mikrokontenera
.rar Konfiguracja różnych zasobów
-ds.xml Definicja źródeł danych, używanych potem przez aplikacje w celu uzyskania dostępu do bazy danych
.har Definicja archiwum Hibernate, używanego do do dostępu do bazy danych przy użyciu Hibernate
.jar Zbiór komponentów EJB lub też po prostu biblioteka klas
.zip Serwer aplikacji sprawdzi zawartość archiwum i postara się rozpoznań typ aplikacji jaki się w nim znajduje. Potem zostanie ona zainstalowana jak aplikacja o odpowiednim typie.
.war Archiwum z aplikację webową, dostarczająca interfejs dostępny przez przeglądarkę lub też web service
.wsr Archiwum specyficzne dla JBossa, zawiera web service. Używany jeżeli dana aplikacja ma zostać zainstalowana po wszystkich archiwach WAR.
.ear Aplikacja Java EE, zawiera EJB, aplikacja WAR oraz inne biblioteki klas
.bsh Definicja usługi przy użyciu powłoki bean shell
.last Tak oznaczone aplikacje będą instalowane jako ostatnie w ramach swojego typu

Aplikacje same w sobie mogą byc zagnieżdżone. I tak aplikacja typu EAR najczęściej składa się z szeregu plików JAR z logiką biznesową, z warstwy prezentacji WAR oraz różnych innych deskryptorów. W takim przypadku JBoss stara się odnaleźć te różne aplikacji i je w ramach głównej aplikacji zainstalować. Tutaj również ma zastosowanie taka sama kolejność instalacji aplikacji jak w tabeli powyżej.

Źródła

Tags: , , , ,

Automatyczna instalacja aplikacji znajdującej się poza katalogiem deploy

Domyślna konfiguracja serwera aplikacji JBoss automatycznie instaluje wszystkie aplikacje które znajdą się w katalogu deploy wybranego profilu. Może się jednak zdarzyć, że potrzebujemy instalować automatycznie zainstalować aplikację która znajduje się poza tym katalogiem (np. nie mamy dostępu do tego katalogu, jest to katalog współdzielony przez inne instancje czy też może z innych powodów).

Jednym ze sposób takiej instalacji jest użycie polecenia twiddle, tak jak jest to opisane tutaj: Zarządzanie instalacją aplikacji w JBoss AS. Taka instalacja jednak nie przetrwa restartu serwera, trzeba będzie odpowiednie polecenie wydawać po każdym uruchomieniu serwera lub aktualizacji aplikacji.

Innym sposobem jest wskazie w konfiguracji serwera dodatkowego katalogu, który będzie traktowany tak jak katalog deploy. Czyli w domyślnej konfiguracji wszystkie aplikacje (czy też pliki) będą automatycznie instalowane w serwerze aplikacji.

W przypadku serwera aplikacji JBoss wersji 5.1 odpowiedni należy modyfikacje wprowadzić w pliku conf/bootstrap/profile.xml. Plik ten znajduje się w wybranym profilu. Można tam znaleźć taką linię:

25
26
27
28
29
<property name="applicationURIs">
    <list elementClass="java.net.URI">
        <value>${jboss.server.home.url}deploy</value>
    </list>
</property>

Widać tutaj definicję podstawowego katalogu, który służy do instalacji aplikacji: ${jboss.server.home.url}deploy. Wystarczy teraz umieścić dodatkowy wpis określający nowy katalog i od tej pory JBoss powinien już go używać także do instalacji aplikacji. Ścieżkę dostępu należy podać w formie URI:

25
26
27
28
29
30
31
32
<property name="applicationURIs">
    <list elementClass="java.net.URI">
        <value>${jboss.server.home.url}deploy</value>

        <!-- Nowy katalog do skanowania -->
        <value>file:///nfs/applications</value>
    </list>
</property>

Źródła

Tags: , , , , ,