18
Introduction to WildFly Swarm 2015-08-10(月) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 http://www.java-users.jp/?p=1993 田邊 義真(たなべ よしまさ) @emaggame http://morec.at

Introduction to WildFly Swarm #jjug

Embed Size (px)

Citation preview

Page 1: Introduction to WildFly Swarm #jjug

Introduction to WildFly Swarm

2015-08-10(月) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」

http://www.java-users.jp/?p=1993

田邊 義真(たなべ よしまさ)

@emaggame

http://morec.at

Page 2: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 2

Java EE で Spring Boot みたいなのやりたい

Page 3: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 3

選択肢

● Spring Boot + Java EE API ● Payara Micro● WildFly Swarm

Page 4: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 4

Spring Boot + Java EE API ● Spring は Java EE の API もいろいろサポート

– JAX-RS, JSR-330 の DI アノテーション, JTA, JMS …

● API だけでも使い慣れたものにしたい、ということであればいいかも

● 参考– [翻訳] Spring Boot 1.2における"Bootiful" なJava EEサポート

● https://blog.ik.am/#/entries/296

Page 5: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 5

Payara Micro● Payara は GlassFish から fork されたアプリケーションサーバ● fat-jar ではなく、 以下のように実行

– java -jar payara-micro.jar --deploy test.war– payara-micro.jar を用意すればふつうの war がすぐ動く!

● 参考– Payara Micro を試してみる

● http://www.coppermine.jp/docs/programming/2015/04/payara-micro.html

Page 6: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 6

WildFly で Spring Boot みたいなのやりたい...

Page 7: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 7

WildFly Swarm● WildFly Swarm は WildFly の実験的サブプロジェクト

– WildFly = JBoss Application Server が改名● WildFly が動作するためのもろもろのライブラリをかき集めて、Java

EE アプリケーションを fat-jar として実行できるようにしたもの● ドキュメントサイト(いずれ gitbooks.io などに変わるかも )

– http://wildfly.org/swarm/● GItHub

– https://github.com/wildfly-swarm/wildfly-swarm

Page 8: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 8

WildFly Swarm を動かすまで● Spring Boot のよさ

– Spring Boot の依存性を 1 つ追加するだけで、必要なライブラリの依存性から設定までを よきにやってくれ、すぐにアプリケーション作成に着手、 fat-jar で即実行できる。 カスタマイズは JavaConfig や 設定ファイル で。

Page 9: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 9

WildFly Swarm を動かすまで● WildFly Swarm では?

– Maven プラグインと、使いたい API の依存性を追加

<dependency> <groupId>org.wildfly.swarm</groupId> <artifactId>wildfly-swarm-jaxrs</artifactId> <version>${version.wildfly-swarm}</version></dependency>

<plugin> <groupId>org.wildfly.swarm</groupId> <artifactId>wildfly-swarm-plugin</artifactId> <version>${version.wildfly-swarm}</version> <configuration> <mainClass>foo.App</mainClass> </configuration> <executions> <execution> <goals> <goal>package</goal> </goals> </execution> </executions></plugin>

JAX-RS

Page 10: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 10

WildFly Swarm を動かすまで● WildFly Swarm では?

– Gradle プラグインと、使いたい APIの依存性を追加

buildscript { dependencies { classpath "org.wildfly.swarm:wildfly-swarm-plugin:$version" }}apply plugin: 'wildfly-swarm'apply plugin: 'application'mainClassName = 'org.wildfly.swarm.examples.gradle.Main'dependencies { compile "org.wildfly.swarm:wildfly-swarm-jaxrs:$version"}

公式サンプルは以下http://bit.ly/1N0LIIu

Page 11: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 11

WildFly Swarm を動かすまで● WildFly Swarm では?

– ふつうの JAX-RS

import javax.ws.rs.GET;import javax.ws.rs.Path;@Path("/")public class Hello { @GET public String get() { return "Hello, WildFly Swarm!"; }}

Page 12: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 12

WildFly Swarm を動かすまで● WildFly Swarm では?

– main() でクラスを登録、必要であれば設定(データソースとか)

import org.jboss.shrinkwrap.api.ShrinkWrap;import org.wildfly.swarm.container.Container;import org.wildfly.swarm.jaxrs.JAXRSArchive;public class App { public static void main(String[] args) throws Exception { Container container = new Container(); JAXRSArchive deployment = ShrinkWrap.create(JAXRSArchive.class); deployment.addClass(Hello.class); deployment.addAllDependencies(); container.start().deploy(deployment); }}

Page 13: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 13

WildFly Swarm を動かすまで● アプリケーション実行 その1

– java -jar app-swarm.jar● mvn package/gradle build すると <app-name>-

swarm.jar という fat-jar ができる

$ java -jar app-swarm.jar<date> INFO [org.jboss.msc] (main) JBoss MSC version 1.2.6.Final<date> INFO [org.jboss.as] (MSC service thread 1-8) WFLYSRV0049: ......

Page 14: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 14

WildFly Swarm を動かすまで● アプリケーション実行 その2

– mvn wildfly-swarm:run– gradle run

Page 15: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 15

WildFly Swarm を動かすまで● アプリケーション実行 その3

– IDE > Run● IDE から main() 指定で実行できる

Page 16: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 16

WildFly Swarm 現状● Java EE API として JAX-RS, CDI, EJB, JSF, JPA,

JMS など、おおよその Java EE API が利用可● Netflix や Logstash、 Keycloak(SSOサーバ)など

がすぐ利用できるインテグレーションもあり● ドキュメントはあまりないが、サンプルを見ればなん

とかなる– https://github.com/wildfly-swarm/wildfly-swarm-

examples

Page 17: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 17

WildFly Swarm 現状● まだ Alpha。 プロダクション環境には非推奨● WildFly 本体の設定群に追従する仕組みがな

く、WildFly の設定(データソースなど)を全ては使えない。ただし、なんとかしようとする動きはあり

● https://github.com/wildfly-swarm/wildfly-swarm/issues/98

● Spring Loaded/Auto restart Class Loader 相当の機能がなく、JRebel も動かない

Page 18: Introduction to WildFly Swarm #jjug

2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 18

最後に● ぜひ WildFly Swarm を触ってみてください! WildFly 好きには目が離せない

プロジェクトです● 何やらマイクロサービスっぽいそこそこの規模のサンプルも作成中のようです

– https://github.com/wildfly-swarm/booker● APサーバで動いて WF-Swarm で動かない場合は WF-Swarm が対応してい

ないだけなので、 issue 登録を!● 気に入った方は GitHub のウォッチや公式 Twitter アカウントのフォローな

ど...

– https://twitter.com/wildflyswarm