起動してみます
環境変数のVERTX_MODSを忘れずに設定します。
set VERTX_MODS=build\mods
vertxコマンドで起動します。このときは-confオプションでアプリケーション用の設定ファイル(今回はconf.json)の指定を行います。
vertx run startup.grooby -conf conf.json
[address:jdbc, driver:org.h2.Driver, url:jdbc:h2:mem:example, portNo:8080]
Succeeded in deploying verticle
MLog clients using java 1.4+ standard logging.
Initializing c3p0-0.9.5-pre3 [built 22-May-2013 08:30:06 -0700; debug? true; trace: 10]
jdbc ready
my-module ready
Initializing c3p0 pool... com.mchange.v2.c3p0.ComboPooledDataSource [ acquireIncrement -> 5, acquireRetryAttempts -> 30,
acquireRetryDelay -> 1000, autoCommitOnClose -> false, automaticTestTable -> null, breakAfterAcquireFailure -> false, checkoutTimeout -> 0, connectionCustomizerClassName -> null, connectionTesterClassName -> com.mchange.v2.c3p0.impl.DefaultConnectionTester, dataSourceName -> 1hgez2o981x8ibba1lhomfp|315a03f4, debugUnreturnedConnectionStackTraces -> false, description -> null, driverClass -> org.h2.Driver, factoryClassLocation -> null, forceIgnoreUnresolvedTransactions -> false, identityToken -> 1hgez2o981x8ibba1lhomfp|315a03f4, idleConnectionTestPeriod -> 0, initialPoolSize -> 3, jdbcUrl -> jdbc:h2:mem:example, maxAdministrativeTaskTime -> 0, maxConnectionAge -> 0, maxIdleTime -> 0, maxIdleTimeExcessConnections -> 0, maxPoolSize -> 20, maxStatements -> 0, maxStatementsPerConnection -> 0, minPoolSize -> 5, numHelperThreads -> 3, preferredTestQuery -> null, properties -> {user=******, password=******}, propertyCycle -> 0, statementCacheNumDeferredCloseThreads -> 0, testConnectionOnCheckin -> false, testConnectionOnCheckout -> false, unreturnedConnectionTimeout -> 0, userOverrides -> {}, usesTraditionalReflectiveProxies -> false ]
http open.
http open.
正常に起動できれば、上記のように出力されるはずです。「http open」が2回出力されていますが、これはstartup.groovyでmy-moduleを2インスタンス起動しているため、my-moduleの内側でデプロイされるRestVerticleも2インスタンス起動されるからです。下図に簡易な形式ですがデプロイ時の各スレッドの動きのイメージを図示してみました。作成したプログラムはそんなに複雑なソースコードではありませんが、デプロイするだけでも、各モジュール、スレッドが意外と複雑な動きをしているのが把握できるかと思います。
動作確認
まずはH2DBのWebコンソールでテーブルを見てみましょう。ブラウザでhttp://localhost:8082/にアクセスすればログイン画面が表示されます。
JDBC URL部分を正しく入力して「接続」すれば、下のような画面でテーブルなどを確認できます。
まずはレコードを登録するためにPOSTでリクエストを送信して成功すると、201 Createdが返ってきます。
テーブルの中身を見てみると、パラメータで渡したレコードが作成されていることが確認できます。
次にパスワードを変更するために、PUTでリクエストを投げてみます。成功すると 200 OK が返ってきます。
テーブルのパスワードが更新されていることを確認します。
それぞれ、想定した動作になりました。同様にGET、DELETEの動作も確認してみてください。
まとめ
今回は簡単なRESTアプリケーションを作成してみました。このアプリケーションではURLのパスも完全無視、暗号化もしていないなど、実務に使用するにはかなり問題のあるものですが、何らかの参考になれば幸いです。
次回は、DMMが実際にどのようなアプリケーションを開発したのか。ベストプラクティスとまではいきませんが、開発事例として簡単にご紹介する予定です。また、6月22日にリリース予定のVert.x 3.0についても少し触れられればと考えています。






