vertx は巷で最近話題であろう(というか以前にちょっと小耳にはさんだ程度)Node.js の様な振る舞いをする Java環境で動作するアプリケーションである。
詳しい解説など、下記のサイト等を参考になると思う。
何はともあれ、Javaをソースから弄るなどここ数年ほぼ皆無だったこともあり不明な点はあまり解説しない(というか、出来ない)のであしからず。
今回は、更に、MongoDB を使ってデータ管理を行う事を前提にしたいため、色々いたずらした。勿論、JavaScriptコードにて。
vertxへmoduleとしてmongodbへの接続を設定する必要があり、英文ドキュメントをあさりながらの実装だったので、その際に起きた事を箇条書き程度で留める。
下記のマニュアルにも記載されている通りであるが、
http://vertx.io/mods_manual.html#what-is-a-vertx-module
container.deployModule(…)
このメソッドで指定するらしい。
また、別途、mod-mongo-persistor を gitでcloneする。 (※注意 これは結果としてビルドの必要がなかったようだ)
そのとき、グレードルラッパーが付属しているので、
./gradlew eclipse
として、ビルド。
build ディレクトリが出来るので、覗いてみると、
− build
├ classes
├ dependency-cache
├ mods
├ reports
├ resources
├ test-results
└ tmp
と出来上がっていた。
mods の中を見てみると、下記のディレクトリ構成&ファイルが仕上がっていた。
ー io.vertx~mod-mongo-persistor~2.1.1-SNAPSHOT
├ lib
├ mod.json
└ org
libの中には、mongo-java-driver-2.11.1.jar という jar ファイルが出来ていたので、
最初はこれが必要かと思い、vertx/lib/ の中にコピーしておいたが、結果として必要とされ無かったようだ。
上記の内容からして、下記のように JavaScript で実装。
container.deployModule(‘io.vertx~mod-mongo-persistor~2.1.1-SNAPSHOT’);
実行したコードはこちら(app.js)
var vertx = require('vertx');
var container = require('vertx/container');
var console = require('vertx/console');
var server = vertx.createHttpServer();
container.deployModule('io.vertx~mod-mongo-persistor~2.1.1-SNAPSHOT');
server.requestHandler(function(request) {
console.log('An HTTP request has been received');
var str = '';
request.headers().forEach(function(key, value) {
str = str.concat(key, ': ', value, 'n');
});
request.response.end(str);
}).listen(8080, 'localhost');
実行…
$ vertx run app.js
Succeeded in deploying verticle
Downloading io.vertx~mod-mongo-persistor~2.1.1-SNAPSHOT. Please wait...
Downloading 100%
Module io.vertx~mod-mongo-persistor~2.1.1-SNAPSHOT successfully installed
vertx run app.js を実行したところ、数秒で Downloading … が。
「お、これは自動的に何か設定される?」
自動的にインストールされたらいしい。
ディレクトリを確認してみると、
vertx/mods/io.vertx~mod-mongo-persistor~2.1.1-SNAPSHOT
という今まで無かったディレクトリが勝手に出来上がっているではないか。
何処からDownloading? おそらくどこかのリポジトリからであろうが、なんとも不思議な感じが。結果として、ビルドする必要が無かったと思われる。
(その後、先ほどのディレクトリを丸ごと削除した後に、vertx/mods 以下も全て削除してもDownloading… が)
良く、ドキュメントを理解しなさいという事のようだ。
※そういえば、最初に app.js を実行した際に同様に、Downloading … が始まり、このときは sys-mods/io.vertx~lang-rhino~2.0.0-final が勝手にインストールされていた。
とりあえずmongodbを扱う「前提」が出来たようだが、
おそらく、ここからが長い。
気長に進めるとしよう。(続きはこちら)
vertx も バージョン 1.x と 2.x とでは、大きく変わっている感じを受ける。
JavaScriptコードでいうと、
1.x は
load('vertx.js');
2.x は
var vertx = require('vertx');
と多くのサイトで 1.x の解説となっている事から、この辺りには根本的に配慮が必要そうである。
記事の内容が古くなっているものもあり、適宜アップデートされる場合がございます。