ããã¯ããªã«ãããããŠæžãããã®ïŒ
WildFly 32.0.0.FinalããªãªãŒã¹ãããŸããã
ã¡ãã£ãšæ°ã«ãªããã®ãšããŠWildFly Glowãšãããã®ãããã®ã§ããã
ãã®åã«ãWildFly Maven Pluginã§Bootable JARãäœããããã«ãªã£ããããªã®ã§ãã¡ãã確èªããŠã¿ãŸãã
WildFly Maven Pluginã§Bootable JARãäœæãã
WildFly Maven Pluginã§Bootable JARãäœããããã«ãªã£ãããšãæžãããŠããããã°ãšã³ããªãŒã¯ãã¡ãã
What's new in WildFly provisioning
ãããŸã§ã¯Bootable JARã¯ãWildFly Jar Maven Pluginã䜿ã£ãŠäœããã®ã§ããã
GitHub - wildfly-extras/wildfly-jar-maven-plugin: WildFly Bootable JAR
WildFly Maven Pluginã®wildfly:package
ãŽãŒã«ã®ããŒãžãèŠããšãbootableJar
ïŒbootable-jar
ã§ãå¯ïŒãšãããã©ã¡ãŒã¿ãŒã
è¿œå ãããŠããŸãã
WildFly Maven Plugin – wildfly:package
ãã¡ããtrue
ã«èšå®ãããšãwildfly:package
æã«Bootable JARãäœæããŠãããŸãã
ä»ã®ãŽãŒã«ã§ã¯ç¡å¹ãªèšå®ã§ãã
ãŸããäœæãããBootable JARã®ããã©ã«ãã®ãã¡ã€ã«åã¯ãããžã§ã¯ãã®ã¢ãŒãã£ãã¡ã¯ãåã«é¢ä¿ãªãserver-bootable.jar
ã§ã
å€æŽããå Žåã¯bootableJarName
ïŒbootable-jar-name
ã§ãå¯ïŒã§èšå®ããå¿
èŠããããŸãã
wildfly:start-jar
ãšãããŽãŒã«ãè¿œå ãããŠããŸãã
WildFly Maven Plugin – wildfly:start-jar
ããã¯ãBootable JARãèµ·åããã ãã®ã³ãã³ãã§ãã
ããã±ãŒãžã³ã°ããŠBootable JARã®äœæãŸã§è¡ã£ãŠãããããã§ã¯ãããŸããã
Bootable JARãäœæããã«å®è¡ããŠã
$ mvn wildfly:start-jar
JARãã¡ã€ã«ããªããšæãããŸãã
[ERROR] Failed to execute goal org.wildfly.plugins:wildfly-maven-plugin:5.0.0.Final:start-jar (default-cli) on project wildfly-maven-plugin-bootable-jar-example: Bootable JAR file '/path/to/target/server-bootable.jar' doesn't exist. -> [Help 1]
éåžžã¯java -jar
ã³ãã³ãã§èµ·åããããšãå€ããšæãã®ã§ãåèãŸã§ã«ã
ã¡ãªã¿ã«ãwildfly:start-jar
ãŽãŒã«ã¯ãã¡ãã®ããŒãžã«ã¯èŒã£ãŠããŸãã
WildFly Maven Plugin – Plugin Documentation
ãªãããã¡ãã®ããŒãžã«ã¯èŒã£ãŠããŸããâŠã
WildFly Maven Plugin – WildFly Maven Plugin (wildfly-maven-plugin)
ã§ã¯ãç°¡åã«è©ŠããŠã¿ãŸãããã
ç°å¢
ä»åã®ç°å¢ã¯ãã¡ãã
$ java --version openjdk 21.0.2 2024-01-16 OpenJDK Runtime Environment (build 21.0.2+13-Ubuntu-122.04.1) OpenJDK 64-Bit Server VM (build 21.0.2+13-Ubuntu-122.04.1, mixed mode, sharing) $ mvn --version Apache Maven 3.9.6 (bc0240f3c744dd6b6ec2920b3cd08dcc295161ae) Maven home: $HOME/.sdkman/candidates/maven/current Java version: 21.0.2, vendor: Private Build, runtime: /usr/lib/jvm/java-21-openjdk-amd64 Default locale: ja_JP, platform encoding: UTF-8 OS name: "linux", version: "5.15.0-105-generic", arch: "amd64", family: "unix"
ã¢ããªã±ãŒã·ã§ã³ãäœæãã
ããã§ã¯ãç°¡åãªãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ãäœæããŸããJakarta RESTful Web ServicesïŒJAX-RSïŒã䜿ãã ãã®ãã®ã«ããŸãããã
MavenäŸåé¢ä¿ãªã©ã
<properties> <maven.compiler.release>21</maven.compiler.release> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> </properties> <dependencies> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-web-api</artifactId> <version>10.0.0</version> <scope>provided</scope> </dependency> </dependencies> <build> <finalName>ROOT</finalName> <plugins> <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>5.0.0.Final</version> <!-- åŸã§ --> </plugin> </plugins> </build> </project>
packaging
ã¯war
ã§ãã
JAX-RSã®æå¹åã
src/main/java/org/littlewings/wildfly/RestApplication.java
package org.littlewings.wildfly; import jakarta.ws.rs.ApplicationPath; import jakarta.ws.rs.core.Application; @ApplicationPath("") public class RestApplication extends Application { }
ãªãœãŒã¹ã¯ã©ã¹ã
src/main/java/org/littlewings/wildfly/HelloResource.java
package org.littlewings.wildfly; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; @Path("hello") public class HelloResource { @GET @Produces(MediaType.TEXT_PLAIN) public String message() { return "Hello World!!"; } }
ããã§æºåã¯å®äºã§ãã
WildFly Maven Pluginã§Bootable JARãäœæãã
ã§ã¯ãWildFly Maven Pluginã§Bootable JARãäœæããŸãã
ãŸãã¯ä»¥äžã§èšå®ã
<plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-maven-plugin</artifactId> <version>5.0.0.Final</version> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> <configuration> <!-- wildfly:dev ã䜿ããªããfinalNameã§æå®ããæ¹ããããã --> <!-- <runtime-name>ROOT.war</runtime-name> --> <bootable-jar>true</bootable-jar> <feature-pack> <location>wildfly@maven(org.jboss.universe:community-universe)#32.0.0.Final</location> </feature-pack> </feature-packs> </configuration> </plugin>
package
ãŽãŒã«å®è¡æã«wildfly:package
ãŽãŒã«ãåäœããããã«èšå®ã
<executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions>
ãããªãè±ç·ããŸãããBootable JARäœææïŒãšãããããããžã§ãã³ã°æïŒã®ãããã€åãruntime-name
ã§å€ããããã®ã§ãã
<!-- wildfly:dev ã䜿ããªããfinalNameã§æå®ããæ¹ããããã --> <!-- <runtime-name>ROOT.war</runtime-name> -->
ã³ã¡ã³ãã§æžããŠããããã«ããã®èšå®ã¯wildfly:dev
ã¯è¿œåŸããªãã®ã§ã©ã¡ããåãã³ã³ããã¹ããã¹ã«ãããã®ãªãfinalName
ã§
èšå®ããæ¹ãç¡é£ã§ãããã
<build> <finalName>ROOT</finalName>
ããã±ãŒãžã³ã°ããŸãã
$ mvn package
ã§ããŸãããããã©ã«ãã®ãã¡ã€ã«åã¯server-bootable.jar
ã§ãã
[INFO] Bootable JAR packaging DONE. To run the server: java -jar /path/to/target/server-bootable.jar
èµ·åããŠã¿ãŸãã
$ java -jar target/server-bootable.jar
確èªã
$ curl localhost:8080/hello Hello World!!
OKã§ããã
ãšããã§ãBootable JARã®ãµã€ãºã237MBãšãã£ãããªãµã€ãºã§ãâŠã
$ ll -h target/server-bootable.jar -rw-rw-r-- 1 xxxxx xxxxx 237M 4æ 28 19:34 target/server-bootable.jar
WildFly Glowã䜿ããšå¿ èŠãªWildFlyã¢ãžã¥ãŒã«ãéžãã§ãããããã§ãããä»åã¯èªåã§æå®ããŸãã
ããããŸããã
<configuration> <bootable-jar>true</bootable-jar> <feature-packs> <feature-pack> <location>wildfly@maven(org.jboss.universe:community-universe)#32.0.0.Final</location> </feature-pack> </feature-packs> <layers> <layer>jaxrs-server</layer> </layers> </configuration>
ãã§ã«ããããžã§ãã³ã°æžã¿ã®ãã£ã¬ã¯ããªããããšå床äœæããŠãããªãã®ã§ã1床mvn clean
ããŠãããŸãã
$ mvn clean
ãããã¯ä»¥äžã®èšå®ãè¿œå ãããšãwildfly:package
æã«1床ããããžã§ãã³ã°æžã¿ã®ãã£ã¬ã¯ããªãåé€ããŠå®è¡ããŠãããããã«ãªããŸãã
<overwrite-provisioned-server>true</overwrite-provisioned-server>
ããã±ãŒãžã³ã°ã
$ mvn package
ã ãã¶å°ãããªããŸãããã
$ ll -h target/server-bootable.jar -rw-rw-r-- 1 xxxxx xxxxx 111M 4æ 28 19:40 target/server-bootable.jar
æåŸã¯bootable-jar-name
ãæå®ããŠBootable JARãã¡ã€ã«åãå€æŽããŠã¿ãŸãã
<configuration> <!-- wildfly:dev ã䜿ããªããfinalNameã§æå®ããæ¹ããããã --> <!-- <runtime-name>ROOT.war</runtime-name> --> <bootable-jar>true</bootable-jar> <!-- æå®ããªãå Žå㯠server-bootable.jar ã«ãªã --> <bootable-jar-name>${project.artifactId}-${project.version}-bootable.jar</bootable-jar-name> <overwrite-provisioned-server>true</overwrite-provisioned-server> <feature-packs> <feature-pack> <location>wildfly@maven(org.jboss.universe:community-universe)#32.0.0.Final</location> </feature-pack> </feature-packs> <layers> <layer>jaxrs-server</layer> </layers> </configuration>
ããã§ããã±ãŒãžã³ã°ãããšãæå®ã®ãã¡ã€ã«åã§Bootable JARãäœæããŠãããŸãã
[INFO] Bootable JAR packaging DONE. To run the server: java -jar /path/to/target/artifact-name-0.0.1-SNAPSHOT-bootable.jar
ãªããå®å
šã«è足ã§ããWildFly JAR Maven Pluginãšéã£ãŠjboss-maven-dist
ã䜿ããªãã®ã§ãéçºæã«JARãã¡ã€ã«ããã£ãšå°ãã
ããããšã¯ã§ããªãããã§ãâŠã
ä»åã¯ãããªãšããã§ã
ãããã«
WildFly Maven Pluginã§Bootable JARãäœæã§ããããã«ãªã£ããšããããšã§ãå°ãè©ŠããŠã¿ãŸããã
ãã®ãã¡WildFly Glowãçµã¿åãããŠäœ¿ã£ãŠã¿ãããšæããŸãããããã¯ãŸããã®ãã¡ãšããããšã§ã