ããã¯ããªã«ããããã¦æ¸ãããã®ï¼
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ãã¡ã¤ã«ã§ãã¨ããä½¿ãæ¹ãè¯ãã®ããªã¨æãã¾ãã
è¦ãã¦ããã¾ãããã