インフラ技術者向け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/
  • Google
  • Stackoverflow
  • nekopさんのブログ
    • http://nekop.hatenablog.com

参考になるサイト

  • JBossコミュニティ
    • http://www.jboss.org/
      • JBossファミリーのプロダクトがいっぱい
      • 基本的にRedHat社員がleadをしていて、わりと活発
    • フォーラム
      • https://developer.jboss.org/en/products/eap
      • 昔はEAPについて聞く場所はなかったですが、最近はここで聞いていいみたいです。

コミュニティ

  • サブスクリプションがあれば、販売元への問い合わせができます。
  • 問い合わせに必要なもの
    • 環境(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を出力可能

実際にアプリを動かすために必要

なにかあれば