SlideShare a Scribd company logo
1 of 23
Download to read offline
Introduction to WildFly Swarm
2015-05-30(土) 第十一回 #渋谷java
http://shibuya-java.connpass.com/event/14755/
田邊 義真(たなべ よしまさ)
@emaggame
http://morec.at
2015-05-30(土) 第十一回 #渋谷java 2
目次
●
WildFly
●
Java EE でのアプリケーションと AP サーバの関係
●
WildFly Swarm
●
デモ
●
個人的な感想
●
参考
2015-05-30(土) 第十一回 #渋谷java 3
WildFly
●
Java EE 7 対応の Java EE アプリケーションサーバ
– http://wildfly.org/
– 以前の名称は JBoss Application Server
●
そろそろ最新の 9.0.0 がリリースされる予定
– 2015-05-30 現在、9.0.0.CR1
●
WildFly 9.0.0.CR1 Release Notes
2015-05-30(土) 第十一回 #渋谷java 4
従来の Java EE
●
アプリケーションを AP サーバにデプロイ
– アプリケーションは AP サーバの機能を利用する
●
Java EE 実装ライブラリ(Servlet, EJB, JMS, ...)
●
インフラ(スレッド, コネクションプール, JMS ブローカ...)
– APサーバはまた、アプリケーションが必要とする設定を読み込む
(例: DB 接続設定)
●
なんだかんだ密結合しているので、例えば複数アプリのデプ
ロイなどをすると、AP サーバのアップデートは気軽にできない
2015-05-30(土) 第十一回 #渋谷java 5
アプリケーション + AP サーバで 1 コンポーネント?
出典: Java application servers are dead!
アプリケーションとAPサーバに
循環した関係があるのならば、
1つのコンポーネントとみなせるのでは?
2015-05-30(土) 第十一回 #渋谷java 6
WildFly Swarm
●
WildFly のもろもろのライブラリをかき集めて、Java EE アプリ
ケーションを fat-jar として実行できるようにしたもの
– https://github.com/wildfly-swarm/wildfly-swarm
●
要は Spring Boot のようなもの を目指している
●
WildFly 9 から入った feature-pack の機構を利用し、どの API
を使いたいかによって依存ライブラリを取捨選択できる
●
今年の JavaOne でセッションするらしい
– http://bit.ly/1SHfJPL
2015-05-30(土) 第十一回 #渋谷java 7
Microservices Ready?
●
fat-jar とすることで、依存性を自己完結し、独立し
たサービスとして作りやすくなる
– 複数アプリのデプロイを強制的に禁止できる
●
もちろん fat-jar = Microservices ではなく、実際に
はいろいろな仕組み(Service Discovery など)が必
要になる
2015-05-30(土) 第十一回 #渋谷java 8
WildFly Swarm 現状
●
Java EE API として JAX-RS, CDI, JPA, JMS が利用可
– EJB, WebSocket, JSF など、主要 API にも未サポートのものあり
– ちょっとした API サーバは作れそう
●
以下のような起動方法が可能
– java -jar app-swarm.jar
– mvn wildfly-swarm:run
– IDE > Run
●
プロダクション投入はおすすめできない
– 今のところ機能不足感が否めない。また、現在開発中の Alpha2-SNAPSHOT で
Alpha1 とで API が変わっており、今後もいろいろと変更されそう(な予感)
2015-05-30(土) 第十一回 #渋谷java 9
WildFly Swarm で挙がっている要望例
●
Gradle など、Maven 以外のサポート
– https://github.com/wildfly-swarm/wildfly-swarm/issues/5
●
現在は Maven プラグインが必須
●
Netflix OSS サポート
– https://github.com/wildfly-swarm/wildfly-swarm/issues/29
●
何かアイデアがあれば、是非 issue 登録を!
– https://github.com/wildfly-swarm/wildfly-swarm/issues
2015-05-30(土) 第十一回 #渋谷java 10
デモ
●
JAX-RS + CDI + JPA の単純なアプリケーション
– https://github.com/emag/wildfly-swarm-quickstarts/tree/master/jaxrs-cdi-jpa
●
2015-05-30 現在、Alpha1 は CDI, JPA が使えず、
対応した Alpha2 もまだリリースされていないので、
自分で master ブランチの Alpha2-SNAPSHOTを
インストールする必要あり
$ git clone https://github.com/wildfly-swarm/wildfly-swarm
$ mvn install
2015-05-30(土) 第十一回 #渋谷java 11
デモ
●
Java EE な部分(JAX-RS)
@ApplicationScoped
@Path("/employees")
public class EmployeeController {
@Inject
private EmployeeService employeeService;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Employee> findAll() {
return employeeService.findAll();
}
2015-05-30(土) 第十一回 #渋谷java 12
デモ
●
Java EE な部分(CDI)
@ApplicationScoped
@Path("/employees")
public class EmployeeController {
@Inject
private EmployeeService employeeService;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Employee> findAll() {
return employeeService.findAll();
}
2015-05-30(土) 第十一回 #渋谷java 13
デモ
●
Java EE な部分(Service的なクラス)
@ApplicationScoped
public class EmployeeService {
@Inject
private EmployeeRepository employeeRepository;
public List<Employee> findAll() {
return employeeRepository.findAll();
}
2015-05-30(土) 第十一回 #渋谷java 14
デモ
●
Java EE な部分(JPA)
@ApplicationScoped
public class EmployeeRepository {
@PersistenceContext
private EntityManager em;
public List<Employee> findAll() {
return em.createQuery(
"SELECT e FROM Employee e", Employee.class)
.getResultList();
}
2015-05-30(土) 第十一回 #渋谷java 15
デモ
●
Java EE な部分(JPA の Entity)
@Entity
@Table(name = "employees")
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
}
2015-05-30(土) 第十一回 #渋谷java 16
デモ
●
Java EE な部分は...
@Entity
@Table(name = "employees")
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
}
何の変哲もなし。
ふつうの Java EE
2015-05-30(土) 第十一回 #渋谷java 17
デモ
●
WildFly Swarm 独自の部分(ここで色々設定)
public class App {
public static void main(String[] args) throws Exception {
Container container = new Container();
container.subsystem(new DatasourcesFraction()
...
);
container.start();
JAXRSDeployment jaxRsDeployment = new JAXRSDeployment(container);
...
container.deploy(jaxRsDeployment);
}
}
2015-05-30(土) 第十一回 #渋谷java 18
デモ
●
アプリケーション実行 その1
– java -jar app-swarm.jar
●
mvn package すると <app-name>-swarm.jar という fat-
jar ができる
$ java -jar target/jaxrs-cdi-jpa-1.0.0-swarm.jar
<date> INFO [org.jboss.msc] (main) JBoss MSC version 1.2.4.Final
<date> INFO [org.jboss.as] (MSC service thread 1-8) WFLYSRV0049: ...
...
2015-05-30(土) 第十一回 #渋谷java 19
デモ
●
アプリケーション実行 その2
– mvn wildfly-swarm:run
●
WildFly Swarm Maven プラグイン提供の goal
$ mvn wildfly-swarm:run
[INFO] Scanning for projects...
...
<date> INFO [org.jboss.msc] (main) JBoss MSC version 1.2.4.Final
<date> INFO [org.jboss.as] (MSC service thread 1-8) WFLYSRV0049: ...
...
2015-05-30(土) 第十一回 #渋谷java 20
デモ
●
アプリケーション実行 その3
– IDE > Run
●
IDE から main() 指定で実行できる
2015-05-30(土) 第十一回 #渋谷java 21
デモ
●
API にアクセス
$ curl localhost:8080/employees | jq .
...
[
{
"name": "emp01",
"id": 1
},
{
"name": "emp02",
"id": 2
}
]
2015-05-30(土) 第十一回 #渋谷java 22
個人的な感想
●
Java EE を fat-jar で動かせるのが単純にうれしい
– Spring Boot を触って、正直うらやましかった。。
●
WildFly ダウンロード, アプリデプロイは正直めんどくさい。。
●
WildFly の機能(Java EE API, 設定関連)を完全に
は扱えていないので、今後に注目したい
●
とにかく応援したい
2015-05-30(土) 第十一回 #渋谷java 23
参考
●
GitHub
– https://github.com/wildfly-swarm/wildfly-swarm
●
WildFly Swarm Initial Release(blog)
– http://wildfly.org/news/2015/05/05/WildFly-Swarm-Released/
●
WildFly Swarm: Building Microservices with Java EE
– http://blog.arungupta.me/wildfly-swarm-microservices-javaee/

More Related Content

What's hot

Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
Koichi Sakata
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
Ryuji Yamashita
 

What's hot (20)

Java EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jpJava EE パフォーマンスTips #glassfish_jp
Java EE パフォーマンスTips #glassfish_jp
 
Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編Spring bootでweb セキュリティ(ログイン認証)編
Spring bootでweb セキュリティ(ログイン認証)編
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
 
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
 
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
インパス! あのこれダメッス! ~Javaコードレビューの指摘ポイント10選~
 
Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今Seasar2で作った俺たちのサービスの今
Seasar2で作った俺たちのサービスの今
 
Jsug 20160422 slides
Jsug 20160422 slidesJsug 20160422 slides
Jsug 20160422 slides
 
Spring bootでweb 基本編
Spring bootでweb 基本編Spring bootでweb 基本編
Spring bootでweb 基本編
 
元気玉的 分散テスト 実行システム TestStreamer
元気玉的 分散テスト 実行システム TestStreamer元気玉的 分散テスト 実行システム TestStreamer
元気玉的 分散テスト 実行システム TestStreamer
 
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
PHP in Java -Quercus- によるレガシーマイグレーション実例 #jjug_ccc #ccc_r12
 
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Javaどこよりも早い Spring Boot 1.2 解説 #渋谷Java
どこよりも早い Spring Boot 1.2 解説 #渋谷Java
 
最新のJava言語仕様で見るモジュールシステム #jjug
最新のJava言語仕様で見るモジュールシステム #jjug最新のJava言語仕様で見るモジュールシステム #jjug
最新のJava言語仕様で見るモジュールシステム #jjug
 
テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術テストゼロからイチに進むための戦略と戦術
テストゼロからイチに進むための戦略と戦術
 
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
マイクロフレームワークEnkan(とKotowari)ではじめるREPL駆動開発
 
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都  Flex & Google App Engine for Java & ...
2010年11月27日土曜日FlexUserGroup勉強会 第125回 京都 Flex & Google App Engine for Java & ...
 
ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方ネットワークコンフィグ分析ツール Batfish との付き合い方
ネットワークコンフィグ分析ツール Batfish との付き合い方
 
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4cCDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
 
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
ネットワーク自動化、なに使う? ~自動化ツール紹介~ (2017/07/21開催)
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門
 

Similar to Introduction to WildFly Swarm

R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
EIICHI KIMURA
 
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Shuji Watanabe
 
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Takashi Aoe
 
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkSpring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Toshiaki Maki
 
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Takashi Someda
 

Similar to Introduction to WildFly Swarm (20)

R5 3 type annotation
R5 3 type annotationR5 3 type annotation
R5 3 type annotation
 
はじめてのJPA
はじめてのJPAはじめてのJPA
はじめてのJPA
 
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
 
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
 
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframeworkSpring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
 
Java EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 FallJava EEハンズオン資料 JJUG CCC 2015 Fall
Java EEハンズオン資料 JJUG CCC 2015 Fall
 
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -TDD BootCamp in JJUG CCC - レガシーコード対策編 -
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
 
JavaからScalaへの継続的なマイグレーション
JavaからScalaへの継続的なマイグレーションJavaからScalaへの継続的なマイグレーション
JavaからScalaへの継続的なマイグレーション
 
関ジャバ 20130731 invokedynamic
関ジャバ 20130731 invokedynamic関ジャバ 20130731 invokedynamic
関ジャバ 20130731 invokedynamic
 
JJUG CCC 2015 Fall keynote
JJUG CCC 2015 Fall keynoteJJUG CCC 2015 Fall keynote
JJUG CCC 2015 Fall keynote
 
Casual convergence
Casual convergenceCasual convergence
Casual convergence
 
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho ltNetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
 
Azure Functions あれこれ
Azure Functions あれこれAzure Functions あれこれ
Azure Functions あれこれ
 
OpenShift のある生活
OpenShift のある生活OpenShift のある生活
OpenShift のある生活
 
Javaと小道具
Javaと小道具Javaと小道具
Javaと小道具
 
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
 
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellIntroduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
 
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
開発エンジニアがChefで テスト駆動サーバー設定してみた #biglobetechtalk
 
JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行JobStreamerではじめるJavaBatchのクラウド分散実行
JobStreamerではじめるJavaBatchのクラウド分散実行
 

Introduction to WildFly Swarm

  • 1. Introduction to WildFly Swarm 2015-05-30(土) 第十一回 #渋谷java http://shibuya-java.connpass.com/event/14755/ 田邊 義真(たなべ よしまさ) @emaggame http://morec.at
  • 2. 2015-05-30(土) 第十一回 #渋谷java 2 目次 ● WildFly ● Java EE でのアプリケーションと AP サーバの関係 ● WildFly Swarm ● デモ ● 個人的な感想 ● 参考
  • 3. 2015-05-30(土) 第十一回 #渋谷java 3 WildFly ● Java EE 7 対応の Java EE アプリケーションサーバ – http://wildfly.org/ – 以前の名称は JBoss Application Server ● そろそろ最新の 9.0.0 がリリースされる予定 – 2015-05-30 現在、9.0.0.CR1 ● WildFly 9.0.0.CR1 Release Notes
  • 4. 2015-05-30(土) 第十一回 #渋谷java 4 従来の Java EE ● アプリケーションを AP サーバにデプロイ – アプリケーションは AP サーバの機能を利用する ● Java EE 実装ライブラリ(Servlet, EJB, JMS, ...) ● インフラ(スレッド, コネクションプール, JMS ブローカ...) – APサーバはまた、アプリケーションが必要とする設定を読み込む (例: DB 接続設定) ● なんだかんだ密結合しているので、例えば複数アプリのデプ ロイなどをすると、AP サーバのアップデートは気軽にできない
  • 5. 2015-05-30(土) 第十一回 #渋谷java 5 アプリケーション + AP サーバで 1 コンポーネント? 出典: Java application servers are dead! アプリケーションとAPサーバに 循環した関係があるのならば、 1つのコンポーネントとみなせるのでは?
  • 6. 2015-05-30(土) 第十一回 #渋谷java 6 WildFly Swarm ● WildFly のもろもろのライブラリをかき集めて、Java EE アプリ ケーションを fat-jar として実行できるようにしたもの – https://github.com/wildfly-swarm/wildfly-swarm ● 要は Spring Boot のようなもの を目指している ● WildFly 9 から入った feature-pack の機構を利用し、どの API を使いたいかによって依存ライブラリを取捨選択できる ● 今年の JavaOne でセッションするらしい – http://bit.ly/1SHfJPL
  • 7. 2015-05-30(土) 第十一回 #渋谷java 7 Microservices Ready? ● fat-jar とすることで、依存性を自己完結し、独立し たサービスとして作りやすくなる – 複数アプリのデプロイを強制的に禁止できる ● もちろん fat-jar = Microservices ではなく、実際に はいろいろな仕組み(Service Discovery など)が必 要になる
  • 8. 2015-05-30(土) 第十一回 #渋谷java 8 WildFly Swarm 現状 ● Java EE API として JAX-RS, CDI, JPA, JMS が利用可 – EJB, WebSocket, JSF など、主要 API にも未サポートのものあり – ちょっとした API サーバは作れそう ● 以下のような起動方法が可能 – java -jar app-swarm.jar – mvn wildfly-swarm:run – IDE > Run ● プロダクション投入はおすすめできない – 今のところ機能不足感が否めない。また、現在開発中の Alpha2-SNAPSHOT で Alpha1 とで API が変わっており、今後もいろいろと変更されそう(な予感)
  • 9. 2015-05-30(土) 第十一回 #渋谷java 9 WildFly Swarm で挙がっている要望例 ● Gradle など、Maven 以外のサポート – https://github.com/wildfly-swarm/wildfly-swarm/issues/5 ● 現在は Maven プラグインが必須 ● Netflix OSS サポート – https://github.com/wildfly-swarm/wildfly-swarm/issues/29 ● 何かアイデアがあれば、是非 issue 登録を! – https://github.com/wildfly-swarm/wildfly-swarm/issues
  • 10. 2015-05-30(土) 第十一回 #渋谷java 10 デモ ● JAX-RS + CDI + JPA の単純なアプリケーション – https://github.com/emag/wildfly-swarm-quickstarts/tree/master/jaxrs-cdi-jpa ● 2015-05-30 現在、Alpha1 は CDI, JPA が使えず、 対応した Alpha2 もまだリリースされていないので、 自分で master ブランチの Alpha2-SNAPSHOTを インストールする必要あり $ git clone https://github.com/wildfly-swarm/wildfly-swarm $ mvn install
  • 11. 2015-05-30(土) 第十一回 #渋谷java 11 デモ ● Java EE な部分(JAX-RS) @ApplicationScoped @Path("/employees") public class EmployeeController { @Inject private EmployeeService employeeService; @GET @Produces(MediaType.APPLICATION_JSON) public List<Employee> findAll() { return employeeService.findAll(); }
  • 12. 2015-05-30(土) 第十一回 #渋谷java 12 デモ ● Java EE な部分(CDI) @ApplicationScoped @Path("/employees") public class EmployeeController { @Inject private EmployeeService employeeService; @GET @Produces(MediaType.APPLICATION_JSON) public List<Employee> findAll() { return employeeService.findAll(); }
  • 13. 2015-05-30(土) 第十一回 #渋谷java 13 デモ ● Java EE な部分(Service的なクラス) @ApplicationScoped public class EmployeeService { @Inject private EmployeeRepository employeeRepository; public List<Employee> findAll() { return employeeRepository.findAll(); }
  • 14. 2015-05-30(土) 第十一回 #渋谷java 14 デモ ● Java EE な部分(JPA) @ApplicationScoped public class EmployeeRepository { @PersistenceContext private EntityManager em; public List<Employee> findAll() { return em.createQuery( "SELECT e FROM Employee e", Employee.class) .getResultList(); }
  • 15. 2015-05-30(土) 第十一回 #渋谷java 15 デモ ● Java EE な部分(JPA の Entity) @Entity @Table(name = "employees") public class Employee implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ... }
  • 16. 2015-05-30(土) 第十一回 #渋谷java 16 デモ ● Java EE な部分は... @Entity @Table(name = "employees") public class Employee implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; ... } 何の変哲もなし。 ふつうの Java EE
  • 17. 2015-05-30(土) 第十一回 #渋谷java 17 デモ ● WildFly Swarm 独自の部分(ここで色々設定) public class App { public static void main(String[] args) throws Exception { Container container = new Container(); container.subsystem(new DatasourcesFraction() ... ); container.start(); JAXRSDeployment jaxRsDeployment = new JAXRSDeployment(container); ... container.deploy(jaxRsDeployment); } }
  • 18. 2015-05-30(土) 第十一回 #渋谷java 18 デモ ● アプリケーション実行 その1 – java -jar app-swarm.jar ● mvn package すると <app-name>-swarm.jar という fat- jar ができる $ java -jar target/jaxrs-cdi-jpa-1.0.0-swarm.jar <date> INFO [org.jboss.msc] (main) JBoss MSC version 1.2.4.Final <date> INFO [org.jboss.as] (MSC service thread 1-8) WFLYSRV0049: ... ...
  • 19. 2015-05-30(土) 第十一回 #渋谷java 19 デモ ● アプリケーション実行 その2 – mvn wildfly-swarm:run ● WildFly Swarm Maven プラグイン提供の goal $ mvn wildfly-swarm:run [INFO] Scanning for projects... ... <date> INFO [org.jboss.msc] (main) JBoss MSC version 1.2.4.Final <date> INFO [org.jboss.as] (MSC service thread 1-8) WFLYSRV0049: ... ...
  • 20. 2015-05-30(土) 第十一回 #渋谷java 20 デモ ● アプリケーション実行 その3 – IDE > Run ● IDE から main() 指定で実行できる
  • 21. 2015-05-30(土) 第十一回 #渋谷java 21 デモ ● API にアクセス $ curl localhost:8080/employees | jq . ... [ { "name": "emp01", "id": 1 }, { "name": "emp02", "id": 2 } ]
  • 22. 2015-05-30(土) 第十一回 #渋谷java 22 個人的な感想 ● Java EE を fat-jar で動かせるのが単純にうれしい – Spring Boot を触って、正直うらやましかった。。 ● WildFly ダウンロード, アプリデプロイは正直めんどくさい。。 ● WildFly の機能(Java EE API, 設定関連)を完全に は扱えていないので、今後に注目したい ● とにかく応援したい
  • 23. 2015-05-30(土) 第十一回 #渋谷java 23 参考 ● GitHub – https://github.com/wildfly-swarm/wildfly-swarm ● WildFly Swarm Initial Release(blog) – http://wildfly.org/news/2015/05/05/WildFly-Swarm-Released/ ● WildFly Swarm: Building Microservices with Java EE – http://blog.arungupta.me/wildfly-swarm-microservices-javaee/