【问题标题】:How to add the Oracle driver to Arquillian's managed Wildfly?如何将 Oracle 驱动程序添加到 Arquillian 的托管 Wildfly?
【发布时间】:2018-06-07 05:34:50
【问题描述】:

我正在使用 Arquillian 来测试我的代码的某些部分。为了使用物化视图运行特定测试,我不能依赖 H2,因此我必须将其更改为真正的 Oracle 数据库。

为此,我创建了一个运行 Oracle Database 11g XE 的小型 Docker 容器,并添加了一个用户“db”。然后我添加了一个 oracle-ds.xml,我也将它添加到我的 Arquillian 部署中。但它无法检测到 oracle 驱动:

引起:java.lang.Exception:{ "WFLYCTL0412: 未安装的所需服务:" => ["jboss.jdbc-driver.oracle"], "WFLYCTL0180: 缺少/不可用依赖项的服务" => ["jboss.data-source.\"jboss.naming.context.java.jboss.datasources.OracleTestDs\" 缺少 [jboss.jdbc-driver.oracle]"] }

在我的本地机器上,我手动添加了它,但它在 Arquillian 管理的 Wildfly 中不起作用 - 或者至少我不知道怎么做。

我试过直接加,还是不行:

PomEquippedResolveStage pomFile = Maven.resolver().loadPomFromFile("pom.xml");

WebArchive archive = ShrinkWrap.create(WebArchive.class)
    .addAsLibraries(pomFile.resolve("org.assertj:assertj-core").withTransitivity().asFile())
    .addAsLibraries(pomFile.resolve("com.oracle:ojdbc6").withTransitivity().asFile())
    // add many classes....
    .addAsResource("test-persistence.xml", "META-INF/persistence.xml")
    .addAsResource("import.sql")
    .addAsResource("log4j2.xml")
    .addAsManifestResource("oracle-ds.xml")
    .addAsWebInfResource(EmptyAsset.INSTANCE, "beans.xml");

这只是将 oracle 驱动程序添加到 war 文件中,但我的代码依赖于 Wildfly 容器中的驱动程序。有没有办法将其部署到 Arquillian 提供的 Wildfly?

【问题讨论】:

    标签: java oracle jakarta-ee jboss jboss-arquillian


    【解决方案1】:

    您可能想尝试替换

    .addAsManifestResource("oracle-ds.xml").addAsWebInfResource("oracle-ds.xml", "oracle-ds.xml")

    但这似乎无法解决您的问题。

    在我的一个 .pom 文件中,我有以下插件,它将 oracle 驱动程序复制到需要它的文件夹中(我相信 module.xmlojdbc6 都是必需的)。也许你可以从中推断来解决你的问题。

          <plugin>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>${maven-antrun-plugin}</version>
            <executions>
              <execution>
                <phase>process-test-classes</phase>
                <configuration>
                  <tasks>
                    <echo message="copy file from ${basedir}/target/test-classes/${test.standalone.xml}" />
                    <delete file="${basedir}/target/wildfly-${wildfly.version}/standalone/configuration/standalone.xml" />
                    <copy file="${basedir}/target/test-classes/${test.standalone.xml}" toFile="${basedir}/target/wildfly-${wildfly.version}/standalone/configuration/standalone.xml" />
                    <copy file="${basedir}/src/test/resources/module.xml" toFile="${basedir}/target/wildfly-${wildfly.version}/modules/system/layers/base/com/oracle/ojdbc6/main/module.xml" />
                    <copy file="${basedir}/src/test/resources/ojdbc6.jar" toFile="${basedir}/target/wildfly-${wildfly.version}/modules/system/layers/base/com/oracle/ojdbc6/main/ojdbc6.jar" />
                  </tasks>
                </configuration>
                <goals>
                  <goal>run</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
    

    【讨论】:

    • 正如您在我的问题中的错误消息中看到的,数据源已找到并已使用。但是司机不见了。所以我需要想办法添加oracle驱动。
    猜你喜欢
    • 2013-07-09
    • 1970-01-01
    • 2016-05-24
    • 2018-07-11
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多