ããã¯ããªã«ãããããŠæžãããã®ïŒ
WildFly Bootable JARãšãããã®ã䟿å©ããã ã£ãã®ã§ãã¡ãã£ãšè©ŠããŠã¿ãããšã«ããŸããã
WildFly Bootable JARãšã¯ïŒ
WildFly Bootable JARãšã¯WildFly Bootable JAR Maven Pluginã䜿ã£ãŠäœæãããå®è¡å¯èœJARãã¡ã€ã«ïŒWildFly Bootable JARïŒã
äœãä»çµã¿ã§ãã
GitHub - wildfly-extras/wildfly-jar-maven-plugin: WildFly Bootable JAR
WildFly Bootable JAR is final!
åçŽåããŠèšããšãWARãªã©ã®ã¢ããªã±ãŒã·ã§ã³ã«WildFlyã远å ããŠãWildFlyãå«ããŠå®è¡å¯èœãªJARãã¡ã€ã«ã«ãã
ä»çµã¿ã®ããã§ãã
Spring Bootã¿ããã§ããã
WildFly Bootable JAR Maven Plugiinã䜿ã£ãŠäœæããWildFly Bootable JARã¯ãéåžžã®WildFlyãšåæ§ã«åäœããããã§ãã
WildFly CLIã䜿ã£ãŠæäœã§ããããšãã§ãããšãã
å¶éäºé ã¯ã以äžã ããã§ãã
- ã·ã£ããããŠã³äžã®ãµãŒããŒã®åèµ·åã¯äžå¯
- å®è¡äžã®å€æŽïŒWildFly CLIã§ã®æŽæ°ïŒã¯ä¿æãããããµãŒããŒãçµäºãããšãã®å€æŽã倱ããã
- ãµãŒããŒã管çè ã¢ãŒãã§èµ·åããããšã¯ã§ããªã
ããã¥ã¡ã³ãã¯ããã¡ãã§ãã
WildFly Bootable JAR Documentation
WildFlyåŽã®ããã¥ã¡ã³ãã«ããèšèŒããããŸãã
ãããããWildFlyã®ããã¥ã¡ã³ãã®ããããããã©ããŸããã
ç»å Žããã®ã¯ãWildFly 20ããã®ããã§ãã
ãšããã§ãããæžããšQuarkusãããã®ã§ã¯ïŒãšãæã£ããããã®ã§ãããQuarkusã¯çŽæ¥ã¯WildFlyã®ä»£ããã«ã¯ãªããªãã®ã§
ãããŸã§Jakarta EEã䜿çšããã¢ããªã±ãŒã·ã§ã³ãå®è¡å¯èœJARãšãããå Žåã¯ããã¡ãã®ä»çµã¿ã䜿ãã®ãããã®ã§ããããã
ã§ããããšããããå°ãïŒ
WildFly Bootable JAR Maven Pluginã䜿ã£ãŠã§ããããšããããå°ãæžããŠã¿ãŸãããã
- Galleon layerã䜿ã£ãŠãã³ã³ããŒãã³ããã«ã¹ã¿ãã€ãºãã
- WildFlyãµãŒããŒãšããŠçµã¿èŸŒãã¬ã€ã€ãŒãéžæã§ãããµãŒããŒã®æ§æã®ã«ã¹ã¿ãã€ãºããããããªã³ãã®åæžãªã©ãå¯èœ
- Hollow Bootable JARãäœæã§ãã
- ãããã€å¯Ÿè±¡ãå«ãŸãªããBootable JARãäœæå¯èœ
- ãããã€å¯Ÿè±¡ã®WARãã¡ã€ã«ãªã©ã¯ãå®è¡æã«æå®ã§ãã
- ãµãŒããŒã®æ§æãå¯èœ
- ããã±ãŒãžã³ã°äžã«ãWildFly CLIãå®è¡ãã
- OpenShiftïŒKubernetesåãã«æ§æãã
- å®è¡äžã«ã倿Žå¯èœ
- ãµãŒããŒã忢ãããšã倿Žã¯å€±ããã
- éçºã¢ãŒãã®ãµããŒã
- ãœãŒã¹ã³ãŒãã®å€æŽãç£èŠãã倿Žãè¡ããããåãããã€ãã
- ãããã€å¯Ÿè±¡ã®ããã±ãŒãžãç£èŠããŠãããã±ãŒãžãæŽæ°ããããåãããã€ãã
ãã¹ãã§ã®å©çšã«é¢ããŠã¯ãArquillianã䜿ãããã§ãã
https://github.com/wildfly/wildfly-arquillian/tree/3.0.1.Final/container-bootable
åçš®ãµã³ãã«ã¯ããã¡ãã
https://github.com/wildfly-extras/wildfly-jar-maven-plugin/tree/5.0.1.Final/examples
ãšããããã§ããŸãã¯äœ¿ã£ãŠã¿ãŸãããã
ç°å¢
ä»åã®ç°å¢ã¯ããã¡ãã§ãã
$ java --version openjdk 11.0.11 2021-04-20 OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04) OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode, sharing) $ mvn --version Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d) Maven home: $HOME/.sdkman/candidates/maven/current Java version: 11.0.11, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64 Default locale: ja_JP, platform encoding: UTF-8 OS name: "linux", version: "5.4.0-77-generic", arch: "amd64", family: "unix"
ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³
ãŸãã¯ãåäœç¢ºèªããããã®ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ãäœæããŸãã
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.example</groupId> <artifactId>wildfly-bootable-jar-example</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <failOnMissingWebXml>false</failOnMissingWebXml> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-bom</artifactId> <version>8.0.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>jakarta.ws.rs</groupId> <artifactId>jakarta.ws.rs-api</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>jakarta.enterprise</groupId> <artifactId>jakarta.enterprise.cdi-api</artifactId> <scope>provided</scope> </dependency> </dependencies> </project>
ç°¡åãªãJAX-RSïŒCDIã䜿ã£ãWebã¢ããªã±ãŒã·ã§ã³ãçšæããŸãããã
src/main/java/org/littlewings/jakarta/wildfly/bootable/JaxrsActivator.java
package org.littlewings.jakarta.wildfly.bootable; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; @ApplicationPath("/") public class JaxrsActivator extends Application { }
src/main/java/org/littlewings/jakarta/wildfly/bootable/MessageResource.java
package org.littlewings.jakarta.wildfly.bootable; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; @ApplicationScoped @Path("message") public class MessageResource { @Inject MessageService messageService; @GET @Produces(MediaType.TEXT_PLAIN) public String hello(@QueryParam("word") @DefaultValue("World") String word) { return messageService.message(word); } }
src/main/java/org/littlewings/jakarta/wildfly/bootable/MessageService.java
package org.littlewings.jakarta.wildfly.bootable; import javax.enterprise.context.ApplicationScoped; @ApplicationScoped public class MessageService { public String message(String word) { return String.format("Hello %s!!", word); } }
ããã±ãŒãžã³ã°ãããšãWARãã¡ã€ã«ãã§ããŸãã
$ mvn package $ ll -h target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT.war -rw-rw-r-- 1 xxxxx xxxxx 4.9K 7æ 3 19:01 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT.war
ãŸãããµã€ãã§ãã
WildFly Bootable JAR Maven Pluginã远å ãã
ãã®ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã«ãWildFly Bootable JAR Maven Pluginã远å ããŠããã±ãŒãžã³ã°ããŠã¿ãŸãããã
ã·ã³ãã«ã«ã¯ããããªæãã§ããã
Adding the bootable JAR Maven plugin to your pom file
<build> <plugins> <plugin> <groupId>org.wildfly.plugins</groupId> <artifactId>wildfly-jar-maven-plugin</artifactId> <version>5.0.1.Final</version> <configuration> <feature-pack-location>wildfly@maven(org.jboss.universe:community-universe)#24.0.0.Final</feature-pack-location> </configuration> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
feature-pack-location
ã§ã䜿çšããWildFlyã®ããŒãžã§ã³ãæå®ããŸããä»åã¯ã24.0.0.Finalã§ãã
Specifying the WildFly server version to use
<configuration> <feature-pack-location>wildfly@maven(org.jboss.universe:community-universe)#24.0.0.Final</feature-pack-location> </configuration>
ããŒãžã§ã³ãæå®ããªãå Žåã¯ãææ°ã®WildFlyã䜿ãããŸãã
ãã¡ãã¯ãmvn package
ã§åäœãããããã®ãã®ã§ãã
<executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions>
ãã®ç¶æ ã§ããã±ãŒãžã³ã°ãããš
$ mvn package
WildFly Bootable JAR Maven Pluginãåäœã
[INFO] --- wildfly-jar-maven-plugin:5.0.1.Final:package (default) @ wildfly-bootable-jar-example --- [INFO] Provisioning server configuration based on the standalone-microprofile.xml default configuration [INFO] Building server based on [[wildfly@maven(org.jboss.universe:community-universe)#24.0.0.Final inherit-packages=false inheritConfigs=false includedConfigs [model=standalone name=standalone-microprofile.xml]]] galleon feature-packs [INFO] Found boot artifact org.wildfly.core:wildfly-jar-boot:jar:16.0.0.Final:provided in org.wildfly:wildfly-ee-galleon-pack:24.0.0.Final 7æ 03, 2021 7:06:42 ååŸ org.wildfly.core.embedded.LoggerContext$JBossLoggingModuleLogger greeting INFO: JBoss Modules version 1.11.0.Final 7æ 03, 2021 7:06:42 ååŸ org.jboss.msc.service.ServiceContainerImpl <clinit> INFO: JBoss MSC version 1.4.12.Final 7æ 03, 2021 7:06:42 ååŸ org.jboss.threads.Version <clinit> INFO: JBoss Threads version 2.3.2.Final 7æ 03, 2021 7:06:42 ååŸ org.jboss.as.server.ApplicationServerService start INFO: WFLYSRV0049: WildFly Full 24.0.0.Final (WildFly Core 16.0.0.Final) starting 7æ 03, 2021 7:06:43 ååŸ org.jboss.as.patching.installation.InstallationManagerService start INFO: WFLYPAT0050: WildFly Full cumulative patch ID is: base, one-off patches include: none 7æ 03, 2021 7:06:43 ååŸ org.jboss.as.server.suspend.SuspendController resume INFO: WFLYSRV0212: Resuming server 7æ 03, 2021 7:06:43 ååŸ org.jboss.as.server.BootstrapListener done INFO: WFLYSRV0025: WildFly Full 24.0.0.Final (WildFly Core 16.0.0.Final) started in 1091ms - Started 29 of 32 services (3 services are lazy, passive or on-demand) 7æ 03, 2021 7:06:43 ååŸ org.wildfly.security.Version <clinit> INFO: ELY00001: WildFly Elytron version 1.16.0.Final 7æ 03, 2021 7:06:45 ååŸ org.jboss.as.controller.AttributeDefinition validateAndSet INFO: WFLYCTL0028: Attribute 'security-realm' in the resource at address '/subsystem=undertow/server=default-server/https-listener=https' is deprecated, and may be removed in a future version. See the attribute description in the output of the read-resource-description operation to learn more about the deprecation. 7æ 03, 2021 7:06:45 ååŸ org.jboss.as.server.ApplicationServerService stop INFO: WFLYSRV0050: WildFly Full 24.0.0.Final (WildFly Core 16.0.0.Final) stopped in 10ms [INFO] Executing CLI, Server configuration [INFO] CLI scripts execution done.
WARãã¡ã€ã«ä»¥å€ã«ã-bootable.jar
ãšä»ããJARãã¡ã€ã«ãäœæãããŸãã125MãããŸããã©ã
$ ll -h target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT*.* -rw-rw-r-- 1 xxxxx xxxxx 125M 7æ 3 19:07 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT-bootable.jar -rw-rw-r-- 1 xxxxx xxxxx 4.9K 7æ 3 19:06 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT.war
ãã®JARãã¡ã€ã«ãå®è¡ãããš
$ java -jar target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT-bootable.jar
æåéãWildFlyãèµ·åããŸãã
19:08:35,107 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 24.0.0.Final (WildFly Core 16.0.0.Final) started in 4582ms - Started 318 of 463 services (221 services are lazy, passive or on-demand
WARãã¡ã€ã«ã¯ãROOT.war
ãšããŠãããã€ãããŸãã
19:08:35,068 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0010: Deployed "wildfly-bootable-jar-example-0.0.1-SNAPSHOT.war" (runtime-name : "ROOT.war")
ãã®ãããã³ã³ããã¹ããã¹ã¯/
ã§ã¢ã¯ã»ã¹ã§ããŸãã
$ curl localhost:8080/message Hello World!! $ curl localhost:8080/message?word=WildFly Hello WildFly!!
åäœç¢ºèªãã§ããŸãããã
Bootable JARå®è¡æã«äœ¿ããåŒæ°ã¯ããã¡ãã
èµ·åã¯ãwildfly-jar:run
ãwildfly-jar:start
ã§ãè¡ãããšãã§ããŸãã
$ mvn package wildfly-jar:run
wildfly-jar:run
ãšwildfly-jar:start
ã®éãã¯ãããã¯ã°ã©ãŠã³ãã§åäœãããã©ãããšãªããŸãã
wildfly-jar:start
ã§èµ·åããå Žåã¯ãwildfly-jar:shutdown
ã§åæ¢ããå¿
èŠããããŸãã
$ mvn wildfly-jar:shutdown
ã³ã³ããã¹ããã¹ã倿Žããå Žåã¯ãcontextRoot
ãšããWildFly Bootable JAR Maven Pluginã®èšå®ã§è¡ãããã§ãã
URL context path of deployed application
executionãèšå®ããªãå Žåã¯ïŒ
以äžã®execution
ã®æå®ãå
¥ããªãå Žåã
<executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions>
Bootable JARãäœæããããã®ã³ãã³ãã¯ãããªããŸãã
$ mvn package wildfly-jar:package
å
ã«package
ãŽãŒã«ãæå®ããŠããããšãå¿
é ãšãªããwildfly-jar:package
åäœã§ã¯åäœããŸããã
ãããŸã§ããããã€å¯Ÿè±¡ãå ã«äœã£ãŠããããšããã€ã³ãã«ãªããŸããHollow JARã®å Žåã¯åŸ®åŠã§ããã
wildfly-jar:run
ããã®åæã§æžãããšãããšããã£ããé·ããªããŸãâŠã
$ mvn package wildfly-jar:package wildfly-jar:run
èšå®ãè¡ã
Bootable JARãšããŠæ§æãããWildFlyã®èšå®ã倿Žããæ¹æ³ã¯ããã€ããããŸãããåºæ¬ã¯ããã±ãŒãžã³ã°æã§ããããã
WildFly CLIã®ã¹ã¯ãªããã䜿ã£ãŠèšå®ããããšã«ãªããŸãã
Configuring the server during packaging
ä»åã¯ãæ±ããŸããâŠã
ã³ã³ããŒãã³ããã«ã¹ã¿ãã€ãºãã
次ã«ãå©çšããã³ã³ããŒãã³ããã«ã¹ã¿ãã€ãºããŠã¿ãŸãããã
Composing custom server with Galleon layers
ããã§åºãŠããGalleonãšããã®ã¯ãè€æ°ã®ã³ã³ããŒãã³ãã§æ§æããããœãããŠã§ã¢ãäœæãããããžã§ãã³ã°ããããã®
ããŒã«ã§ãã
èŠããã«ãWildFly Bootable JAR Maven Pluginã§ã¯ããã®Galleonã䜿ã£ãŠå©çšããã³ã³ããŒãã³ããéžæããããšã«ãªããŸãã
ããã©ã«ãã§ã¯ãstandalone-microprofile.xml
çžåœã®æ§æã§Bootable JARãäœæãããããã§ãã
Specifying the set of Galleon layers to use
ãã¡ãã§ãããããïŒ
ã³ã³ããŒãã³ãã®èšå®ãè¡ãã«ã¯ã2ã€ã®æžãæ¹ãããããã§ãã
- Galleon layerã䜿ã
- Galleon feature-packã䜿ã
ãšã¯ãããäºãã«æä»çãªé¢ä¿ã§ã¯ãªãããã§ããã
ãã ãfeature-packã䜿ã£ãå Žåã¯feature-pack-location
ã䜿ã£ãWildFlyã®ããŒãžã§ã³æå®ã¯ã§ããªããªãã
ãããfeature-packãšããŠæå®ããããšã«ãªããŸãã
<feature-packs> <feature-pack> <location>wildfly@maven(org.jboss.universe:community-universe)#24.0.0.Final</location> </feature-pack> <feature-pack> <groupId>org.wildfly</groupId> <artifactId>wildfly-datasources-galleon-pack</artifactId> <version>1.0.6.Final</version> </feature-pack> </feature-packs>
ããŒã¿ãœãŒã¹ãæ±ãå Žåãªã©ã¯ãfeature-packã䜿ãããšã«ãªããŸãã
ä»åã¯ãGalleon layerã®ã¿ã䜿ããŸãã
Galleon layerã«ã2çš®é¡ãããåºæ¬ãªlayerïŒBasic layerïŒãšããã®çµã¿åããã§è¡šçŸãããFoundational layerããããŸãã
ãã®2ã€ã®ãªã¹ããšãå
ã»ã©ã®standalone-microprofile.xml
ã«æžãããŠããlayers
ã®å
容ãèŠããšãã©ã®ãããªlayerã
éžæãããŠããã®ãããããã§ãããã
<layers> <include name="cloud-server"/> <include name="h2-default-datasource"/> <include name="microprofile-fault-tolerance"/> <include name="microprofile-health"/> <include name="microprofile-jwt"/> <include name="microprofile-metrics"/> <include name="microprofile-openapi"/> <include name="microprofile-opentracing"/> <include name="microprofile-rest-client"/> <include name="undertow-legacy-https"/> <exclude name="management-security-realm"/> </layers>
ãŸããlayerã¯é€å€ããããšãã§ããŸãã
ä»åã¯ãjaxrs-server
ãšmanagement
ãå
¥ããŠãããŸãããã
<configuration> <feature-pack-location>wildfly@maven(org.jboss.universe:community-universe)#24.0.0.Final</feature-pack-location> <layers> <layer>jaxrs-server</layer> <layer>management</layer> </layers> </configuration>
ããã±ãŒãžã³ã°ãããš
â»ä»åã¯execution
ã®èšå®ã¯å€ããŠããŸã
$ mvn package wildfly-jar:package
æåãããã10MBã»ã©å°ãããªããŸããã
$ ll -h target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT*.* -rw-rw-r-- 1 xxxxx xxxxx 114M 7æ 3 20:02 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT-bootable.jar -rw-rw-r-- 1 xxxxx xxxxx 4.9K 7æ 3 20:01 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT.war
jaxrs-server
ã¯Foundational layerã§ãããããå°ãåããŸãã
Basic layerã§ãããjaxrs
ãšcdi
ã«ããŠã¿ãŸãããã
<configuration> <feature-pack-location>wildfly@maven(org.jboss.universe:community-universe)#24.0.0.Final</feature-pack-location> <layers> <layer>jaxrs</layer> <layer>cdi</layer> <layer>management</layer> </layers> </configuration>
äžæ°ã«ååãããã«ãªããŸããã
$ ll -h target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT*.* -rw-rw-r-- 1 xxxxx xxxxx 64M 7æ 3 20:06 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT-bootable.jar -rw-rw-r-- 1 xxxxx xxxxx 4.9K 7æ 3 20:06 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT.war
ãããã£ãŠãå¿ èŠãªã³ã³ããŒãã³ããéžãã§ãã«ã¹ã¿ãã€ãºããŠããããšãã§ããŸãã
Basic layerã«ã¯äŸåãããããã®ãããã¯èªåçã«è§£æ±ºããŠãããŸãã
ã¡ãªã¿ã«ãmanagement
layerã¯ãªã¢ãŒãã¢ã¯ã»ã¹ã§ã®ç®¡çæ©èœãæäŸãããã®ã§ãWildFly Bootable JAR Maven Pluginã§ã¯
wildfly-jar:shutdown
ã§äœ¿ãããã®ã§ãå
¥ããŠãããæ¹ãè¯ãæ°ãããŸãã
éçºã§äœ¿ã
èšå®ã¯ã以äžã«1床æ»ããŸãã
<configuration> <feature-pack-location>wildfly@maven(org.jboss.universe:community-universe)#24.0.0.Final</feature-pack-location> <layers> <layer>jaxrs-server</layer> <layer>management</layer> </layers> </configuration>
ããããã¯ãéçºçšéã§ã®äœ¿ãæ¹ãæžããŠãããŸãããã
JARãã¡ã€ã«ãã¹ãªã ã«ãã
ãããŸã§èŠãŠããéããBootable JARã¯ãããªãã®ãµã€ãºã«ãªããŸãã
å®ç°å¢ã§ã¯äœ¿ããªããªããšã¯æããŸãããWildFlyã®ã¢ãžã¥ãŒã«ãããŒã«ã«ã®Mavenãªããžããªãã䜿çšããããšã§ã
JARãã¡ã€ã«ã®ãµã€ãºãå°ããããããšãã§ããŸãã
Provisioning a slim bootable JAR
plugin-options
ãšããŠãjboss-maven-dist
ã远å ããŸãã
<plugin-options> <jboss-maven-dist/> </plugin-options>
configuration
ãšããŠã¯ããããªããŸãã
<configuration> <feature-pack-location>wildfly@maven(org.jboss.universe:community-universe)#24.0.0.Final</feature-pack-location> <layers> <layer>jaxrs-server</layer> <layer>management</layer> </layers> <plugin-options> <jboss-maven-dist/> </plugin-options> </configuration>
ããã§ããã±ãŒãžã³ã°ãããš
$ mvn package wildfly-jar:package
Bootable JARãã¡ã€ã«ã®ãµã€ãºããäžæ°ã«æ°MãŸã§å°ãããªããŸãã
$ ll -h target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT*.* -rw-rw-r-- 1 xxxxx xxxxx 3.9M 7æ 3 20:16 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT-bootable.jar -rw-rw-r-- 1 xxxxx xxxxx 4.9K 7æ 3 20:16 target/wildfly-bootable-jar-example-0.0.1-SNAPSHOT.war
ããã±ãŒãžã³ã°ãªã©ã«ãããæéããçããªããŸãã
ãœãŒã¹ã³ãŒãã®ç£èŠã䜿ã£ãéçºã¢ãŒã
次ã¯ãWildFly Bootable JAR Maven Pluginã§ã®ãéçºäžã«äŸ¿å©ãªã¢ãŒãã䜿ã£ãŠãããŸãããã
ãŸãã¯ããœãŒã¹ã³ãŒãã®ç£èŠã䜿ã£ãéçºã¢ãŒãã§ãã
Development mode with source watching
äœ¿ãæ¹ã¯ç°¡åã§ã以äžã®ã³ãã³ããå®è¡ããŸãã
$ mvn wildfly-jar:dev-watch
ãããšã空ã®ãµãŒããŒïŒHollow JARïŒãèµ·åããŸãã
[INFO] Hollow jar, No application deployment added to server.
ããšã¯ããœãŒã¹ã³ãŒãã®å€æŽãæ€ç¥ãããšèªåã§åã³ã³ãã€ã«ïŒãããã€ãè¡ãã倿ŽããµãŒããŒã«åæ ããŠãããŸãã
target
ãã£ã¬ã¯ããªã空ã®ç¶æ
ã§èµ·åããŠããåæã«ããã±ãŒãžã³ã°ïŒãããã€ããŸãã
$ curl localhost:8080/message Hello World!!
èµ·ååŸã«ãœãŒã¹ã³ãŒãã倿Žãããš
@ApplicationScoped public class MessageService { public String message(String word) { return String.format("Hello %s!??", word); } }
倿Žãæ€åºããŠåãããã€ãè¡ãããŸãã
[INFO] Changes detected - recompiling the module! [INFO] Compiling 3 source files to /path/to/target/classes [INFO] Exploding webapp [INFO] Assembling webapp [wildfly-bootable-jar-example] in [/path/to/target/deployments/ROOT.war] [INFO] Processing war project [INFO] Webapp assembled in [5 msecs] 20:26:16,524 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 9) WFLYUT0022: Unregistered web context: '/' from server 'default-server' 20:26:16,580 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0028: Stopped deployment ROOT.war (runtime-name: ROOT.war) in 62ms 20:26:16,607 INFO [org.jboss.as.server] (management-handler-thread - 1) WFLYSRV0009: Undeployed "ROOT.war" (runtime-name: "ROOT.war") 20:26:16,615 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "ROOT.war" (runtime-name: "ROOT.war") 20:26:16,699 INFO [org.jboss.weld.deployer] (MSC service thread 1-8) WFLYWELD0003: Processing weld deployment ROOT.war 20:26:17,025 INFO [org.jboss.resteasy.resteasy_jaxrs.i18n] (ServerService Thread Pool -- 47) RESTEASY002225: Deploying javax.ws.rs.core.Application: class org.littlewings.jakarta.wildfly.bootable.JaxrsActivator 20:26:17,033 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 47) WFLYUT0021: Registered web context: '/' for server 'default-server' 20:26:17,049 INFO [org.jboss.as.server] (management-handler-thread - 1) WFLYSRV0010: Deployed "ROOT.war" (runtime-name : "ROOT.war")
確èªã
$ curl localhost:8080/message Hello World!??
ãªããªã䟿å©ã§ã¯ãªãã§ããããïŒ
ããã€ããã€ã³ããæ³šæäºé ããããŸãã
- ãµãŒããŒã¯ãã©ã¢ã°ã©ãŠã³ãã§èµ·åããã®ã§ã忢ã¯Ctrl-cã§è¡ã
- WARãJARãEARããµããŒã
src/main/java
ïŒããã©ã«ãïŒããã³src/main/webapp
ãsrc/main/resources
ã®å€æŽãæ€ç¥ããŠãåãããã€ããpom.xml
ã®WildFly Bootable JAR Maven Pluginã®èšå®å€æŽã¯ããµãŒããŒã®åèµ·åãå¿ èŠpom.xml
ã®WildFly Bootable JAR Maven Plugin以å€ã®èšå®å€æŽã¯ãåãããã€ãè¡ããã- ã³ã³ãã€ã«ãšã©ãŒã§ã¯åæ¢ããªã
- ãã«ãã¢ãžã¥ãŒã«ã¯ãµããŒãããŠããªã
- ãªãœãŒã¹ãã¡ã€ã«ã®ãã£ã«ã¿ãªã³ã°ïŒincludeïŒexcludeïŒã¯ãµããŒããããŠãããããã¹ãŠç£èŠå¯Ÿè±¡ãšãªã
éçºã¢ãŒããµãŒããŒïŒåããã±ãŒãžã³ã°
ããã²ãšã€ã¯ãå ã«éçºã¢ãŒãã®ãµãŒããŒãèµ·åããŠãããããã±ãŒãžã³ã°ãããšèªåã§åãããã€ããæ¹æ³ã§ãã
Development mode with repackaging
æåã«ãwildfly-jar:dev
ã§éçºãµãŒããŒãèµ·åããŸãã
$ mvn wildfly-jar:dev
ãã¡ããHollow JARã§ãã
[INFO] Hollow jar, No application deployment added to server.
ãã®ãµãŒããŒã¯ããã¯ã°ã©ãŠã³ãã§èµ·åããŸãã
ãã®ç¶æ
ã§-Ddev
ãæå®ããŠããã±ãŒãžã³ã°ãè¡ããšãtarget/deployments
ã«ãã¡ã€ã«ãé
眮ããããã€ãè¡ãããŸãã
$ mvn package wildfly-jar:package -Ddev
ããšã¯ããœãŒã¹ã³ãŒãã倿ŽããŠããåãããã«åããã±ãŒãžã³ã°ãããšãèªåã§ãããã€ãããŸãã
$ mvn package wildfly-jar:package -Ddev
wildfly-jar:dev-watch
ãšã®éãã¯ãæç€ºçãªåããã±ãŒãžã³ã°ããããã€ã®ããªã¬ãŒã«ãªãããšã§ããã
ãªããéçºãµãŒããŒã¯ããã¯ã°ã©ãŠã³ãã§èµ·åãããŸãŸãªã®ã§ãwildfly-jar:shutdown
ã§åæ¢ããŸãã
$ mvn wildfly-jar:shutdown
ãã®æã«ãmanagement
layerãå¿
èŠã«ãªããŸãã
ãŸãšã
WildFly Bootable JAR Maven Pluginã詊ããŠã¿ãŸããããã£ãã䟿å©ã§ã¯ãªãã§ããããïŒ
å®éã«åããç°å¢ã§ã¯WildFlyãµãŒããŒã«ãããã€ãããããªã±ãŒã¹ã§ããæå
ã§ã¯éçºã¢ãŒãã§Bootable JARã§åãããŠç¢ºèªããŠã
å®éã®ç°å¢ã§ã¯ãããã€æã¯WARãã¡ã€ã«ã§ããšããäœ¿ãæ¹ãè¯ãã®ããªãšæããŸãã
èŠããŠãããŸãããã