Acroquest Technology社のElasticsearchハンズオンに行ってきた #elastichandson
Elasticsearch、まったく触ったこと無くてそろそろ触ろうかなーと思ってた矢先にハンズオンがあることを知って即申し込んで行ってきました。
来てる #elastichandson pic.twitter.com/IoeO0MNJky
— うらがみ (@backpaper0) 2016年3月18日
ハンズオンの概要
Acroquest Technology社が業務で収集した実データをベースにした大量のデータを使ってLogstash/Elasticsearch/Kibanaのインストールから入門的な操作を行いました。
感想
レベル的には先述の通り、入門!って感じでしたが、丁寧な資料や実データをもとにして手を動かしたのもあって次の学習ステップを想像しやすくて良かったです。
個人的にはElasticsearchには興味があったんだけど、 LogstashとかKibanaとかナニモノなのかよく分からないし、 興味はあるけど自分のリソース注ぎ込みまくるほど(当時は)優先順位は高くなかったので、 そういった意味でも触れる機会を得られて助かりました。
結び
私のようにElasticsearch/Logstash/Kibanaに入門したいけど何から手をつけたら良いのか分からないといった方は参加してみると良いのではないでしょうか。
Acroquest Technology社の皆様、 楽しく有用なハンズオンをありがとうございました!!!
Java EEアプリケーションで起動時になにかしらの処理をする方法
いくつか考えてみました。
- HttpServlet.init をオーバーライドする(Servlet)
- ServletContainerInitializer の実装クラスを作る(Servlet)
- Singleton セッションビーンに @Startup を付けて @PostConstructed を付けたメソッドを定義する(EJB)
- Extension の実装クラスを作ってライフサイクルイベントをハンドリングするオブザーバーメソッドを作る(CDI)
- @ApplicationScoped なCDI管理ビーンを作って @Initialized(ApplicationScoped.class) なイベントをハンドリングするオブザーバーメソッドを作る(CDI)
他にもあったら教えてください!
で、個人的には
- Servlet APIを直接使うのは可能な限り避けたい
- EJBは使わない
という感じなのでCDIで実現するのが良さそうです。
起動時処理に Extension を使うのはなんか違う感じがしますし、 @Initialized(ApplicationScoped.class) を使った方法が好みです。
具体的にはこんなコードです。
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Initialized;
import javax.enterprise.event.Observes;
@ApplicationScoped
public class Hoge {
public void handle(@Observes @Initialized(ApplicationScoped.class) Object event) {
//ここに起動時にしたい処理を書く
}
}
CDI以外のサンプルも含んだコードは次のURLです。