Ćwiczenie — uzyskiwanie dostępu do narzędzi administracyjnych protokołu EAP JBoss i dzienników aplikacji

Ukończone

W tym ćwiczeniu uzyskujesz dostęp do narzędzi administracyjnych JBoss i przesyłasz strumieniowo dzienniki aplikacji.

Konfgurowanie zmiennych środowiskowych

W tym ćwiczeniu potrzebne są pewne zmienne środowiskowe z poprzednich ćwiczeń. Jeśli używasz tego samego okna Bash, te zmienne powinny nadal istnieć. Jeśli zmienne nie są już dostępne, użyj następujących poleceń, aby je ponownie utworzyć. Pamiętaj, aby zastąpić symbole zastępcze <...> własnymi wartościami i użyć tych samych wartości, których używałeś wcześniej.

export RESOURCE_GROUP_NAME=<resource-group>
export WEB_APP_NAME=<app-name>

Tworzenie tunelu TCP

Aby uzyskać dostęp do serwera zdalnego, utwórz tunel TCP między serwerem zdalnym i maszyną lokalną przy użyciu następującego polecenia:

az webapp create-remote-connection \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${WEB_APP_NAME}

Dane wyjściowe zawierają numer portu tunelu TCP, nazwę użytkownika i hasło. Pamiętaj, aby zapisać te informacje na bok do późniejszego użycia.

Logowanie przy użyciu protokołu SSH i tunelu TCP

Aby zalogować się do serwera przy użyciu protokołu SSH i tunelu TCP, wykonaj następujące kroki:

  1. Otwórz nowy terminal poleceń.

  2. Zaloguj się do serwera przy użyciu następujących poleceń. Pamiętaj, aby zastąpić <port-number> symbol zastępczy numerem portu pobranym w poprzedniej sekcji.

    export PORT_NUMBER=<port-number>
    ssh root@127.0.0.1 -L 9990:localhost:9990 -p $PORT_NUMBER
    

    Napiwek

    Jeśli chcesz uzyskać dostęp do konsoli sieci Web administracyjnej protokołu JBoss EAP, określ opcję -L 9990:localhost:9990. Następnie uzyskaj dostęp do konsoli sieci Web JBoss pod adresem http://localhost:9990/console. Jeśli nie musisz logować się do konsoli sieci Web JBoss, możesz usunąć -L tę opcję.

    Następujące dane wyjściowe są typowe:

    ssh root@127.0.0.1 -L 9990:localhost:9990 -p 65171
    root@127.0.0.1's password:
    Last login: Tue Feb 25 07:44:49 2025 from 169.254.129.2
       _|_|
     _|    _|  _|_|_|_|  _|    _|  _|  _|_|    _|_|
     _|_|_|_|      _|    _|    _|  _|_|      _|_|_|_|
     _|    _|    _|      _|    _|  _|        _|
     _|    _|  _|_|_|_|    _|_|_|  _|          _|_|_|
    
         J A V A   O N   A P P   S E R V I C E
    
    Documentation: https://aka.ms/appservice
    
    **NOTE**: No files or system changes outside of /home will persist beyond your application's current session. /home is your application's persistent storage and is shared across all the server instances.
    

Uruchom narzędzie interfejsu wiersza polecenia JBoss

Po zalogowaniu się do serwera zdalnego możesz uruchomić narzędzie interfejsu wiersza polecenia administratora JBoss EAP, /opt/eap/bin/jboss-cli.sh, wykonując następujące kroki:

  1. Połącz się z aplikacją JBoss EAP przy użyciu następującego polecenia:

    /opt/eap/bin/jboss-cli.sh --connect
    

    Następujące dane wyjściowe są typowe:

    OpenJDK 64-Bit Server VM warning: Options -Xverify:none and -noverify were deprecated in JDK 13 and will likely be removed in a future release.
    
  2. Po nawiązaniu połączenia z serwerem JBoss EAP użyj następującego polecenia w wierszu polecenia JBoss, aby uzyskać informacje o serwerze JBoss:

    product-info
    

    Następujące dane wyjściowe są typowe:

    {
        "outcome" => "success",
        "result" => [{"summary" => {
            "host-name" => "jakartaee-aaaabbbb",
            "instance-identifier" => "aaaaaaaa-1111-bbbb-2222-cccccccccccc",
            "product-name" => "JBoss EAP",
            "product-version" => "8.0 Update 4.1",
            "product-community-identifier" => "Product",
            "product-home" => "/opt/eap",
            "standalone-or-domain-identifier" => "STANDALONE_SERVER",
            "host-operating-system" => "Ubuntu 22.04.5 LTS",
            "host-cpu" => {
                "host-cpu-arch" => "amd64",
                "host-core-count" => 2
            },
            "jvm" => {
                "name" => "OpenJDK 64-Bit Server VM",
                "java-version" => "17",
                "jvm-version" => "17.0.13",
                "jvm-vendor" => "Microsoft",
                "java-home" => "/usr/lib/jvm/msopenjdk-17-amd64"
            }
        }}]
    }
    
  3. Użyj następującego polecenia, aby wyświetlić listę wszystkich wdrożonych aplikacji:

    ls deployment
    

    Następujące dane wyjściowe są typowe:

    ROOT.war
    
  4. Przetestuj połączenie z bazą danych przy użyciu następującego polecenia:

    /subsystem=datasources/data-source="JPAWorldDataSourceDS":test-connection-in-pool
    

    Następujące dane wyjściowe są typowe:

    {
        "outcome" => "success",
        "result" => [true]
    }
    
  5. Aby wyjść z interfejsu wiersza polecenia JBoss EAP, użyj następującego polecenia:

    exit
    

Uzyskaj dostęp do konsoli administracyjnej JBoss EAP.

Następnie uzyskaj dostęp do konsoli sieci Web administratora JBoss, wykonując następujące kroki:

  1. Utwórz użytkownika administratora i hasło do uwierzytelniania przy użyciu następującego polecenia:

    /opt/eap/bin/add-user.sh -u admin -p admin -r ManagementRealm
    

    Następujące dane wyjściowe są typowe:

    Picked up JAVA_TOOL_OPTIONS: -Xmx5480M -Djava.net.preferIPv4Stack=true
    Updated user 'admin' to file '/opt/eap/standalone/configuration/mgmt-users.properties'
    Updated user 'admin' to file '/opt/eap/domain/configuration/mgmt-users.properties'
    
  2. Uzyskaj dostęp do konsoli sieci Web z przeglądarki internetowej w środowisku lokalnym przy użyciu polecenia http://127.0.0.1:9990/console.

  3. W oknie dialogowym uwierzytelniania zaloguj się przy użyciu wcześniej utworzonej nazwy użytkownika i hasła.

    Zrzut ekranu przedstawiający okno dialogowe uwierzytelniania konsoli administracyjnej.

    Po zalogowaniu się do konsoli sieci Web zostanie wyświetlony następujący ekran:

    Zrzut ekranu przedstawiający stronę główną konsoli administracyjnej.

  4. Upewnij się, że utworzyłeś źródło danych, wybierając Konfiguracja>Podsystemy>Źródła danych i sterowniki>Źródła danych.

    Zrzut ekranu przedstawiający listę źródeł danych w konsoli administracyjnej.

  5. Możesz również potwierdzić punkty końcowe RESTful swojej aplikacji, wybierając Runtime><>>.

    Zrzut ekranu przedstawiający punkty końcowe RESTful w konsoli administracyjnej.

    Ostrzeżenie

    Jeśli bezpośrednio uzyskujesz dostęp do zdalnego serwera za pomocą polecenia JBoss CLI lub konsoli internetowej i dodasz lub zaktualizujesz konfigurację, zostanie ona wyczyszczona i usunięta po ponownym uruchomieniu instancji usługi Azure App Service. Aby utrwały konfigurację, użyj skryptu uruchamiania, takiego jak skrypt createMySQLDataSource.sh używany w poprzedniej lekcji.

Otwórz strumień dziennika

Uzyskaj dostęp do dzienników przy użyciu następującego polecenia:

az webapp log tail \
    --resource-group ${RESOURCE_GROUP_NAME} \
    --name ${WEB_APP_NAME}

Następujące dane wyjściowe są typowe:

2025-02-25T06:58:11.5107300Z Waiting for main process to exit. GLOBAL_PID_MAIN=123
2025-02-25T06:58:11.5109525Z Waiting for GLOBAL_PID_MAIN == 123
2025-02-25T06:58:12.7891598Z 2025-02-25 06:58:12,786 WARN  [org.apache.activemq.artemis.core.server.impl.FileLockNodeManager] (Thread-2 (ActiveMQ-scheduled-threads)) Lost the lock according to the monitor, notifying listeners
2025-02-25T06:58:14.3783443Z 2025-02-25 06:58:14,377 INFO  [org.jboss.as.jpa] (MSC service thread 1-2) WFLYJPA0002: Read persistence.xml for JPAWorldDatasourcePU
2025-02-25T06:58:14.7548991Z 2025-02-25 06:58:14,752 INFO  [org.jipijapa] (MSC service thread 1-3) JIPIORMV6020260: Second level cache enabled for ROOT.war#JPAWorldDatasourcePU
2025-02-25T06:58:14.7971763Z 2025-02-25 06:58:14,796 WARN  [org.apache.activemq.artemis.core.server.impl.FileLockNodeManager] (Thread-2 (ActiveMQ-scheduled-threads)) Lost the lock according to the monitor, notifying listeners
2025-02-25T06:58:14.9371057Z 2025-02-25 06:58:14,924 INFO  [org.jboss.weld.deployer] (MSC service thread 1-4) WFLYWELD0003: Processing weld deployment ROOT.war
2025-02-25T06:58:15.2875956Z 2025-02-25 06:58:15,280 INFO  [org.hibernate.validator.internal.util.Version] (MSC service thread 1-4) HV000001: Hibernate Validator 8.0.1.Final-redhat-00001
2025-02-25T06:58:16.0075988Z 2025-02-25 06:58:16,003 INFO  [org.infinispan.CONTAINER] (ServerService Thread Pool -- 78) ISPN000556: Starting user marshaller 'org.wildfly.clustering.infinispan.marshalling.jboss.JBossMarshaller'
2025-02-25T06:58:16.0534913Z 2025-02-25 06:58:16,048 INFO  [org.jipijapa] (MSC service thread 1-1) JIPIORMV6020260: Second level cache enabled for ROOT.war#JPAWorldDatasourcePU
2025-02-25T06:58:16.1970192Z 2025-02-25 06:58:16,192 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-1) WFLYJCA0005: Deploying non-JDBC-compliant driver class com.mysql.cj.jdbc.Driver (version 9.2)
2025-02-25T06:58:16.2695781Z 2025-02-25 06:58:16,265 INFO  [org.jboss.weld.Version] (MSC service thread 1-1) WELD-000900: 5.1.2 (redhat)
2025-02-25T06:58:16.4228682Z 2025-02-25 06:58:16,421 INFO  [org.jboss.as.connector.deployers.jdbc] (MSC service thread 1-3) WFLYJCA0018: Started Driver service with driver-name = ROOT.war_com.mysql.cj.jdbc.Driver_9_2
2025-02-25T06:58:16.4261069Z 2025-02-25 06:58:16,425 INFO  [org.jboss.as.connector.subsystems.datasources.AbstractDataSourceService$AS7DataSourceDeployer] (MSC service thread 1-3) IJ020018: Enabling <validate-on-match> for java:jboss/datasources/JPAWorldDataSource
2025-02-25T06:58:16.4349571Z 2025-02-25 06:58:16,428 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) WFLYJCA0001: Bound data source [java:jboss/datasources/JPAWorldDataSource]
2025-02-25T06:58:16.7892296Z 2025-02-25 06:58:16,787 INFO  [org.jboss.as.jpa] (ServerService Thread Pool -- 78) WFLYJPA0010: Starting Persistence Unit (phase 1 of 2) Service 'ROOT.war#JPAWorldDatasourcePU'
2025-02-25T06:58:16.8070373Z 2025-02-25 06:58:16,805 INFO  [org.hibernate.jpa.internal.util.LogHelper] (ServerService Thread Pool -- 78) HHH000204: Processing PersistenceUnitInfo [name: JPAWorldDatasourcePU]

Podsumowanie ćwiczenia

W tej lekcji przedstawiono sposób konfigurowania i wdrażania aplikacji Jakarta EE 10 w aplikacji JBoss EAP w usłudze Azure App Service. Następnie użyto obiektu DataSource do łączenia programu MySQL z aplikacją JBoss EAP w skrypcie uruchamiania.

Przedstawiono również sposób uzyskiwania dostępu do serwera zdalnego zarówno z interfejsu wiersza polecenia, jak i graficznego interfejsu użytkownika (GUI) przy użyciu tunelu TCP. Na koniec uzyskujesz dostęp do pliku dziennika z komputera lokalnego.