Polecenie twiddle
pozwala na wykonywanie różnych operacji na serwerze aplikacji JBoss.
List wszystkich wpisów z tej serii:
- Polecenie twiddle: jak połączyć się z serwerem aplikacji JBoss AS
- Polecenie twiddle: jak znaleźć informacje o ziarnach i metodach
- Polecenie twiddle: operacje na na zasobach serwera
Pobranie informacji o wartości atrybutu: get
Przy użyciu polecenia twiddle
można uzyskać informacje o wartości różnych atrybutów poszczególnych ziaren przy użycia komendy get
. Konstrukcja polecenia jest następująca:
Help for command: 'get'
Get the values of one or more MBean attributes
usage: get [options] <name> [<attr>+]
If no attribute names are given all readable attributes are retrieved
options:
--noprefix Do not display attribute name prefixes
-- Stop processing options
Jak widać, aby poznać wartość wybranego ziarna należy odwołać się do ziarna oraz podać listę atrybutów, których wartości nas interesują. Przykładowe wywołanie, sprawdzające czy serwer wystartował:
Started=false
Jak widać, serwer jeszcze nie działa, polecenie zostało wykonane w trakcie jego startu. Wydanie go już po pomyślnym starcie serwera zwraca następujący wynik:
true
Widać tutaj także jak wpływa na wynik działania użycie opcji --noprefix
, zostanie wyświetlona tylko wartość podanego atrybutu, bez jego nazwy.
A oto jak działa pobranie wartości więcej niż jednego atrybutu (w tym przypadku minimalnej i maksymalnej ilości otwartych połączeń w danej puli):
MinSize=5
MaxSize=20
To samo polecenie, ale bez nazw atrybutów:
5
20
Ustawienie wartości atrybutów: set
i setattrs
Do ustawienia wartości pojedynczego atrybutu można użyć komendy set
:
Help for command: 'set'
Set the value of one MBean attribute
usage: set [options] <name> <attr> <val>
options:
--noprefix Do not display attribute name prefixes
-- Stop processing options
Do zmiany wartości atrybutu potrzeba jest wiedza o nazwie ziarna oraz nazwie atrybutu. Przykładowe wywołanie, zmieniające minimalną ilość otwartych połączeń w puli:
MinSize=10
Ustawia wartość otwartych połączeń na 10.
Do jednoczesnej zmiany wartości więcej niż jednego atrybutu w danym ziarnie można użyć komendy setattrs
:
Help for command: 'setattrs'
Set the values of one or more MBean attributes
usage: setattrs [options] <name> [<attr value>+]
options:
--noprefix Do not display attribute name prefixes
-- Stop processing options
Struktura polecenia jest taka sama jak polecenia set
, pozwala jednak na podanie większej ilości atrybutów. Przykładowe wywołanie zmieniające minimalną i maksymalną ilość połączeń w puli:
The following attributes were set successfuly:
MinSize=5
MaxSize=30
Warto zauważyć, że w wyniku działania tego polecenia albo zostaną ustawione wszystkie wartości wybranych atrybutów (jeżeli nie wystąpi żaden błąd w trakcie działania polecenia) lub też żadne zmiany nie zostaną wprowadzone (w przypadku wystąpienia jakiegoś błędu):
11:52:02,550 ERROR [Twiddle] Exec failed
java.lang.NumberFormatException: For input string: "pięć"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.valueOf(Integer.java:554)
at sun.beans.editors.IntEditor.setAsText(IntEditor.java:21)
at org.jboss.console.twiddle.command.SetAttrsCommand.execute(SetAttrsCommand.java:174)
at org.jboss.console.twiddle.Twiddle.main(Twiddle.java:306)
Pobranie informacji o ziarnach zwróci następujące wartości:
MinSize=5
MaxSize=30
Wywołanie akcji na ziarnie: invoke
Za wywołania konkretnych metod na wybranym ziarnie odpowiada komenda invoke
:
Help for command: 'invoke'
Invoke an operation on an MBean
usage: invoke [options] <query> <operation> (<arg>)*
options:
-q, --query-type[=<type>] Treat object name as a query
-- Stop processing options
query type:
f[irst] Only invoke on the first matching name [default]
a[ll] Invoke on all matching names
Jako argumenty przyjmuje ona nazwę ziarna na którym ma zostać wykonana dana akcja, nazwę metody do wywołania jej parametry (jeżeli są potrzebne). Wywołania drzewa JNDI:
...
<h1>java: Namespace</h1>
<pre>
+- securityManagement (class: org.jboss.security.integration.JNDIBasedSecurityManagement)
+- comp (class: javax.namingMain.Context)
+- XAConnectionFactory (class: org.jboss.jms.client.JBossConnectionFactory)
+- JBossCorbaInterfaceRepositoryPOA (class: org.omg.PortableServer.POA)
...
Ponieważ polecenie to pozwala na bezpośrednie wywoływania różnych akcji na danym serwerze, istotne jest zabezpieczenie dostępu do konsoli JMX poprzez ustawienie odpowiedniego użytkownika oraz mocnego hasła.