8.9. 在 JBoss EAP OpenShift 平台上使用可引导 JAR


将应用打包为可引导 JAR 后,您可以在 JBoss EAP OpenShift 平台上运行应用。

注意
  • 要在 JBoss EAP OpenShift 平台上构建可引导 JAR 时使用自定义 Galleon 功能包和层,请参阅为 JBoss EAP 构建和使用自定义 Galleon 层
  • 使用 oc new-build 命令构建应用程序镜像时,请确保使用此 S2I 构建器镜像 jboss-eap-xp4-openjdk11-openshift:latest,而不是 jboss-eap74-openjdk11-openshift:latest
重要

在 OpenShift 上,您无法将 EAP Operator 自动事务恢复功能与可引导 JAR 搭配使用。计划在以后的 JBoss EAP XP 4.0.0 补丁版本中修复此技术限制。

先决条件

注意

流程中显示的示例指定以下属性:

  • ${bootable.jar.maven.plugin.version} 用于 Maven 插件版本。
  • ${jboss.xp.galleon.feature.pack.version} 用于 Galleon 功能软件包版本。

您必须在项目中设置这些属性。例如:

<properties>
    <bootable.jar.maven.plugin.version>6.1.2.Final-redhat-00001</bootable.jar.maven.plugin.version>
    <jboss.xp.galleon.feature.pack.version>4.0.0.GA-redhat-00002</jboss.xp.galleon.feature.pack.version>
</properties>
Copy to Clipboard Toggle word wrap

流程

  1. pom.xml 文件的 <build > 元素中添加以下内容。您必须指定任何 Maven 插件的最新版本,以及 org.jboss.eap:wildfly-galleon-pack Galleon 功能软件包的最新版本。例如:

    <plugins>
        <plugin>
            <groupId>org.wildfly.plugins</groupId>
            <artifactId>wildfly-jar-maven-plugin</artifactId>
            <version>${bootable.jar.maven.plugin.version}</version>
            <configuration>
                <feature-pack-location>org.jboss.eap:wildfly-galleon-pack:${jboss.xp.galleon.feature.pack.version}</feature-pack-location>
                <layers>
                    <layer>jaxrs-server</layer>
                    <layer>microprofile-platform</layer>
                </layers>
                <cloud/>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>package</goal>
                        </goals>
                    </execution>
                </executions>
        </plugin>
    </plugins>
    Copy to Clipboard Toggle word wrap
    注意

    您必须在插件配置的 < configuration> 元素中包含 <cloud /> 元素,因此 JBoss EAP Maven JAR 插件可以识别您选择的 OpenShift 平台。

  2. 打包应用程序:

    $ mvn package
    Copy to Clipboard Toggle word wrap
  3. 使用 oc login 命令登录到您的 OpenShift 实例。
  4. 在 OpenShift 中创建一个新项目。例如:

    $ oc new-project bootable-jar-project
    Copy to Clipboard Toggle word wrap
  5. 输入以下 oc 命令来创建应用程序镜像:

    $ mkdir target/openshift && cp target/microprofile-config-bootable.jar target/openshift  
    1
    
    
    $ oc import-image ubi8/openjdk-11 --from=registry.redhat.io/ubi8/openjdk-11 --confirm 
    2
    
    
    $ oc new-build --strategy source --binary --image-stream openjdk-11 --name microprofile-config-app 
    3
    
    
    $ oc start-build microprofile-config-app --from-dir target/openshift 
    4
    Copy to Clipboard Toggle word wrap
    1
    在目标目录中创建 openshift 子目录。打包的应用程序被复制到创建的子目录中。
    2
    将最新的 OpenJDK 11 镜像流标签和镜像信息导入到 OpenShift 项目中。
    3
    基于 microprofile-config-app 目录和 OpenJDK 11 镜像流创建构建配置。
    4
    使用 target/openshift 子目录作为二进制输入来构建应用程序。
    注意

    OpenShift 将一组 CLI 脚本命令应用到可引导 JAR 配置文件,将其调整为云环境。您可以通过在 Maven 项目 / target 目录中 打开 bootable-jar-build-artifacts/generated-cli-script.txt 文件来访问此脚本。

  6. 验证:

    运行以下命令,查看可用的 OpenShift pod 列表并检查 pod 构建状态:

    $ oc get pods
    Copy to Clipboard Toggle word wrap

    验证构建的应用程序镜像:

    $ oc get is microprofile-config-app
    Copy to Clipboard Toggle word wrap

    输出显示了构建的应用镜像详细信息,如名称和镜像存储库、标签等。对于此流程中的示例,镜像流名称和标签输出显示 microprofile-config-app:latest

  7. 部署应用程序:

    $ oc new-app microprofile-config-app
    
    $ oc expose svc/microprofile-config-app
    Copy to Clipboard Toggle word wrap
    重要

    要为可引导 JAR 提供系统属性,您必须使用 JAVA_OPTS_APPEND 环境变量。以下示例演示了使用 JAVA_OPTS_APPEND 环境变量:

    $ oc new-app <_IMAGESTREAM_> -e JAVA_OPTS_APPEND="-Xlog:gc*:file=/tmp/gc.log:time -Dwildfly.statistics-enabled=true"
    Copy to Clipboard Toggle word wrap

    新建应用已创建并启动。应用程序配置作为新服务公开。

  8. 验证 :在终端中运行以下命令来测试应用程序的行为:

    $ curl http://$(oc get route microprofile-config-app --template='{{ .spec.host }}')/config/json
    Copy to Clipboard Toggle word wrap

    预期输出:

    {"result":"Hello jim"}
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat