Twiddle jest to aplikacja, która pozwala na zdalne komunikowanie się z serwerem aplikacji JBoss AS. Przy jej pomocy można bezpośrednio wywoływać odpowiednie polecenia, akcje. W praktyce można robić to samo co przy użyciu konsoli JMX. Polecenie to można znaleźć w katalogu $JBOSS_HOME/bin.

List wszystkich wpisów z tej serii:

  1. Polecenie twiddle: jak połączyć się z serwerem aplikacji JBoss AS
  2. Polecenie twiddle: jak znaleźć informacje o ziarnach i metodach
  3. Polecenie twiddle: operacje na na zasobach serwera

Podstawowe opcje jakie można podać w aplikacji twiddle

Podstawowy zestaw przełączników jest dostępny przy uzyciu opcji -h.

Polecenia pozwalające na uzyskanie pomocy

  • -h – pomoc o przełącznikach
  • –help-commands – lista dostępnych poleceń wraz z krótkimi opisami
  • -H – wyświetlenie dodatkowej pomocy o wybranym poleceniu

Definiowanie parametrów połączenie

Teraz czas na zestaw przełączników pomocnych do nawiązania połączenia z serwerem JBoss:

  • -s – adres IP oraz port na którym nasłuchuje serwer (domyślnie localhost:1099)
  • -u – nazwa użytkownika potrzeba do uwierzytelnienia (powinna zostać zdefiniowana w pliku $JBOSS_HOME/server/PROFIL/conf/props/jmx-console-users.properties)
  • -p – hasło użytkownika potrzebne do uwierzytelnienia (powinno zostać zdefiniowane w pliku $JBOSS_HOME/server/PROFIL/conf/props/jmx-console-users.properties)

Jeżeli serwer JBoss został zabezpieczony lub też nie został uruchomiony na innym interfejsie niż lokalny, to będzie trzeba używać tych przełączników przy każdym połączeniu z serwerem aplikacji. W poniższych przykładach nie będą one umieszczane, ale nie można o nich zapominać.

Lista poleceń

Listę dostępnych poleceń jakie można wydawać za pomocą narzędzia twiddle.sh można uzyskać przy użyciu przełącznika --help-commands:

$ ./twiddle.sh --help-commands
twiddle.sh commands:
    jsr77          Print out JSR77 related information
    xmbean         Print out mbean metadata as an xmbean descriptor
    info           Get the metadata for an MBean
    get            Get the values of one or more MBean attributes
    invoke         Invoke an operation on an MBean
    create         Create an MBean
    setattrs       Set the values of one or more MBean attributes
    unregister     Unregister one or more MBeans
    queryMethod    Query the server for a list of matching methods of MBeans
    listDomains    Query the server for a list of available domains
    query          Query the server for a list of matching MBeans
    set            Set the value of one MBean attribute
    serverinfo     Get information about the MBean server

Polecenia te pozwalają na wykonanie już konkretnych akcji po stronie serwera aplikacji.

Przykładowe użycie polecenia

Uzyskanie pomocy o poleceniu serverinfo:

$ ./twiddle.sh -H serverinfo
Help for command: 'serverinfo'

Get information about the MBean server

usage: serverinfo [options]

options:
    -d, --domain    Get the default domain
    -c, --count     Get the MBean count
    -l, --list      List the MBeans
    --              Stop processing options

W podobny sposób można uzyskać krótkie informacje o wszystkich poleceniach dostępnych w twiddle.sh

Uzyskanie informacji o domyślnej domenie serwera (bez autentykacji, serwera aplikacji pracuje na domyślnym interfejsie sieciowym):

$ ./twiddle.sh serverinfo -d
jboss

Dodanie autentykacji do połączenia:

$ ./twiddle.sh -u admin -p admin serverinfo -d
jboss

Dodanie informacji o interfejsie sieciowym na którym znajduje się JBoss (lub zdalne łączenie z inną maszyną):

$ ./twiddle.sh -u admin -p admin -s SERWER:PORT serverinfo -d
jboss

Trzeba pamiętać, że przełączniku określające sposób łączenia należy podawać przed nazwą polecenia jakie ma zostać wykonane.

W pozostałych przykładach pominę już autentykację użytkownika i serwer do którego chcemy się podłączyć. W razie potrzeby należy te informacje odpowiednio dodać do polecenia.

Pobranie informacji o MBeanach pasujących do zapytania:

$ ./twiddle.sh query 'jboss:service=invoker,*'
jboss:service=invoker,type=local
jboss:service=invoker,type=jrmp
jboss:service=invoker,type=http,target=Naming
jboss:service=invoker,type=pooled
jboss:service=invoker,type=http
jboss:service=invoker,type=unified
jboss:service=invoker,type=http,target=Naming,readonly=true

Pobranie informacji o atrybutach danego ziarna:

$ ./twiddle.sh get jboss:service=invoker,type=jrmp
Name=JRMPInvoker
ServerAddress=jboss1
RMIClientSocketFactory=null
StateString=Started
Backlog=200
State=3
RMIServerSocketFactory=null
RMIServerSocketFactoryBean=org.jboss.net.sockets.DefaultSocketFactory@ad093076[bindAddress=null]
RMIObjectPort=4444
EnableClassCaching=false
RMIClientSocketFactoryBean=null
SecurityDomain=null

Wyświetlenie drzewa JNDI:

$ ./twiddle.sh invoke jboss:service=JNDIView list true
<h1> Other components with java:comp namespace</h1>
<h2>java:comp namespace of the component jboss.j2ee:ear=eBikes.ear,jar=jboss-seam.jar,name=EjbSynchronizations,service=EJB3 :</h2>
<pre>
  +- EJBContext (class: javax.ejb.EJBContext)
  +- TransactionSynchronizationRegistry[link -> java:TransactionSynchronizationRegistry] (class: javax.naming.LinkRef)
  +- UserTransaction (class: org.jboss.ejb3.tx.UserTransactionImpl)
  +- env (class: org.jnp.interfaces.NamingContext)
  +- ORB[link -> java:/JBossCorbaORB] (class: javax.naming.LinkRef)
</pre>
<h2>java:comp namespace of the component jboss.j2ee:jar=Common.jar,name=InventoryDAOImpl,service=EJB3 :</h2>
<pre>
  +- EJBContext (class: javax.ejb.EJBContext)
....

Przykłady jak instalować aplikację przy użyciu twiddle.sh można znaleźć w tym wpisie: Zarządzanie instalacją aplikacji w JBoss AS.

Źródła