私は、データベース管理を Liquibase に変換中です。こちらは順調に進んでいます。
次のステップとして、共通の環境、継続的インテグレーション スタイルに展開する前に、将来のすべての変更がテストされることを保証したいと思います。次の設定を使用してこれを実行しようとしています。
- EJB Web サービスを含む ear を構築する
maven-embedded-glassfish-plugin
統合前のテスト中にGlassfish 3の埋め込みインスタンスを起動するために 使用するmaven ohase- 開始目標の一部としてデータソースを作成する
- 展開ゴール中に耳を展開する
- まだ統合テスト前ですが、同じデータベース URL で liquibase:update を実行します。この場合、H2 ファイル データベース
- 次に、デプロイされたアプリケーションで SoapUI テストを実行します
しかし、ここまで来ると、アプリケーションはデータベース内のデータを見つけることができません。問題は、セットアップで何かを見逃したのか、それとも意図した目標を整理するためのより良い方法があるのかということです。
pom.xml、埋め込まれたGlassfish
<plugin>
<groupId>org.glassfish.embedded</groupId>
<artifactId>maven-embedded-glassfish-plugin</artifactId>
<version>4.0</version>
<configuration>
<ports>
<http-listener>9090</http-listener>
<https-listener>9191</https-listener>
</ports>
<goalPrefix>embedded-glassfish</goalPrefix>
<app>${project.build.directory}/school-application-${project.version}.ear</app>
<name>school-application</name>
<commands>
<command>create-jdbc-connection-pool --datasourceclassname=org.h2.jdbcx.JdbcDataSource --restype=javax.sql.DataSource --property URL=jdbc\:h2\:~/tmpLB\;AUTO_SERVER\=TRUE schoolDSPool</command>
<command>create-jdbc-resource --connectionpoolid schoolDSPool jdbc/schoolDS</command>
</commands>
</configuration>
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.176</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>start</goal>
<goal>admin</goal>
<goal>deploy</goal>
<goal>undeploy</goal>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
pom.xml、リキベース
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.1.1</version>
<dependencies>
<dependency>
<groupId>company.school</groupId>
<artifactId>school-db</artifactId>
<version>${project.version}</version>
<systemPath>../school-db/target</systemPath>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.3.176</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>integration-test</phase>
<configuration>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
<changeLogFile>db.changelog-master.xml</changeLogFile>
<driver>org.h2.Driver</driver>
<url>jdbc:h2:~/tmpLB;AUTO_SERVER=TRUE</url>
<logging>info</logging>
</configuration>
<goals>
<goal>update</goal>
</goals>
</execution>
</executions>
</plugin>
ターゲット テーブルにデータを挿入する変更ログに 1 つの変更セットがあります。
- 適切なユーザーを設定していますか?
- Glassfish と同じプロセスで Liquibase を実行し、
mem:
代わりにデータベースを使用する方法はありますか?
敬具、クリスチャン