如何在没有 openshift CLI 的情况下为 WildFly 可启动 JAR 定义数据源属性?

How to define datasource properties for WildFly bootable JAR without openshift CLI?

所以通常您可以使用 standalone.xml 来执行此操作,但是 wildfly bootable JAR 似乎没有 standalone.xml,因为它都在一个 JAR 中。

JBoss 提供的示例假设您只会出于某种原因使用 OpenShift,并使用一些神秘的 OpenShift CLI 命令(如下),以某种方式在正确的位置创建正确的文件。 https://github.com/wildfly-extras/wildfly-jar-maven-plugin/tree/4.0.0.Final/examples/postgresql

oc new-app --name database-server \
  --env POSTGRESQL_USER=admin \
  --env POSTGRESQL_PASSWORD=admin \
  --env POSTGRESQL_DATABASE=sampledb \
  postgresql

但是,没有使用该命令创建的配置文件(或者他们没有签入),文档也没有说明如何对非 OpenShift 项目执行相同的操作。

正在尝试查找有关如何为非 OpenShift 部署配置 (postgres) 数据源的任何信息。

我通过一些实验自行解决了这个问题。关于可启动 jar 的 WildFly 文档仍然非常少,并且缺乏很多需要大量猜测/试验的细节。

虽然有一个覆盖层允许您通过环境变量指定数据库信息,但这有点老套,并且不允许您定义多个数据源,也不能指定 JNDI 名称。相反,我使用了一个 CLI 脚本,它被输入到 jar 构建器插件中。

datasource.cli

data-source add --name=<name> --jndi-name=java:jboss/datasources/<schema> --driver-name=postgresql --connection-url=jdbc:postgresql://localhost:5432/<db> --user-name=<user> --password=<pass>

确保为占位符 使用您自己的值,并在需要时更换主机名/端口。

pom.xml(片段)

<configuration>
    <cli-sessions>
        <cli-session>
            <script-files>
                <script>scripts/datasource.cli</script>
            </script-files>
            <resolve-expressions>true</resolve-expressions>
        </cli-session>
    </cli-sessions>
    <feature-packs>
        <feature-pack>
            <location>wildfly@maven(org.jboss.universe:community-universe)#23.0.0.Final</location>
        </feature-pack>
        <feature-pack>
            <groupId>org.wildfly</groupId>
            <artifactId>wildfly-datasources-galleon-pack</artifactId>
            <version>1.2.2.Final</version>
        </feature-pack>
    </feature-packs>
    <layers>
        <layer>jaxrs-server</layer>
        <layer>postgresql-driver</layer>
    </layers>
</configuration>

上述XML配置中,注意事项为