http://sling.apache.org/

Apache Slingはコンテンツの保存先としてJavaコンテンツリポジトリ(JCR)を利用とするWebフレームワーク。Slingを利用することで、コンテンツを管理・アップデートできるRESTful APIを提供する。アプリケーションコンポーネントをOSGiバンドルやスクリプト、テンプレートといった形でコンテンツリポジトリ内に格納でき、OSGiのメリットを利用できるのも特徴となる。2009年6月、ASFのトップレベルプロジェクトに昇格している。 ASFがWebフレームワーク「Apache Sling 6」を公開、22ヶ月ぶりのリリース
Discover Sling in 15 minutes
Discover Sling in 15 minutes の手順に従って、早速このApache Slingを動かしてみた。環境はWindows7(32bit)
Start the Launchpad
org.apache.sling.launchpad-6-standalone.jar をC:\work
以下にダウンロード。
java -jar org.apache.sling.launchpad-6-standalone.jar
を実行してみると
14.10.2012 23:52:22.102 *ERROR* [main] Failed to Star
t OSGi framework org.osgi.framework.BundleException: Uncaught Instantiation Issu
e: java.lang.ArrayIndexOutOfBoundsException: -1
いきなりエラー。
Apache Sling – exception when starting
Javaのバージョンが1.7なのがいけないらしい。1.6で実行してみたら動いた。
C:\work>"C:\Program Files\Java\jdk1.6.0_35\bin\java.exe" -jar org.apache.
sling.launchpad-6-standalone.jar
14.10.2012 23:55:59.220 *INFO* [main] Setting sling.home=sling (default)
14.10.2012 23:55:59.234 *INFO* [main] Starting Sling in sling (C:\work\sling
)
14.10.2012 23:55:59.289 *INFO* [main] Renaming current launcher jar org.apac
he.sling.launchpad.base.jar.1350226341674 to org.apache.sling.launchpad.base.jar
14.10.2012 23:55:59.450 *INFO* [main] Checking launcher JAR in folder sling
14.10.2012 23:55:59.584 *INFO* [main] Existing launcher is up to date, using
it: 2.3.0 (org.apache.sling.launchpad.base.jar)
14.10.2012 23:55:59.592 *INFO* [main] Loading launcher class org.apache.slin
g.launchpad.base.app.MainDelegate from org.apache.sling.launchpad.base.jar
14.10.2012 23:55:59.648 *INFO* [main] Starting launcher ...
14.10.2012 23:55:59.664 *INFO* [main] HTTP server port: 8080
14.10.2012 23:56:07.375 *INFO* [main] Startup completed
実行したフォルダ以下に、C:\work\sling
というフォルダが出来ているので中を覗いてみると
C:\work\sling\felix
C:\work\sling\jackrabbit
というフォルダがある。実はこれはそれぞれ以下のものに対応している。
OSGi(Open Services Gateway initiative)仕様を実装したフレームワーク。OSGiは、Javaモジュールの実行や設定管理を行うフレームワーク。
Java用コンテンツリポジトリ。JCR(JSR 170 および 283)に完全準拠している。
http://www.slideshare.net/paolomoz/jcr-and-sling-quick-dive
ベースにはコンテンツリポジトリのJackrabbitがいて、felixにより管理している。 ユーザーはSlingによりRESTful APIを通じてこれらを操作することができるものということらしい。
Create some content
次の手順を実行するためにcurlを用意しておく
http://curl.haxx.se/ 今回はWindows7環境なので、以下からcurlを入手した。ちょっと試すだけなのでSSL無しのバージョンでOK
http://www.paehl.com/open_source/?CURL_7.28.0 ダウンロードしてzipを展開し、curl.exeをC:\work直下へ置いた。ここで作業することにする。
http://localhost:8080/content/mynode.html
へいきなりアクセスしてみると、当然コンテンツはないので No Resource Found(404)となる。
ここでコンテンツを作るcurlコマンドを実行してみる。
curl -u admin:admin -F"sling:resourceType=foo/bar" -F"title=some title" http://localhost:8080/content/mynode
実行するとHTMLがコンソールに出力される。

http://localhost:8080/content/mynode.html
へアクセスすると今度はHtmlRedererServlet
がリソースをダンプして返す。

リソースのパス、メタデータ、タイプ、スーパータイプおよびリソースのプロパティが表示される。 リソースのプロパティはJSON形式で取得できる。 http://localhost:8080/content/mynode.json
にアクセスするか、以下のcurlコマンドを実行する。
curl http://localhost:8080/content/mynode.json
$ curl http://localhost:8080/content/mynode.json
{"title":"some title","sling:resourceType":"foo/bar","jcr:primaryType":"nt:unstructured"}
ところでトップ(http://localhost:8080/
)の「browse the resource tree by clicking here」から Sling Explorerというものが使える。
contentの下にmynodeがあることがわかる。
次回へ続く