BlazeDS 4.7.1をビルドしてみる

おひさしぶりですこんばんは。
3か月ぶりの更新になったわけですが、今回はBlazeDSをソースからBuildしようと思います。

半月ほど前の8月半ばにBlazeDSの脆弱性(CVE-2015-3269)が報告されました。Adobe LiveCycle Data Servicesを使用している場合は公式サイトのPatchを取り込めばよいですが、そうでない場合はBuildするかMavenに登録されているJarを取り込むかのいずれかになります。
ただ、BlazeDSはOSSであり、現在はApacheで管理・運営されているのですが、他のApache系プロジェクトと比べると使用者にはあまりやさしい作りにはなっていません。
例えば、現時点(2015/09/04)では公式サイトでリリースしているのは4.7.0のみで対策版はMavenからのみだったり、MavenのものもJava 1.8が前提だったりします。

前々からBlazeDSの自前コンパイルに興味はあったのでこれを機会に簡単に纏めようと思います。
纏めるといってもやったことを淡々とコピペになりますけどね^_^;
やったことはREADMEに書いてある通りです。なわけで、この記事自体はおさらいです。

Continue reading “BlazeDS 4.7.1をビルドしてみる”

jgitでファイル変更内容を取得する

前回はjgitを使用して範囲内のCommit一覧を取得しました。今回は指定したCommit間の追加/修正/削除ファイル一覧を取得します。

流れとしては以下になります。

  1. Repositoryインスタンス作成
  2. RevWalkインスタンス作成
  3. DiffFormatterインスタンス生成とRepository設定
  4. 範囲となるRevCommit(始点、終点)インスタンス作成
  5. RevCommitからRevTreeインスタンス取得
  6. DiffFormatterでDiffEntry一覧を取得

Continue reading “jgitでファイル変更内容を取得する”

git logのrange指定をjgitで行う

前回の記事「git logのrange指定」で行ったことをJavaから行います。gitへのアクセスを一から書くと大変なので今回はjgitを使用します。

行うことの流れとしては以下の通り。

  1. Repositoryインスタンス作成
  2. RevWalkインスタンス作成
  3. 範囲となるRevCommit(始点、終点)インスタンス作成
  4. RevWalkにRevCommit(始点、終点)をmark
  5. RevWalkで範囲内のRevCommitを取得

Continue reading “git logのrange指定をjgitで行う”

QuartzをLog4j2で出力する

現在の最新版quartz-2.2.1に同梱しているjarにslf4jがあり、そのバインディングとしてslf4j-log4j12-1.6.6.jarが入っている。このバインディングはlog4j1系のもので今使っているlog4j2には合わないんです。

slf4jの最新版を落としてきてライブラリを確認してもlog4j1系向けしか入っていない。うん。どうするかなと思いlog4j2の同梱jarを調べたらlog4j-slf4j-impl-2.0-rc2.jarというそれっぽいのを発見。ついでに公式にも情報があったので問題なさげかな、と。

ここからは余談。
slf4jは入口として実装ライブラリを呼ぶ仕組み。だけれど実装ライブラリ側が先行した場合に実装ライブラリ開発側がslf4jとのバインディングやアダプタを考えないといけないのは大変だなぁと思うわけですよ。当初は「slf4jがlog4jもサポートしているよ」だったものから、slf4jがデファクトスタンダードになって「slf4jの対応から遅れるとloggingのシェアを落とすことになる…」って戦々恐々しなきゃいけなくなるみたいな…あくまでも妄想ですが。

Javaのスケジュール処理

処理を定期的に実行したい、とある時間帯にのみ実行させたいという要求があるときにTaskやらJobやらというのを実装しなきゃなーと思い始める。OSの機能で言えばcronがあるけれど極力OSの機能には頼らずJavaのみで動作するのを目指したいところ。

Javaのライブラリを探してみると2つほど発見。

今回(ニコ動関連のあれ)はデータの定期取得やら状況に合わせた取得頻度、タイミングをコントロールしたいわけだけれど秒単位のスケジューリングが必要になることも考えられる。ぱっと見たところquartzの方がフィージビリティがありそうだけれど、cron4jがパッと見た感じはできなさそうだったこと。

もう一つは情報量の差。quartzの方は昔からあるみたいだけれどcron4jは最近みたい。


何か困った時に情報量が多い方がやはり助かる。というわけでquartzで実装し始める宣言の記事でした。