狠狠撸

狠狠撸Share a Scribd company logo
WildFly Swarmではじめる
「パーツとしてのJavaEE」
2015/07/03 @koduki
JavaEEコンテナの世界観
● 従来のJavaEEコンテナのインフラは全てを集約する
● セッションレプリケーション
● クラスタ
● 負荷分散
● 名前解決
● 無停止デプロイ
● 効率化のため一つのシステムに複数のアプリをデプロイ
JavaEEコンテナの世界観
GlassFish/Weblogic/WildFly
App レプリケーション
負荷分散監視
従来のJavaEEコンテナの限界
● ブルーグリーンデプロイメントとかを考えるとクラスタリン
グ機能が弱い
● すべてをJavaEEで完結するのは難しい(Apache, KVS,
ローカルファイル)
-> Dockerとかと組み合わせやすい、もっとシンプルなコン
テナがほしい
WildFly Swarm
● SpringBootのJavaEE版
● WildFlyのコンポーネントを組み合わせて実行可能なJar
を作る
● 内部的にはArquillianと同様にShrinkwrapを使って
るっぽい
● DockerやConsulなどJavaEE以外の仕組みでクラス
タリング、スケジューリングする事が前提
WildFly-Swarmの世界観
App(WildFly)
レプリケーション(Redis)
負荷分散
(mod_mruby)
監視(Zabbix)
WildFly Swarmのメリット
● JavaEEコンテナにすべての機能を載せない
● アプリケーション単位でプロセスが立上がるので、リ
ソース管理や運用が分かりやすい
● デーモン化しないので、Dockerとかと組み合わせや
すい
● ローカル端末にアプリケーションコンテナのインストー
ルが不要
WildFly Swarmの世界観
● JavaEEコンテナにすべての機能を乗せない
● DockerやConsulなどの複合システムにおいて、アプ
リケーション実行環境のみを提供する「パーツ」に。
● JavaEEコンテナで完結する世界よりは複雑だが、
JavaEEとそれ以外が共存する世界よりは統合され
ている
類似のアプローチ
● Payara Micro(GlassFish)
● Liberty Profile(WebSphere)
対極のアプローチ
● 次期Weblogic 12cのマルチテナント
● 今までのJavaEEらしさを追及
● JavaEEで完結するなら、OS仮想化やDocker使うよ
りも簡単で効率的
現状のWildFly Swarm
● WildFly 9ベース。1.0.0.Alpha3
● CDI, JAX-RS, JPAなどは動く
● JSFなど、正常動作しない機能もまだ多い
デモ
● JAX-RS, CDI, JPA(h2database)を使ったシンプル
なデモ
● mavenやNetBeansから簡単に実行可能
● コードは下記を使用
○ https://github.com/koduki/example-wildfly-
swarm/tree/0.1.0
JAX-RS
● JAX-RSとCDIを使ったありふれたリソース
@ApplicationScoped
@Path("/employees")
public class EmployeeResource {
@Inject
private EmployeeService employeeService;
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Employee> findAll() {
List<Employee> results = employeeService.findAll();
System.err.println(results);
return results;
}
}
CDI
● CDIを使った良くあるサービスクラス
@ApplicationScoped
public class EmployeeService {
@Inject
EntityManager em;
public List<Employee> findAll() {
return em.createQuery("SELECT e FROM Employee e", Employee.
class).getResultList();
}
}
JPA
● LombokとJPAを使った普通のEntity
@Entity
@Data
@AllArgsConstructor
public class Employee implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
public Employee() {}
}
Swarm固有の部分 - bootstrap
● mainメソッドにコンテナの起動を記述
public class Main {
public static void main(String[] args) throws Exception {
Container container = new Container();
JAXRSDeployment deployment = ….
container.start().deploy(deployment);
}
Swarm固有の部分 - pom.xml - 1
● pom.xmlにてpackageはjarに設定
● MavenはNetBeans 8.02組み込みのバージョンでは
古いので、3.2以上を個別にインストールするしないと
エラーになる
<packaging>jar</packaging>
<name>example-wilfly-swarm</name>
<properties>
<version.wildfly-swarm>1.0.0.Alpha3</version.wildfly-swarm>
<maven.min.version>3.2.1</maven.min.version>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.source>1.8</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Swarm固有の部分 - pom.xml - 2
● wildfly-swarm-pluginに起動するクラスを指定
<plugin>
<groupId>org.wildfly.swarm</groupId>
<artifactId>wildfly-swarm-plugin</artifactId>
<version>${version.wildfly-swarm}</version>
<configuration>
<mainClass>cn.orz.pascal.example.wilfly.swarm.Main</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
アプリケーションの実行
● mvn packageで${app-name}-swarm.jarができる
● java -jar ${app-name}-swarm.jarで実行
● IDEからの起動は普通にbootstrapになるMainクラス
を実行するだけ
● WildFlyのインストール等は不要
まとめ
● SpringBoot的なJavaEEコンテナ
● jarがあれば動くので配布は簡単
● JavaEEでの完結をあきらめて、エコシステムで動く
「パーツ」として使う
● Dockerとの相性は良さそう
● まだまだ発展途上

More Related Content

What's hot (19)

PDF
闯补惫补て?1から10まて?书いた话(蝉补苍颈迟颈锄别诲)
Tokuhiro Matsuno
?
PDF
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
Norito Agetsuma
?
PDF
Java Batch 仕様 (Public Review時点)
Norito Agetsuma
?
PDF
Java SE 再入門
minazou67
?
PDF
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Hiroyuki Ohnaka
?
PDF
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
?
PDF
Advanced database monitoring in modern java
Chihiro Ito
?
PDF
jjugccc2018 app review postmortem
tamtam180
?
PDF
テストゼロからイチに进むための戦略と戦术
Y Watanabe
?
PDF
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
闯补惫补女子部
?
PDF
PHP in Java -Quercus- によるレカ?シーマイク?レーション実例 #jjug_ccc #ccc_r12
Ryuji Yamashita
?
PDF
Java EE 再入門
minazou67
?
PDF
惭补惫别苍基础
Toshio Takiguchi
?
PPTX
はじめてのSpring Boot
なべ
?
PDF
厂辫谤颈苍驳の今
Kazuyuki Kawamura
?
PPTX
JavaOne2015報告会 Java EE アップデート #j1jp
Norito Agetsuma
?
PPTX
20140518 JJUG MySQL Clsuter as NoSQL
Ryusuke Kajiyama
?
PDF
マイクロフレームワーク贰苍办补苍(と碍辞迟辞飞补谤颈)ではじめる搁贰笔尝駆动开発
Yoshitaka Kawashima
?
PDF
Sd Loader Seasar Con2009 White
Akio Katayama
?
闯补惫补て?1から10まて?书いた话(蝉补苍颈迟颈锄别诲)
Tokuhiro Matsuno
?
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
Norito Agetsuma
?
Java Batch 仕様 (Public Review時点)
Norito Agetsuma
?
Java SE 再入門
minazou67
?
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Hiroyuki Ohnaka
?
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
?
Advanced database monitoring in modern java
Chihiro Ito
?
jjugccc2018 app review postmortem
tamtam180
?
テストゼロからイチに进むための戦略と戦术
Y Watanabe
?
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
闯补惫补女子部
?
PHP in Java -Quercus- によるレカ?シーマイク?レーション実例 #jjug_ccc #ccc_r12
Ryuji Yamashita
?
Java EE 再入門
minazou67
?
惭补惫别苍基础
Toshio Takiguchi
?
はじめてのSpring Boot
なべ
?
厂辫谤颈苍驳の今
Kazuyuki Kawamura
?
JavaOne2015報告会 Java EE アップデート #j1jp
Norito Agetsuma
?
20140518 JJUG MySQL Clsuter as NoSQL
Ryusuke Kajiyama
?
マイクロフレームワーク贰苍办补苍(と碍辞迟辞飞补谤颈)ではじめる搁贰笔尝駆动开発
Yoshitaka Kawashima
?
Sd Loader Seasar Con2009 White
Akio Katayama
?

More from Hiroaki NAKADA (9)

PDF
Performance Monitoring with Java Flight Recorder on OpenJDK [DEV2406]
Hiroaki NAKADA
?
PDF
闯补惫补から使う厂肠补濒补
Hiroaki NAKADA
?
PDF
From document-to-code
Hiroaki NAKADA
?
PDF
How to make keynote like presentation with markdown
Hiroaki NAKADA
?
PDF
光のツール贰虫肠别濒に闇搁耻产测の力を注いでみた
Hiroaki NAKADA
?
ODP
Legacycode01
Hiroaki NAKADA
?
PDF
Working effectively with legacy code chapter1
Hiroaki NAKADA
?
PDF
Rubykaigi09 Webでるりまを検索するn個の方法
Hiroaki NAKADA
?
PDF
闯补惫补厂肠谤颈辫迟によるゲーム开発
Hiroaki NAKADA
?
Performance Monitoring with Java Flight Recorder on OpenJDK [DEV2406]
Hiroaki NAKADA
?
闯补惫补から使う厂肠补濒补
Hiroaki NAKADA
?
From document-to-code
Hiroaki NAKADA
?
How to make keynote like presentation with markdown
Hiroaki NAKADA
?
光のツール贰虫肠别濒に闇搁耻产测の力を注いでみた
Hiroaki NAKADA
?
Legacycode01
Hiroaki NAKADA
?
Working effectively with legacy code chapter1
Hiroaki NAKADA
?
Rubykaigi09 Webでるりまを検索するn個の方法
Hiroaki NAKADA
?
闯补惫补厂肠谤颈辫迟によるゲーム开発
Hiroaki NAKADA
?
Ad

Recently uploaded (13)

PDF
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
PDF
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
PDF
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
PDF
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
PDF
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
PDF
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
PDF
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
第3回テ?シ?タル理学疗法学会のシンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」での话题提供
Matsushita Laboratory
?
論文紹介:AutoPrompt: Eliciting Knowledge from Language Models with Automatically ...
Toru Tamaki
?
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
?
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
?
安尾 萌, 北村 茂生, 松下 光範. 災害発生時における被害状況把握を目的とした情報共有システムの基礎検討, 電子情報通信学会HCGシンポジウム2018...
Matsushita Laboratory
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
?
渔船に搭载されている电子装备と渔法について冲痴搁颁海洋学研究会冲海の尝罢会発表资料
Yuuitirou528 default
?
論文紹介:Unbiasing through Textual Descriptions: Mitigating Representation Bias i...
Toru Tamaki
?
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
?
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
?
第3回デジタル理学疗法研究会学术大会シンポジウム「デジタル理学疗法の组织活用:教育?管理?研究を繋ぐ新たな地平」の讲演资料.
Matsushita Laboratory
?
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
?
安尾 萌, 藤代 裕之, 松下 光範. 協調的情報トリアージにおけるコミュニケーションの影響についての検討, 第11回データ工学と情報マネジメントに関する...
Matsushita Laboratory
?
Ad

WildFly Swarmではじめる「パーツとしてのJavaEE」