SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaプログラマーのための実践「Vert.x」

Vert.xによる簡単なRESTアプリケーションの作成

Javaプログラマーのための実践「Vert.x」 第3回

起動してみます

 環境変数の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についても少し触れられればと考えています。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Javaプログラマーのための実践「Vert.x」連載記事一覧

もっと読む

この記事の著者

リョウジ(株式会社DMM.comラボ)(リョウジ)

DMM.comのプラットフォームにおける主要アーキテクチャに関しての技術研究開発を担当。 非同期のメッセージ&キューの導入、Vert.xフレームワークを採用し社内の基盤を整備等、 高負荷対策・可用性の高いアーキテクチャの開発・設計など幅広く活躍。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8712 2015/06/08 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー