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

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

JUNG開発環境構築

JUNG(Java Universal Network/Graph Framework)は、Javaでグラフ構造の処理や可視化なんかができるオープンソースのライブラリーだよ。早速使ってみるよ。今回はJUNGのサンプル・アプレットを動かすところまでやるよ。

ダウンロード

  1. TOPページの左のメニューからDownloadを選択
  2. Download All Jung Releases HereのHereをクリック
  3. sourceforgeの緑のボタン「Download Now!」をクリックしてダウンロード

そんなのいちいち教えられなくてもわかる?そうだね。
JUNG1.0系のときはCommons-CollectionsとかColtなどの依存してるライブラリーを別途集めなければいけなかったみたいだけど、JUNG2.0系では、上のダウンロード対象zipにすべて含まれているよ。

参考までに、jung2-2_0_1.zipの中身は以下の通り。色が薄いのはデモ、サンプルのjar。

  • collections-generic-4.01.jar
  • colt-1.2.0.jar
  • concurrent-1.3.4.jar
  • j3d-core-1.3.1.jar
  • jung-3d-2.0.1.jar
  • jung-3d-demos-2.0.1.jar
  • jung-algorithms-2.0.1.jar
  • jung-api-2.0.1.jar
  • jung-graph-impl-2.0.1.jar
  • jung-io-2.0.1.jar
  • jung-jai-2.0.1.jar
  • jung-jai-samples-2.0.1.jar
  • jung-samples-2.0.1.jar
  • jung-visualization-2.0.1.jar
  • stax-api-1.0.1.jar
  • vecmath-1.3.1.jar
  • wstx-asl-3.2.6.jar

eclipseにJUNG開発環境構築

eclipse(GALILEO以降)でJUNG開発環境を構築するよ。
まずはサンプルのアプレットを動かすプロジェクトJungSampleを作るよ。

jarの配置

先ほどダウンロードしたzipを展開して、eclipseインストール先のplugin以下に置いたよ。
ECLIPSE_HOME/plugins/jung2-2_0_1 以下に、上のjar群が並んでいる感じで。

eclipseにライブラリー追加

必要なjarを個別に選ぶ場合

Project→Property→Java Build PathからAdd External JARs.
ECLIPSE_HOME/plugins/jung2-2_0_1 以下から選ぶ。

まとめて追加する場合

Add Library…→User Library→User Libraries…→New
ユーザーライブラリー名 を jung2-2_0_1 (任意)としてOK. このまま続けてAdd JARs…
上のjar群を片っ端から全部選択(実はデモやサンプルはいらない)。これでユーザーライブラリーjung2-2_0_1 にjung2のjarが設定される。→OK
jung2-2_0_1 にチェックを入れる→Finish→OK

サンプルソースのダウンロード

ライブラリーを入手したのと同じダウンロード先から、jung2-2_0_1-sources.zipをダウンロードしてzipを解凍
さらにjung-samples-2.0.1-sources.jarをjarコマンドで展開。
jarコマンドはtarと違って展開先のフォルダ指定できないっぽいので、怖い人はあらかじめ作業用ディレクトリ作るとよい。
展開されたファイルをeclipseのプロジェクトに取り込む。以下ではプロジェクトのsrc以下にすべて移動して取り込ませた。

$ cd ~/Downloads/jung2-2_0_1-sources/
$ mkdir src
$ cd src
$ jar xvf ../jung-samples-2.0.1-sources.jar

$ ls
META-INF    datasets    edu    images    pom.xml
$ mv * ~/workspace/JungSample/src

サンプルの実行

Run→Run As→Java Applet
で実行してみたいサンプルのクラス名を選択してOKするとサンプルのアプレットが起動する。
以下の画像は「ShowLayouts – edu.uci.ics.jung.samples」を選んで実行してみた例