カテゴリー別アーカイブ: Felix

Apache Slingを動かしてみた

http://sling.apache.org/

"Apache Sling"

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.jarC:\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

というフォルダがある。実はこれはそれぞれ以下のものに対応している。

Apache Felix

OSGi(Open Services Gateway initiative)仕様を実装したフレームワーク。OSGiは、Javaモジュールの実行や設定管理を行うフレームワーク。

Apache Jackrabbit

Java用コンテンツリポジトリ。JCR(JSR 170 および 283)に完全準拠している。

CRXArchitecture 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があることがわかる。 次回へ続く