PlayStation®Mobileの動画プレイヤーを作りました

No Comments

PlayStation®Mobile の動画プレイヤーを作ってみました。
GitHubにて公開中です。

psm-avi_movie_player (GitHub)

PlayStation®Mobile SDKには音楽再生のモジュールはありましたが、動画再生のモジュールはありませんでした。

ちなみにPlayStation®MobileはPlayStation®Vitaや対応しているAndroid端末上で動作させることのできるアプリのプラットフォームです。
PlayStation®Mobileとは?

対応している動画のフォーマットは下記のものになります。

  • 動画コンテナ
    AVI
  • ビデオ
    Motion JPEG
  • オーディオ
    MP3

また、動画ファイルの場所の指定として、下記のURIスキームをサポートしています。

  • file
    ローカルファイル
  • http
    3Gや4Gといった携帯電話ネットワークで使用する際は、パケット通信料に注意してください。
    ドキュメントには現状Wifi と 携帯電話ネットワークのどちらを使用しているのか分からないため、”20MB を超えるファイルをダウンロードしない”ようにと記載されています。

SDKにはJPEGとMP3のデコードモジュールは存在するので、この形式のAVIファイルなら再生できるだろうと試しに作ってみたところ成功。


© copyright Blender Foundation | www.sintel.org

リリースノートを見ると、”将来追加予定の機能”に”動画再生”があるので、いずれは正式なプレイヤーがリリースされるようです。それまでは、PSM開発はこれで乗り切るつもりです(笑)

個人的には実機をスタンバイしても音楽を再生し続けられる機能を待望しています。

■動作確認済みPSM SDKバージョン
1.11.01以上
■動作確認済みデバイス
PlayStation(R) Vita


手動で Base Box 作成

No Comments

VagrantのBase Boxを作成してみた。

環境はWindows8 Pro 64bit。(だけど、あまり関係ないかも)

一般的にはBaseBoxはWebのテンプレートから取ってきて使えば良いので、一般的にはやる必要がないとのこと。
カスタムBaseBoxを作る必要がある時のみ行う。
作成手順は下記に載っており、この通りに進める。

なお、配布用に省スペース化のような最適化する項目は省いている。

http://docs.vagrantup.com/v1/docs/base_boxes.html

※veeweeを使えば、今回のBase Box作成の作業は自動化できるみたい。

VMを作成する

ここではUbuntu1210 Desktopの32bit版を用いる。
まず、vagrant-ubuntu-1210_32_Desktopという名前を付けてVMを作る。
VagrantのBoxはvagrant-[OS名]というルールがある。

VMの情報としては配布する場合、下記を使うことが推奨されている。

  • Hostname: vagrant-[os-name], e.g. vagrant-debian-lenny
  • Domain: vagrantup.com
  • Root Password: vagrant
  • Main account login: vagrant
  • Main account password: vagrant

HDDはVDI形式で作成。そして、可変サイズで40GB割り当てた。
NICはNATとする必要がある。
ディスクファイルをCD/DVDドライブに挿入してVMを起動する。
するとインストーラが起動して、PC名などを入力する画面になる。
ここで、私は下記の情報を入力した。

  • Your name: vagrant
    ここは何でも良い?
  • Your computer’s name: vagrant
    vagrant-[OS名]のほうがよいかも。
  • Pick a username: vagrant
  • Choose a password: vagrant
  • Confirm your password: vagrant
  • Log in automaticallyにチェックを入れた.
    これはチェックを入れず、ログイン時にパスワードを入力するようにしてもいいはず。

ポートフォワーディングの設定

VirtualBoxの[設定]メニューの[ネットワーク]の項目でルールを作成する

  • ホスト
    • IP
      空白 → 自動的に127.0.0.1になる
    • Port
      2222
  • VM
    • IP
      空白 → 自動的に127.0.0.1になる
    • Port
      22

この後、VMを再起動する。

権限のセットアップ

ここでは、sudo実行時にパスワードを入力しなくてもコマンドを実行できるようにする。

  1. VMにログインする。
  2. ターミナルを開いて下記を入力し、adminグループを追加する。
    $ sudo groupadd admin
  3. 下記を入力し、vagrantユーザーの所属グループをadminに変更する。
    $ sudo usermod -g admin vagrant
  4. 下記を実行する。
    $ sudo visudo
  5. %admin ALL=(ALL) ALLになっている行の真下に下記を追加する。
    %admin ALL=NOPASSWD: ALL
  6. Defaultsに下記を追加。
    Defaults env_keep = “SSH_AUTH_SOCK”
  7. その後、Ctrl-oを入力し、/etc/sudoersというファイル名で保存。
  8. $ sudo visudoを再実行し,%sudo ALL=(ALL:ALL) ALLをコメントする。
    # %sudo ALL=(ALL:ALL) ALL
  9. 下記を実行し、反映させる。
    $ sudo /etc/init.d/sudo restart

以上が終了すると、sudo時にパスワードを聞かれなくなる。

VirtualBox Guest Additionsをインストールする

まず,システムに必要なパッケージのインストール。

VirtualBoxの「デバイス」→「Guest Additions のインストール …」を選択。

すると、CDにマウントされ、起動するので、Runボタンを押すとVirtualBox Guest Additionsがインストールされる。

初期ソフトウェアのセットアップ

それぞれ、下記のコマンドでインストールする。

  • Ruby – Use the dev package so mkmf is present for Chef to compile
    1. $ sudo apt-get install ruby
  • RubyGems – To install the Chef gem
    1. $ sudo apt-get install rubygems
  • Puppet – To install Puppet (also ensure that a ‘puppet’ group is present!)
    1. $ sudo apt-get install puppet
  • Chef gem – For provisioning support (gem install chef)
    1. $ sudo apt-get install ruby1.9.1-dev(rubyのバージョンを合わせること)
    2. $ sudo gem install chef
  • SSH
    1. $ sudo apt-get install ssh
    2. $ ssh-keygen -t rsaを実行してsshサーバーの準備をしておく。(すべてデフォルト値でOK)

Public Key(公開鍵)を用いたssh認証の設定

Boxを一般公開用にする場合、vagrantで共用の公開鍵をauthorized_keysに登録しておく。
そのために、下記の公開鍵と秘密鍵をダウンロードして、VMに送る。

https://github.com/mitchellh/vagrant/tree/master/keys/

パーミッションは600として、~/.ssh以下に保存。

  • authorized_keys(公開鍵をコピー)
  • vagrant→id_rsa(ファイル名変更)
  • vagrant.pub→id_rsa.pub(ファイル名変更)

Base Boxのエクスポート

下記のコマンドでVMをBase Boxとしてエクスポートする。

しばらく待った後、package.boxというファイルが出来る。
これがBase Boxである。

Base BoxをVagrantで使う

下記のコマンドでaddする。

後は、initしてupすれば立ち上がる。

knife-soloでchef-soloの実行を確認できた。
Base BoxはWebサーバー上に置いておけば便利そう。


Windows 8 に Vagrant と chef-solo をインストールしてみた

4 Comments

Vagrantとは

VitualBoxのフロントエンドに相当するツール。
vagrantコマンドなどを使ってコマンドラインから簡単に新しいVMを作れる。

下記の投稿を見て、便利に思えたのでWindows8にインストールしてみた。

naoyaのはてなダイアリー Vagrant”

試す環境はWindows8 64bit。

Rubyをインストールする

下記から最新版のRubyをダウンロードする。

rubyinstaller.org

ここでは、1.9.3-p385をダウンロードし、インストールする。
念のため、DEVELOPMENT KITも合わせてインストールしておこう。(任意)
ダウンロードしたexeを実行すると、中身が解凍される。

インストールしたRubyのRubyコマンドプロンプトを起動し、下記を実行する。

以降もRubyコマンドプロンプトを使うとする。

VirtualBoxをインストールする

Vagrantの実行にはVirtualBoxのインストールが必要。
下記より、ダウンロードしてきてインストール。
バージョンは4.2.6だった。

virtualbox.org

その後、VBoxManage.exeのあるフォルダへのパスを環境変数PATHに通す。
私の場合、下記にインストール。

D:\Program Files\Oracle\VirtualBox

Vagrantをインストールする

下記のコマンドでインストール。

バージョンは1.0.6だった。
— 2014/4/16追記 —
WindowsにVagrantをインストールする場合は、下記のサイトからインストーラーを用いてインストールした方がいいと思います。

http://www.vagrantup.com/downloads.html

Windowsのsshを別途インストールしなくてもvagrant sshが実行できます。

VMを追加し、起動する

Vagrantは任意のVirtualBox形式のVMを使って環境構築できるよう。
もちろん、VMのTemplateも用意されている見たい。ここでは下記から追加したいVMを確認する。

vagrantbox.es

ここからboxへのURLを取ってきて入力。

なお、VMはD:\Users\[User名]\.vagrant.d\boxesに保存されていた。

ここで、VMのTemplateを元に、新しく、仮想マシンを作成する場合は下記のようにやる。
まず、TemplateとなるBoxを追加。

次に、適当なディレクトリを作成し、下記のコマンドを実行。

すると、Vagrantfileという設定ファルが作成される。下記のように記述。

— 2014/4/16追記 —
上記はAPI VERIONが1の場合の設定。最新の場合、下記のように設定する。

下記のコマンドで起動。

VMにアクセスする

通常は下記のコマンドでゲストOSにログインできる。

しかし、Windowsでは使えないらしい。そのため、Windows用のsshクライアントを使用する。
— 2014/4/16追記 —
これをやらなくてもインストーラーからインストールすれば、vagrant sshは実行できる。
ただし、knife-soloを実行する場合は必要。

接続情報は下記。私は、Poderosaを使用してアクセスできることを確認した。

Host: 127.0.0.1
Port: 2222
Username: vagrant
Private key: D:/Users/[ユーザー名]/.vagrant.d/insecure_private_key

ソフトウェアの環境構築を自動化する

chef-soloを使う。
フロントエンドのツールはいくつかあるらしい。
ネットで探すとknife-soloの話題ばかりだったので、これを使うことにした。
— 2014/6/28追記 —
Vagrantとchefを合わせて使う場合は、knife-soloではなくvagrant provisionを使うのが簡単。
Vagrant provisionでchefを実行する(Windows8.1)

knife-soloを使う

インストール

下記のコマンドでインストール。

バージョンは0.2.0.
また、いっしょにインストールされたchefのバージョンは11.4.0だった。

レシピの準備

下記で、レシピのテンプレートが作られる。このchef-repoというディレクトリにレシピを作成する。

次に、下記を実行する。

knife solo prepare を実行すると、VMにchefをインストールしてくれているみたい。

ちなみに、事前に ssh が通るように ~/.ssh/config にどのキーを使うかを書いておいたほうが、毎回-iオプションを入力せずにすむ。

rsyncとsshのパスを通す

Windowsの場合rsyncがないので、インストールする必要がある。
knife-soloのREADME.rdocのページを見てみる。

すると、下記のサイトを見てrsyncをインストールせよ、と書かれていた。

https://github.com/thbar/rsync-windows

cygwinをインストールして、下記のファイルを取り出し、cygwinをアンインストールしろ、とのこと。
そのため、私はまずcygwinをインストールした。
その後、[インストールフォルダ]\binの下記のファイルを探す。

  • rsync.exe
  • cygwin1.dll
  • cygiconv-2.dll

そのあと、それらを一つのフォルダにまとめて、そのフォルダのパスをユーザー環境変数PATHに通す。

しかし、結局ssh.exeが見つからないのでエラーになった。

私は結局、cygwinから下記のファイルを取り出し、rsyncと同様に、PATHの通っているフォルダに保存した。

  • ssh.exe
  • cygwin1.dll
  • cygcrypto-0.9.8.dll
  • cyggcc_s-1.dll
  • cygssp-0.dll
  • cygz.dll

Cygwinのバージョンによっては必要とするdllが異なるかもしれない。
そのときはDependency Walkerの32bit版をインストールして、rsync.exeやssh.exeを調べれば依存するdllがわかる。
また、コマンドプロンプトでsshやrsyncを実行した時のエラーメッセージで必要としているDLLを判断できる。

レシピの実行

jsonファイルやレシピの編集を行なって下記を実行する。

下記のようなホームディレクトリのマークはなぜか使えず。
-i “~/.vagrant.d/insecure_private_key”

レシピの編集

initで作ったフォルダ構成は下記のようになっている。

  • cookbooks
    • [サービス名]/recipes/default.rb
      → レシピの内容
  • data_bags
  • nodes
    • xx.xx.xx.xx.json
      → レシピを実行するノードに対して、実行するレシピが書かれたファイル。
  • roles
  • site-cookbooks
  • solo.rb

レシピのひな形は下記のコマンドで作成する。

このコマンドでcookbooks/ntpが作られる。

たとえば、VMにapache2をインストールするというレシピの場合、まず下記でapache2という名前のcookbookを作る。

そしてcookbooks/ntp/recipes/default.rbを編集する。
下記は、インストール、サービスの有効化と起動を行うレシピ。

nodes/xx.xx.xx.xx.jsonを下記のように編集する。

これで実行できるはず。

ゲストOSを終了・削除する

下記で、起動終了。

下記で削除。

再起動。

Q&A

プロキシ環境下で実行したいのだけれど

Rubyのプロキシは環境変数http_proxyに設定。
* 変数名
http_proxy
* 値の例
http:/[プロキシのドメイン]:[ポート番号]

レシピ実行時にWARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!が出る

下記のエラーが出て、レシピの実行に失敗する。

127.0.0.1のようなIPを複数のVMで使いまわすと出る。
これはknown_hostsを削除すればOK。

CookBookのサンプルが欲しい

下記から好きなcookbookをcookbooksディレクトリないでgit cloneすればOK.
https://github.com/opscode-cookbooks
自分で作らなくてすむ。

複数のレシピを実行するには

nodes/xx.xx.xx.xx.jsonに下記のように書く。

あとでやろうと思っていること

  • VirtualBoxのBase Box作成
  • NT Emacsのshellとの統合
  • PoderosaのCygwinが立ち上がらなくなった件の解決

Windows7でChromiumをビルドする

No Comments

Chromiumをビルドしてみた。
リビジョン番号は139214。
(ChromiumはGoogle ChromeのもとになっているオープンソースのWebブラウザ)

環境はWindows7 64bitで,Visual Studio 2010 Expressを用いる。
また,すでにgitがインストールされているとする。

基本的に下記のページに指示に従えば良かった。

Build Instructions (Windows)

ビルド前の準備

VS2010Expressの場合は下記をの2つを実施する。

  • Prerequisite software
    注意点は下記の通り。
    • Windows 7.1 SDK
      こいつをインストールした後にVS2010C++SP1をインストールするとコンパイラを上書きされるというバグあり。(手順の中に修正プログラムのインストールも含まれているので問題はない)
    • KB articles: KB957912, KB958842, KB960075, KB967631, KB971092, and KB2519277
      KB971092はVS2008用のためインストール出来ず。
    • Cygwin
      インストールしなかった。以下,コマンドはすべてコマンドプロンプトから実行した。
  • Setting up the environment for Visual Studio 2010
    途中で,”gclient runhooks”を実行する箇所があるけれど,depot_toolsが無いと実行できないので,取得後実行する。
    後は手順通りにやれば問題なく実施できる。

depot_toolsの取得

depot_toolsをインストールするディレクトリにて下記のコマンドを実行する。

次にWindowsの環境変数PATHにこのdepot_toolsまでのパスを通す。

ソースの取得

ソースを取得するディレクトリにて,下記のコマンドを実行する。

作成されたリポジトリの内容は下記で確認できる。

次に,ソースを実際に取得する

ソースが取得できたら次はビルド。

ビルド

取得したソースのsrc/chrome/chrome.slnをダブルクリックで実行する。
そしてこのソリューションをビルドする。
(動かすだけならchromeプロジェクトをビルドすればよいみたい。)

ビルドが完了するとsrc/build/Debug(またはRelease)にchromium.exeができるので,これを実行すればChromiumが起動する。

http://www1205uf.sakura.ne.jp/wp/world/wp-content/uploads/2012/05/chromium.png

ビルドの失敗の修正

手順通りにやってもいくつかビルドエラーが起こったので,その時に解決した方法をメモ。

ファイルのエンコードの間違い

下記のようなエラーが起こった。

エラー箇所は下記のようになっており,C++コンパイラがコードをUnicodeとして認識していないのが原因らしい。

そこで,解決方法はこのファイルを選択し,[ファイル]-[保存オプションの詳細設定]を選択する。

http://www1205uf.sakura.ne.jp/wp/world/wp-content/uploads/2012/05/change_encoding.png

次に,開くダイアログにてエンコードに”Unicode(UTF-8 シグネチャ付き)-コードページ65001″を選択し保存。

http://www1205uf.sakura.ne.jp/wp/world/wp-content/uploads/2012/05/change_encoding2.png

これで解決した。

ANSIコードページに表示できないUnicodeが含まれている

次に下記のようなエラーが出た。
警告をエラーとして扱ったため,オブジェクトファイルが生成されなかったとのこと。

ANSI コード ページに表示できない,Unicodeの文字を使っているのが原因とのこと。
とりあえず警告をエラーとして扱うのを無効化して回避。。。
問題が出ていたunit_testプロジェクトにて下記の赤枠のように設定する。
構成を”すべての構成”にしておかないと,Debug,Releaseの両方には適用されないので注意。

http://www1205uf.sakura.ne.jp/wp/world/wp-content/uploads/2012/05/warning_error_off.png

これで解決。

インストーラーの作成

chrome.slnをビルドしただけでは,インストーラー(mini_installer.exe)は作成されなかった。

そこで,src\chrome\installerの中のmini_installer.slnをダブルクリックで起動する。
ソリューションをビルドすればDebug(またはRelease)フォルダにmini_installer.exeが生成されているはず。

これをダブルクリックで実行すればPCにインストールされる。

Chromiumのリビジョン番号を知る

作成したインストーラーの名前にリビジョン番号を追加しておきたくなった。
これからソースを更新していってもリビジョン番号がわかるようにしたい。

そのためにはsrcディレクトリに入って,下記を実行する。

すると下記のように表示される。

ここのRevisionがリビジョン番号を示している。

gclientのツールでもわかるのかと,helpを見て調べたがよくわからなかった(汗)


Hibernate3を使った永続オブジェクトの作成・検索・削除

No Comments

前回でHibernateをMavenで用いるための下準備を行った。

Hibernate3とMavenを使って,マッピング用のクラスやテーブルスキーマを自動生成する

そこで今回は実際に永続オブジェクトの作成・検索・削除を行なってみる。

一時的に作成したオブジェクトを永続オブジェクトに登録することによって,JVMが終了しても存在し続けるようにすることができる。

今回も勉強に用いたのは下記の書籍である。

http://www.amazon.co.jp/Hibernate-%E9%96%8B%E7%99%BA%E8%80%85%E3%83%8E%E3%83%BC%E3%83%88%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-James-Elliott/dp/487311215X

使用したMavenは3.0.4である。

プロジェクトの構成

プロジェクトの構成は前回に引き続き下記のようにする。
今回作成するjavaファイルは正しいパッケージのパスに保存する。

永続オブジェクトの作成

下記のようなCreateTest.javaファイルを作成する。
Sessionクラスのsaveメソッドに渡すことでオブジェクトは永続化される。

MavenでこちらのMainメソッドを実行するには,下記のプラグインをpom.xmlに追加する。

そのあと,下記のコマンドで実行できる。

コンパイルから行う場合は下記のようにする。

永続オブジェクトの検索

下記のようなQueryTest.javaを作成する。

クエリは前回,マッピング文書(Tag.hbm.xml)に記述したのであった。
下記のqueryタグがそれに該当する。

実行方法については”作成”のときと同様である。

永続オブジェクトの削除

savaメソッドのように,Sessionクラスのdeleteメソッドの引数として設定すれば,永続オブジェクトは一時オブジェクトに戻る。
そしてスコープ外や参照が無くなった時削除される。


Hibernate3とMavenを使って,マッピング用のクラスやテーブルスキーマを自動生成する

1 Comment

Hibernateの勉強として。
HibernateはJavaのORMとして有名なライブラリである。

今回やりたいことは下記の項目でHibernateを用いるための下準備となっている。

  1. マッピング用のアクセッサクラスを自動生成
  2. MySQLのテーブルのスキーマを自動生成

前提条件は下記のとおりである。

  • Maven2をインストール済みである
  • jdk7をインストール済みである
  • MySQL Serverをインストール済みである

下記の書籍を参考に用いた。
http://www.amazon.co.jp/Hibernate-%E9%96%8B%E7%99%BA%E8%80%85%E3%83%8E%E3%83%BC%E3%83%88%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-James-Elliott/dp/487311215X

使用したMavenは3.0.4である。

プロジェクトのファイル構成

まず,mavenプロジェクトの雛形を自動生成する。

ここで,プロジェクトの構成は下記のようにする。

pom.xmlについて

pomについては下記のように記述した。

Hibernateのコンフィグファイルを作成する

ファイル名はhibernate.cfg.xmlというものがよく使われているみたい。
今回はMySQLを用いるので,その設定を行なっている。
また,mappingタグにはマッピング文書へのパスを書く。
これをsrc/main/resourcesの中に保存する。

log4j.propertiesの設置

hibernateは内部でlog4jを用いているらしい。
src/main/resource内に保存する。

マッピング文書の作成

マッピング文書には自動生成されるクラスの情報やクエリを記述する。

アクセッサクラスの自動生成

以上を行った上で,下記のコマンドを実行すると,アクセッサクラスが自動生成される。

すると,pom.xmlで指定したsrc/main/java/jp.ne.sakura.www1205ufというディレクトリにTag.javaというファイルが自動生成される。
Tag.javaは下記のようになっている。

MySQLの下準備

スキームを自動生成するために,下記の操作を行いDBとそれにアクセスするユーザーを追加しておく。

このときのユーザーはhibernate.cfg.xmlに記述したものを用いる。

スキーマの自動生成

下記のコマンドを実行する。

すると,作成済みのDBにテーブルが自動的に作成される。

作成されたことは下記のコマンドで確認できる。

なお,以上のすべてを実行しコンパイルを行う場合は,下記のようにすればよい。

これで永続化オブジェクトを作成しDBにデータを格納したり,それを検索したりといった操作が可能になる。

それについては次回。


JAX-RS(Jersey)とSpring3の連携

No Comments

WebアプリケーションフレームワークとしてSpringを使ってみる。

その勉強の手始めにこれまでの記事で作成したJAX-RS(Jersey)のMavenプロジェクトをSpringに対応させてみた。

Mavenを用いて,JAX-RS(Jersey)で作成したWeb APIをJettyのServletコンテナで動かす

参考にさせていただいたのは
ぺーぺーSEの日記 – Spring 3でHello World REST (Jersey)
である。

使用したMavenは3.0.4である。

Mavenプロジェクトの雛形を作る

すると,下記のような構成のプロジェクトが生成される。

pom.xmlの記述

Jettyのサーブレットコンテナを使えるように設定。

applicationContext.xmlの作成

このファイルも必要らしい。
下記のように記述する。
このファイルはresourceフォルダ内に設置する。

web.xmlの記述

下記のように記述する。

Spring + Jerseyのサービスの作成

下記のRestTest.javaをsrc/main/java/jp/ne/sakura/www1205ufディレクトリにおいた。

最終的な構成

これまでの手順を踏むと,最終的なファイル・ディレクトリ構成は下記のようになる。

ビルドとローカルリポジトリへのインストール

下記のコマンドを実行する。

実行

APIには下記のURIでアクセスできる。

http://localhost:9095/rest/hello

すると

と表示されるはずである。


Mavenを用いて,JAX-RS(Jersey)で作成したWeb APIをJettyのServletコンテナで動かす

1 Comment

Mavenを用いると前頁の手順が非常に簡略化される。

JAX-RS(Jersey)で作成したWeb APIをJettyのServletコンテナで動かす

実行はWindows7上で行い,JAX-RSの実装は全ページ同様Jerseyを用いている。

Mavenのバージョンは3.0.4を用いた。(インストール方法については省略)

プロジェクトの構成

Mavenのデフォルトの構成を用いて下記のような構成にする。

web.xmlやソース(.java)には前頁で作成したものをそのまま入れる。

pom.xmlの記述

下記のように記述する。

ビルドとローカルリポジトリへのインストール

下記のコマンドを実行する。
するとローカルリポジトリ(デフォルトだと~/.m2)に.warのファイルがインストールされる。

実行

APIには下記のURIでアクセスできる。

http://localhost:9095/rest/hello

すると

と表示されるはずである。


JAX-RS(Jersey)で作成したWeb APIをJettyのServletコンテナで動かす

1 Comment

RESTの勉強にJAX-RSを触ってみた。
そこで,作成したコードをJettyのServletコンテナ上で動かしてみる。

Jettyをアプリに組み込んで,プログラム中から起動するケースの方が多いようだけれど,Jettyの勉強も兼ねて。

JAX-RSの実装に関してはJerseyを用いた。また,実行環境はUbuntu10.04である。

使用したMavenは3.0.4である。

Jettyのインストール

下記のEclipseのサイトからJettyをダウンロードする。

eclipse.org/jetty

2012/5/6現在での最新バージョンは8.1.3.v20120416であった。
ダウンロードして,インストールするディレクトリに解凍する。

JAX-RSサービスの作成

下記のようなサービスのクラスを作成する。
ファイル名はRestTest.javaとした。
このサービスはhttp://[ドメイン]:[ポート番号]/[アプリ名]/helloのURIに対し,”Hello World”のレスポンスボディを返す。

Jerseyのダウンロード

下記の公式ページからjarseyのzipをダウンロードする。
(For the convenience of non-maven developers the following are provided:の項目)

Jersey.java.net

2012/5/6現在でjersey-archive-1.12.zipというファイルをダウンロードできた。
これを任意のディレクトリに保存し解凍する。

web.xmlの作成

次に,下記のようなweb.xmlファイルを作成する。
このファイルは後ほどwarファイルにパッケージングすることになる。

warファイルを作成する

warファイルを作成するために,下記のような構成にする。
先程,ダウンロードしたJerseyのlibディレクトリ中のjarファイルをすべてコピーして配置する。

その後,warファイル作成用ディレクトリにて下記のコマンドを入力してwarファイルにパッケージング。

JettyのServletコンテナに配置

ServletアプリをJettyのServletコンテナに配置するための構成は下記のようになる。

実行

[jettyのインストールディレクトリ]に入って下記のコマンドを実行して起動する。

作成したRESTのAPIにアクセスする際は下記のようなURIを用いる。ブラウザのナビゲーションバーに貼り付けるなどして試す。

すると,下記のように表示されるはず。


Mavenを用いると上記の操作が非常に簡略化される。これについては次回。


オレオレ証明書に対してWindows7標準のWebDAVクライアントを使う

No Comments

Windows7でオレオレ証明書を用いたWebDAVサーバーに標準のクライアントからは接続できない。

これはWindows7では信頼されたサーバー証明書でないとアクセスできないという制限があるためである。

しかし,オレオレ証明書を信頼されたサーバー証明書としてインストールすると接続することができる。

それには下記の手順を踏む必要がある。
プロトコルはもちろんhttpsで,Basic認証ありとする。

  1. オレオレのサーバー証明書を信頼出来るルート証明書としてインストールする。インストールするにはIEを用いることができる。
  2. “コンピュータ”を右クリックして表示される”ネットワークドライブの割り当て”を用いて接続する。

上記はググればいくらでもでてきて,この方法で殆どの人が解決しているようだった。

しかし,なぜか失敗する。

“ネットワークドライブの割り当て”の接続中にBasic認証のダイアログが表示されるのだけれど,正しいものを入力してもエラーになってしまう。

なぜだろうと思って調べたら,オレオレ証明書の方に問題があった。

Common Name(略してCN)が設置先のサーバーのドメイン名(www.domain.co.jpみたいな)と異なっていたのである。

この場合,上記手順によってオレオレ証明書を信頼するように設定しても,アクセスしようとしているサイトと表示されるサイトが別物の可能性が生じ,危険なサイトと判断されてしまう。

これがダメだったらしい。

オレオレ証明書を作り直し,CNを正しいサーバーのドメイン名に変更すれば,問題なく接続できた。

めでたしめでたし(汗)


Older Entries