练习 - 访问 JBoss EAP 管理工具和应用程序日志

已完成

在本练习中,你将访问 JBoss 管理工具并流式传输应用程序日志。

设置环境变量

在本练习中,需要之前练习中的一些环境变量。 如果使用的是同一 Bash 窗口,这些变量仍应存在。 如果变量不再可用,请使用以下命令重新创建它们。 请务必将 <...> 占位符替换为你自己的值,并使用之前使用的相同值。

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

创建 TCP 隧道

若要访问远程服务器,请使用以下命令在远程服务器和本地计算机之间创建 TCP 隧道:

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

输出包含 TCP 隧道端口号、用户名和密码。 请务必保存此信息以供以后使用。

使用 SSH 和 TCP 隧道登录

若要使用 SSH 和 TCP 隧道登录到服务器,请执行以下步骤:

  1. 打开新的命令终端。

  2. 使用以下命令登录到服务器。 请务必将 <port-number> 占位符替换为在上一部分中检索的端口号。

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

    小窍门

    如果要访问 JBoss EAP 管理员 Web 控制台,请 -L 9990:localhost:9990 指定该选项。 然后,在 . 处 http://localhost:9990/console访问 JBoss Web 控制台。 如果不需要登录到 JBoss Web 控制台,可以删除该 -L 选项。

    以下输出是典型的:

    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.
    

运行 JBoss CLI 工具

登录到远程服务器后,可以使用以下步骤运行 JBoss EAP 管理员 CLI 工具 /opt/eap/bin/jboss-cli.sh

  1. 使用以下命令连接到 JBoss EAP:

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

    以下输出是典型的:

    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. 连接到 JBoss EAP 服务器后,请在 JBoss 提示符处使用以下命令获取 JBoss 服务器信息:

    product-info
    

    以下输出是典型的:

    {
        "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. 使用以下命令列出所有已部署的应用程序:

    ls deployment
    

    以下输出是典型的:

    ROOT.war
    
  4. 使用以下命令测试数据库连接:

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

    以下输出是典型的:

    {
        "outcome" => "success",
        "result" => [true]
    }
    
  5. 使用以下命令退出 JBoss EAP CLI:

    exit
    

访问 JBoss EAP 管理员 Web 控制台

接下来,使用以下步骤访问 JBoss 管理员 Web 控制台:

  1. 使用以下命令创建用于身份验证的管理员用户和密码:

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

    以下输出是典型的:

    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. 使用 http://127.0.0.1:9990/console 从本地环境的 Web 浏览器访问 Web 控制台。

  3. 在身份验证对话框中,使用以前创建的用户名和密码登录。

    管理控制台的身份验证对话框的屏幕截图。

    登录到 Web 控制台后,将显示以下屏幕:

    管理控制台主页的屏幕截图。

  4. 通过选择 “配置>子系统>数据源和驱动程序>数据源”确认创建了数据源。

    管理控制台上数据源列表的屏幕截图。

  5. 还可以通过选择“运行时”><your-system>>“JAX-RS”><your-application>来确认应用程序的 RESTful 终结点。

    管理控制台上的 RESTful 终结点的屏幕截图。

    警告

    如果直接通过 JBoss CLI 命令或 Web 控制台访问远程服务器并添加或更新配置,则会在重启 Azure 应用服务实例后清除并删除配置。 若要保留配置,请使用启动脚本,例如上一单元中使用的 createMySQLDataSource.sh 脚本。

打开日志流

使用以下命令访问日志:

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

以下输出是典型的:

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]

练习摘要

在本单元中,你了解了如何在 Azure 应用服务上配置和部署 Jakarta EE 10 应用程序到 JBoss EAP。 然后,你在启动脚本中使用了一个 DataSource 对象将 MySQL 连接到 JBoss EAP。

你还了解了如何使用 TCP 隧道从 CLI 和图形用户界面(GUI)访问远程服务器。 最后,从本地计算机访问日志文件。