Как добавить драйвер Oracle к управляемому Аркиллианом Wildfly? - PullRequest
0 голосов
/ 07 июня 2018

Я использую Arquillian для тестирования некоторых частей моего кода.Чтобы запускать определенные тесты с использованием материализованных представлений, я не могу полагаться на H2, поэтому мне нужно изменить его на настоящую базу данных Oracle.

Для этого я создал небольшой контейнер Docker под управлением Oracle Database 11g XE, добавив пользователя«дб».Затем я добавил oracle-ds.xml , который я также добавил в свое развертывание Arquillian.Но он не может обнаружить драйвер оракула:

Причина: java.lang.Exception: {"WFLYCTL0412: Обязательные службы, которые не установлены:" => ["jboss.jdbc-driver.oracle "]," WFLYCTL0180: Службы с отсутствующими / недоступными зависимостями "=> [" jboss.data-source. \ "jboss.naming.context.java.jboss.datasources.OracleTestDs \" отсутствует [jboss.jdbc-driver.oracle] "]}

На своей локальной машине я добавил ее вручную, но она не будет работать в управляемой Аркиллианом 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");

Это просто добавляет драйвер оракула в файл war, но мой код опирается на драйвер вКонтейнер Wildfly.Есть ли способ развернуть его на Wildfly через Arquillian?

1 Ответ

0 голосов
/ 07 июня 2018

Возможно, вы захотите попробовать заменить

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

, но, похоже, это не решает вашу проблему.

В одном из моих.Файлы pom, у меня есть следующий плагин, который копирует драйвер оракула в папку, где он необходим (я считаю, что необходимы и module.xml, и ojdbc6).Возможно, вы можете сделать вывод из этого, чтобы решить вашу проблему.

      <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>
...