Javaのサンプルでもいいのですが、多言語対応がウリの1つで、Scalaでも書けるということなので、せっかくだからScalaを使ってみたいと思います。
使用する Vert.x のバージョンは現在最新の 2.1RC3 を使います。
Vert.x のインストール
公式サイトの手順を参考に進めます。
2.1RC3のダウンロード後、解凍する。
$ tar -zxf ~/Downloads/vert.x-2.1RC3.tar.gz $ ~/vert.x-2.1RC3/bin/vertx version 2.1RC3 (built 2014-04-02 10:07:26)
Scala モジュールのインストール
2.1RC3の時点では、 Scala は標準では使えず、別途言語モジュールとして提供されているようです。
詳しくは知らないですが、 Vert.x Module Registry に
io.vertx~lang-scala~1.0.0が登録されているので、どうやらこれのようです。
公式のモジュールマニュアルを参考にインストールしてみます。
$ ~/vert.x-2.1RC3/bin/vertx install io.vertx~lang-scala~1.0.0 Attempting to install module io.vertx~lang-scala~1.0.0 Downloading io.vertx~lang-scala~1.0.0. Please wait... Downloading 100% Module io.vertx~lang-scala~1.0.0 successfully installed Succeeded in installing module
どうやらインストールできたっぽい。
サンプルの実行
Vert.x ExamplesとしてサンプルがGitHubに公開されているので、 Scala の Route Match を動かしてみたいです。
$ git clone https://github.com/vert-x/vertx-examples.git $ cd vertx-examples/src/raw/scala/ $ ~/vert.x-2.1RC3/bin/vertx run route_match/RouteMatchExample.scala Failed in deploying verticle java.lang.ClassNotFoundException: route_match/RouteMatchExample.scala at org.vertx.java.platform.impl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:127) at org.vertx.java.platform.impl.ModuleClassLoader.loadClass(ModuleClassLoader.java:108) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.vertx.java.platform.impl.java.JavaVerticleFactory.createVerticle(JavaVerticleFactory.java:55) at org.vertx.java.platform.impl.DefaultPlatformManager$21.run(DefaultPlatformManager.java:1723) at org.vertx.java.core.impl.DefaultContext$3.run(DefaultContext.java:175) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:370) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) at java.lang.Thread.run(Thread.java:724) Failed in deploying verticle java.lang.ClassNotFoundException: route_match/RouteMatchExample.scala at org.vertx.java.platform.impl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:127) at org.vertx.java.platform.impl.ModuleClassLoader.loadClass(ModuleClassLoader.java:108) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at org.vertx.java.platform.impl.java.JavaVerticleFactory.createVerticle(JavaVerticleFactory.java:55) at org.vertx.java.platform.impl.DefaultPlatformManager$21.run(DefaultPlatformManager.java:1723) at org.vertx.java.core.impl.DefaultContext$3.run(DefaultContext.java:175) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:370) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) at java.lang.Thread.run(Thread.java:724)module のインストールがうまくいってない気がしてくるエラーです。
http://vertx.io/mods_manual.html をもう少し丁寧に読んでみると、 lang-impl に書いてあることが参考になりそうでした。
~/vert.x-2.1RC3/conf/langs.properties を覗くと
groovy=io.vertx~lang-groovy~2.0.0-final:org.vertx.groovy.platform.impl.GroovyVerticleFactoryのような記述があり、これにならって Scala の設定も書けば動きそうな気がしてきます。
# ~/vert.x-2.1RC3/conf/langs.properties に以下を追加 scala=io.vertx~lang-scala~1.0.0:org.vertx.scala.platform.impl.ScalaVerticleFactory .scala=scala
再度サンプルを実行。
$ ~/vert.x-2.1RC3/bin/vertx run route_match/RouteMatchExample.scala Compiling route_match/RouteMatchExample.scala as Scala script Starting route_match/RouteMatchExample.scala Succeeded in deploying verticleうまく実行されたので、 localhost:8080 を開いて動作を確認するところまでできました。
とりあえず動かすとこまでできたので、次はパフォーマンスの検証などしてみたいです。
0 件のコメント:
コメントを投稿