『わかりやすいJakarta EE ウェブシステム入門』では NetBeans + Payara Server + MySQL を使っていますが、VS Code + WildFly + PostgreSQL を使いたい事情があり、挑戦してみました。
前提
VS Code + WildFly で sample01 を実施済みとします。
sample21-01 を開く
C:\jet\projects\sampleProjects\sample21-01 フォルダーを VS Code で開きます。
docker-compose
以下の内容で docker-compose.yml を作成し、docker-compose up -d
します。
services:
db:
image: postgres
container_name: postgres-yokuwakaruee
environment:
POSTGRES_PASSWORD: app
ports:
- 5432:5432
VS Code への Docker プラグインの導入と Docker コンテナーの操作
簡単だったので省略。
pom.xml の変更
pom.xml に以下を書き加えます。
dependencies への追加
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>42.7.4</version>
</dependency>
plugins への追加
sample01 で実施した内容に加え、package フェイズで以下を実行するようにします。
- サーバーの起動
- JDBC ドライバーの追加
- データ ソース (コネクション プール) の追加
- サーバーの停止
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>4.2.2.Final</version>
<configuration>
<version>26.1.3.Final</version>
<javaHome>C:\path\to\jdk-11</javaHome>
<debug>true</debug>
</configuration>
<executions>
<!-- deployment preparation -->
<execution>
<id>start-server</id>
<phase>package</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<!-- deployment -->
<execution>
<id>deploy-postgresql</id>
<phase>package</phase>
<goals>
<goal>deploy-artifact</goal>
</goals>
<configuration>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<name>postgresql.jar</name>
</configuration>
</execution>
<!-- connection-pooling datasource -->
<execution>
<id>add-datasource</id>
<phase>package</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<address>subsystem=datasources,data-source=mydbpool</address>
<resources>
<resource>
<properties>
<jndi-name>java:/jdbc/mydb</jndi-name>
<connection-url>jdbc:postgresql://localhost/postgres</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver-name>postgresql.jar</driver-name>
<user-name>postgres</user-name>
<password>app</password>
</properties>
</resource>
</resources>
</configuration>
</execution>
<!-- shutdown before wildfly:dev -->
<execution>
<id>shutdown-server</id>
<phase>package</phase>
<goals>
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>
文字化け防止
sample01 で作成した jboss-web.xml を webapp\WEB-INF に配置します。
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<default-encoding>UTF-8</default-encoding>
</jboss-web>
実行
これで、Ctrl+Shift+P > Maven:Execute Commands... > Custom... > clean package wildfly:dev を実行すると、サーバーがダウンロードされ、http://localhost:8080/sample21-01/ にアクセスすると画面を確認することができます。
wildfly:dev の前に package を実行することがとても重要です。