Upload
yoshimasa-tanabe
View
1.408
Download
0
Embed Size (px)
Citation preview
Introduction to WildFly Swarm
2015-08-10(月) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」
http://www.java-users.jp/?p=1993
田邊 義真(たなべ よしまさ)
@emaggame
http://morec.at
2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 2
Java EE で Spring Boot みたいなのやりたい
2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 3
選択肢
● Spring Boot + Java EE API ● Payara Micro● WildFly Swarm
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
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
2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 6
WildFly で Spring Boot みたいなのやりたい...
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
2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 8
WildFly Swarm を動かすまで● Spring Boot のよさ
– Spring Boot の依存性を 1 つ追加するだけで、必要なライブラリの依存性から設定までを よきにやってくれ、すぐにアプリケーション作成に着手、 fat-jar で即実行できる。 カスタマイズは JavaConfig や 設定ファイル で。
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
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
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!"; }}
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); }}
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: ......
2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 14
WildFly Swarm を動かすまで● アプリケーション実行 その2
– mvn wildfly-swarm:run– gradle run
2015-08-10(土) JJUG ナイト・セミナー 「ビール片手にLT&納涼会」 15
WildFly Swarm を動かすまで● アプリケーション実行 その3
– IDE > Run● IDE から main() 指定で実行できる
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
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 も動かない
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