CometDを試す
背景はともかく、CometDに興味を持ったのでまずは使ってみることに。
Primerのページによると、Maven で scaffold 見たいなものを作れるようになっているが、この日記を書いた時点でのバージョンでは少し出力が異なっていたので、Primer をなぞる形で自分が実行した内容をメモしておく。
まずは、以下の通りにmvnコマンドを実行する。
$ mvn archetype:generate -DarchetypeCatalog=http://cometd.org ... Choose archetype: 1: http://cometd.org -> cometd-archetype-dojo-jetty6 (1.1.2 - CometD archetype for creating a server-side event-driven web application) 2: http://cometd.org -> cometd-archetype-jquery-jetty6 (1.1.2 - CometD archetype for creating a server-side event-driven web application) 3: http://cometd.org -> cometd-archetype-dojo-jetty7 (1.1.2 - CometD archetype for creating a server-side event-driven web application) 4: http://cometd.org -> cometd-archetype-jquery-jetty7 (1.1.2 - CometD archetype for creating a server-side event-driven web application) Choose a number: :
ここで、jetty のバージョンと、JavaScript ライブラリとして dojo/jQuery の組み合わせの選択をする。なお、括弧内の1.1.2という数字はCometDのバージョンのようだけど、この直後に2.0.0の選択もできるようになっているのであまり意味はないかも。
で、今回は4番を選択することにする。jQueryを普段使っているのと、なるべく最新を選択したいから。
そすると、CometDのバージョンの選択をせまられるので、こちらも最新の2.0.0を選択する。
Choose a number: : 4 Choose version: 1: 1.1.2 2: 2.0.0 Choose a number: : 2
あとは、groupId とかを聞かれるので適当に入力し、確認して、'BUILD SUCCESSFUL'が出ればOK。
Define value for property 'groupId': : org.cometd.primers Define value for property 'artifactId': : jquery-jetty7-primer Define value for property 'version': 1.0-SNAPSHOT: Define value for property 'package': org.cometd.primers: Confirm properties configuration: groupId: org.cometd.primers artifactId: jquery-jetty7-primer version: 1.0-SNAPSHOT package: org.cometd.primers cometdVersion: 2.0.0 jettyVersion: 7.1.5.v20100705 Y: [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL [INFO] ------------------------------------------------------------------------
Primerにあるのと同じようにディレクトリの状況を確認すると以下のような感じ。
$ cd jquery-jetty7-primer $ tree . |-- pom.xml `-- src `-- main |-- java | `-- org | `-- cometd | `-- primers | |-- BayeuxInitializer.java | `-- HelloService.java `-- webapp |-- WEB-INF | `-- web.xml |-- application.js `-- index.jsp
引き続いて
$ mvn install
で、コンパイルして環境を整える。
実行してできたディレクトリ構成は以下の通り。必要なものをとりあえずすべて集めきてくれるようである。
$ cd target/jquery-jetty7-primer-1.0-SNAPSHOT $ tree . |-- META-INF |-- WEB-INF | |-- classes | | `-- org | | `-- cometd | | `-- primers | | |-- BayeuxInitializer.class | | `-- HelloService.class | |-- lib | | |-- bayeux-api-2.0.0.jar | | |-- cometd-java-common-2.0.0.jar | | |-- cometd-java-server-2.0.0.jar | | |-- jetty-continuation-7.1.5.v20100705.jar | | |-- jetty-servlets-7.1.5.v20100705.jar | | `-- jetty-util-7.1.5.v20100705.jar | `-- web.xml |-- application.js |-- index.jsp |-- jquery | |-- jquery-1.4.2.js | |-- jquery.cometd-ack.js | |-- jquery.cometd-reload.js | |-- jquery.cometd-timestamp.js | |-- jquery.cometd-timesync.js | |-- jquery.cometd.js | `-- jquery.json-2.2.js `-- org |-- cometd | |-- AckExtension.js | |-- ReloadExtension.js | |-- TimeStampExtension.js | `-- TimeSyncExtension.js `-- cometd.js
元のディレクトリに戻って
$ mvn jetty:run
とすることで、サーバを実行できる。
これで、http://localhost:8080/jquery-jetty7-primer をブラウザで開くと
Server Says: Hello, World CometD Connection Established
のように表示される。Primerにある結果とは、出力順が違うようであるけれど、多分それはタイミングの問題とかかもしれない。
まずは、このscaffoldのソースを参考にしつつ、CometDを理解することにする。