インフラ技術者向けJBoss入門
自己紹介
國井 匡生(くにい まさお)
- エンジニア:現在ビズリーチのスタンバイ事業部でScalaを書いてます
- 前職:某先端技術株式会社
- もともとはJBossのサポートや機能追加開発等をしていました。
JBossについて軽く
JBossとは
- JBossと一口に言った場合は大体JBossEAPを指す
- 厳密にはJBossという何かがあるわけではないのでコミュニティとかJBossファミリのことになる
- EAP6はコミュニティ版であるJBoss AS7をベースにしている
- EAP7はJBoss ASの後継であるWildFlyがベースになる
- EAPとASやWildFlyの関係はRHELとFedoraの関係に似ている
JBossEAPの優位性
- もっとも聞かれた質問で、もっとも自問自答したこと
- 結論
- コスト:さほど変わらない
- サポート:すごく幸せになれるわけではない
- 機能:すごく幸せになれるわけではない
- 安定性:あまり使われない機能は基本的にバグがある
- 性能:他の商用製品より軽いといえば軽いけど
- JavaEEである必要性:特にない
- 良いところ:ソースが読める!これこそがプロプライエタリな製品を選ばない理由
15分間JavaEE
Forge
Forge
Scaffoldを作るツール
拡張することもできる
Forge
Forge単体でも動くけど
EclipseプラグインのJBoss toolsに入っている
Forge
コマンド数回でこんなscaffoldが出来上がる
Forge
もっと知りたい方は
チュートリアル
http://forge.jboss.org/documentation
add-onのインストールはこの辺
http://forge.jboss.org/addons
よくある設定
の前に
JBossの設定方法
大きく分けて3つ
- HTTP(WebConsoleとか)
- Native(CLIとか)
- XML
WebCosole
- 使いやすい
- 慣れてくると画面操作はだるい
- すべての設定ができるわけではない
- 変更するとHistoryが作られる
CLI
- 操作が独特
- 慣れてくると早くなるけど、面倒は面倒
- すべての設定ができる
- 変更するとHistoryが作られる
- CLIのGUI(!)がある
XML
- スキーマが不明
- 知っていれば楽
- すべての設定ができる
- 変更してもHistroyが作られない
standalone.xmlの見方
JBossの設定のモデルであるDMRにある程度則っている
- extensions:拡張(サブシステム)の宣言
- management:管理系の設定
- profile:サブシステム設定のセット(standaloneでは一個だけ。ドメインだと複数ある)。subystemの設定はextensionsと対になる感じ
- interfaces:使用するネットワークの設定
- socket-binding-group:ポートの設定
あと
- system-properiesとかpathsとかdeploymentsとかがある
おすすめ
- ベンダーはXML以外を推奨
- 最初の設定+わからない設定はCLI(のGUI)
- puppetとかansibleとか使うときはXMLで配る
モジュールという概念
Core service
Subsystems
Libraries
Applications
ここはすべてモジュール
モジュールはすべて独立している
(クラスローダが別になる)
よくある設定
Web
-
同時接続数
- max-connections
-
タイムアウト
-
システムプロパティorg.apache.coyote.ajp.DEFAULT_CONNECTION_TIMEOUT
-
データソース
- コネクションプール
-
min-pool-size
-
max-pool-size
-
- PreparedStatementCache
EJB
- Stateless Session Bean
-
max-pool-size
-
- MDB
-
max-pool-size
-
ActivationConfigProperty maxSession
-
- EJB Timer
- thread-pool default max-threads
Resouce-Adaptor
- max-connection
- min-connection
デモ&設定確認
デモアプリ
この辺
https://github.com/masao-kunii/basic-jms-app
https://github.com/masao-kunii/complicated-async-app
※Readmeは元にしたarchetypeのままなので無視してください
確認
ある程度はWebConsoleでも
http://localhost:9990
内部状態の大概のことはJBoss EAP付属のjconsoleで確認できる
${JBOSS_HOME}/bin/jconsole.sh(bat)
JBossで詰まったとき
- 公式ドキュメント
- https://docs.jboss.org/author/display/AS72/Documentation
- https://access.redhat.com/documentation/en-US/JBoss_Enterprise_Application_Platform/
- Stackoverflow
- nekopさんのブログ
- http://nekop.hatenablog.com
参考になるサイト
- JBossコミュニティ
- http://www.jboss.org/
- JBossファミリーのプロダクトがいっぱい
- 基本的にRedHat社員がleadをしていて、わりと活発
- フォーラム
- https://developer.jboss.org/en/products/eap
- 昔はEAPについて聞く場所はなかったですが、最近はここで聞いていいみたいです。
- http://www.jboss.org/
コミュニティ
- サブスクリプションがあれば、販売元への問い合わせができます。
- 問い合わせに必要なもの
- 環境(OS、バージョンなど)
- 何をしたいか
- 何が問題か
- 何を聞きたいか
- 設定ファイル
- (エラーになるのであれば)ログ
- (製品が疑わしい挙動をしている場合)reproducer
- 参考
- http://nekop.hatenablog.com/entry/20120323/1332469781
問い合わせ
Infinispan & Tattletale
Infinispan
InfinispanはJBossファミリのKVSなdatagrid製品
(商用版はJBoss Data Grid)
JBossEAP(JBossAS/Wildfly)はクラスタリング時のsession情報等をInfinispanを使って共有している
ので、無理やりアプリからKVSとして使うこともできる(サポート外だけど)
やってみる
TattleTale
依存性を解析
jboss-deployment-structure.xmlを出力可能
実際にアプリを動かすために必要
なにかあれば
deck
By kuniim
deck
- 1,487