package org.goldenport.g3.app import org.goldenport.g3._ import org.goldenport.g3.messages._ class HelloWorld extends G3Application { port("/") agent { case _ => "Hello World" } }
g3はメッセージフロー・フレームワークであり、g3プログラムはメッセージ・フローとして記述する。
HelloWorldでは、「port("/")」の後ろに「agent {…}」を記述している。これは、チャネル「port」の出力メッセージをエージェント「agent」の入力とし、エージェント「agent」の出力メッセージをチャネル「port」の出力とするという意味である。
チャネルportは、外部に公開されたチャネルでコマンドラインやHTTPで外部からアクセスすることができる。
エージェントagentは、メッセージを処理するScalaプログラムを記述するためのエージェント。Scalaのケースシーケンス句(PartialFunction)を記述する。Hello Worldでは、「すべての場合に"Hello World"」を出力する、というScalaプログラムが記述されている。
まとめると、Hello Worldは、外部に公開されたチャネル「/」にアクセスがあると、"Hello World"を返すという処理を行うプログラムである。
コマンドで実行
org.goldenport.g3.app.HelloWorldは、本体のjarに入れているので、特に設定なしで、そのまま実行することができる。
-g3.applicationスイッチにorg.goldenport.g3.app.HelloWorldを指定すると、g3フレームワーク上でorg.goldenport.g3.app.HelloWorldが実行される。-g3.applicationスイッチに続く「/」はorg.goldenport.g3.app.HelloWorldに対する引数で、実行するポートを指定している。この場合は、port("/")が実行されることになる。$ g3 -g3.application:org.goldenport.g3.app.HelloWorld / Hello World
実行の結果、「Hello World」がコンソールに表示された。
Webで実行
g3は、以下のように-g3.serverスイッチを指定することで、Jettyを用いてWebアプリケーションとして実行することができる。
$ g3 -g3.application:org.goldenport.g3.app.HelloWorld -g3.server
Jettyが起動され、g3サービスがWebとして公開される。使用するポートは7865である。
localhost:7865にブラウザでアクセスするとブラウザの画面に「Hello World」の文字が出力される。
g3はサーブレットを用意しているので、g3に組込みのJettyを用いなくても、サーブレットを直接TomcatなどのWebコンテナに登録して動作させることもできる。
ポイント
- g3アプリケーションは、メッセージフローでプログラムを記述する。
- g3アプリケーションは、そのままコマンドラインとWebアプリケーションのいずれの方式でも動作させることができる。
0 件のコメント:
コメントを投稿