Использование драйвера jdbc postgresql с управляемым контейнером wildfly-arquillian-container

Мы используем arquillian со встроенным wildfly[1] для запуска интеграционных тестов. До сих пор мы использовали H2 в памяти БД. По ряду причин нам нужно переключиться на postgres также в тестах, чтобы лучше охватить реальную ситуацию (в производстве мы используем postgres). В настоящее время я получаю эту ошибку при развертывании моего test.war:

13:57:30,981 ERROR [org.jboss.as.controller.management-operation] (ServerService Thread Pool -- 33) WFLYCTL0013: Operation ("add") failed - address: ([
    ("subsystem" => "datasources"),
    ("jdbc-driver" => "postgresql")
]) - failure description: "WFLYJCA0041: Failed to load module for driver [org.postgresql.jdbc]"

что понятно, потому что драйвер недоступен.

Но как мне принести встроенную wildfly для поддержки драйвера jdbc postgres? Я привык копировать драйвер в каталог модулей установленного пакета wildfly... но здесь это невозможно... И кажется, что нет никакой зависимости от maven, которую я мог бы просто добавить, которая добавляет драйвер jdbc...

Кстати, добавьте конец, моя цель - использовать адаптированный standalone.xml, который определяет источник данных (а не файл xxx-ds.xml), так как мне нравится настраивать и другие параметры.

[1]

    <dependency>
        <groupId>org.wildfly.arquillian</groupId>
        <artifactId>wildfly-arquillian-container-managed</artifactId>
    </dependency>

1 ответ

Решение

Мне удается решить проблему, скопировав standalone.xml, драйвер jdbc и module.xml в извлеченный wildfly.

Это мои первые шаги с использованием maven и arquillian со встроенной wildfly. Любые предложения по улучшению приветствуются.

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.6</version>
            <executions>                    
                <execution>
                    <id>unpack</id>
                    <phase>process-test-classes</phase>
                    <goals>
                        <goal>unpack</goal>
                    </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.wildfly</groupId>
                                <artifactId>wildfly-dist</artifactId>
                                <version>10.1.0.Final</version>
                                <type>zip</type>
                                <overWrite>false</overWrite>
                                <outputDirectory>target</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>                    
                <execution>
                    <id>copy-db-driver</id>
                    <phase>process-test-classes</phase>
                    <goals>
                        <goal>copy</goal> 
                   </goals>
                    <configuration>
                        <artifactItems>
                            <artifactItem>
                                <groupId>org.postgresql</groupId>
                                <artifactId>postgresql</artifactId>
                                <version>9.4.1212</version>
                                <outputDirectory>target/wildfly-10.1.0.Final/modules/system/layers/base/org/postgresql/main</outputDirectory>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>                    
            </executions>
        </plugin>            
        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.0.2</version>
            <executions>
                <execution>
                    <id>copy-standalone-config</id>
                        <phase>process-test-classes</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/wildfly-10.1.0.Final/standalone/configuration</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/test/resources</directory>
                                    <includes>
                                        <include>standalone.xml</include>
                                    </includes>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                </execution>
                <execution>
                    <id>copy-module-xml</id>
                    <phase>process-test-classes</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/wildfly-10.1.0.Final/modules/system/layers/base/org/postgresql/main</outputDirectory>
                        <resources>
                            <resource>
                                <directory>src/test/resources</directory>
                                <includes>
                                    <include>module.xml</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>            
        ...
    </plugins>
</build>
Другие вопросы по тегам