A. Lange & Söhneという時計

前回Postした「Mechanical Watch」に載せた時計がかっこよくてどれくらいの値段するんだろうと思い調べたのですが、いや、なんというか無知で本当にすみませんでした、と謝りたくなる…。$212Kって何円ですか。。。

「A. Lange & Söhne」、日本語では「ランゲ・アンド・ゾーネ」というドイツに本拠地を置いている高級時計ブランド。$212K、日本円にして2615万円ですが、同社の価格帯は下は300万円~上は5千万円で$212Kは比較的上の方のよう。もつのもなんか恐ろしいね。

Mechanical Watch

機械式時計はメカメカしいところや、あの小さい金属の中に細かい部品が所せましと入り込みせわしなく動いているさまが好きです。

http://youtu.be/a_hI2KyI4lw

小さいころ懐中時計を見たときにこんなゼンマイで秒針とかを制御しているってすごいっ!なんて思っていました。時計を動かしているのは見えているゼンマイではなくて実は別のところにあると知ったのはもっと後になってから。見えているゼンマイは歯車の速度を調節する部品の1つだったのですね。

小さな部品部品の1つ1つが技術の集まりで調べてみると色んな仕組みが工夫がなされています。速度の調節には振り子運動を使っているとか、その微調整にはバネの長さとかモーメント力を応用しているとか、バネの力が均等になるように色々工夫している場合もあるとか。

色々なサイトで機械式時計の仕組みとか紹介されているので、仕組みがわからず悶々としている方は「How a mechanical watch works : youtube」を見るとちょっとはすっきりするかも。

では。

REST non-REST混在環境の作り方

通常のaction(executeメソッド呼び出し)とrestfulなactionを呼び分けたい場合があります。そんなときはPrefixBasedActionMapperを使おう、とうい話。

RESTを有効にするためstruts.xmlに以下の記述を行うと通常のactionもRESTとして動作するようになります。

呼ぶactionによって通常のActionMapper(DefaultActionMapper)とRestful2ActionMapperを呼び分けたいのですが、このような場合はPrefixBasedActionMapperを使用することでURLの内容から使用するActionMapperを切り替えることがでる。

上記の例はREST plugin使用時においてDefaultActionMapperとRestful2ActionMapperを切り替える場合。他にもたくさん切り替えたい場合は3つ4つと設定すればいい。

REST/non-RESTを混在させるためにはこの他に以下の設定も必要。

下3つは実装する環境に合わせて変更すればいい。suffixはControllerでなくてもよいし、interceptionを追加したい場合はpackageを作るだろうし。

特定のpackage(クラスパス)以下のみを対象にしたい場合はstruts.convention.package.locators.basePackageを設定する方法もある。packageに関する設定項目は以下4つ。いずれもconventionの持ち物。

  • struts.convention.action.packages
  • struts.convention.package.locators
  • struts.convention.package.locators.basePackage
  • struts.convention.exclude.packages

それと、今回参考にしたサイト。

Stackoverflowのここも参考になるので載せておきます。

Struts2を触り始めて1週間?2週間ぐらいですが、感じたことを少しばかり。

かれこれ長いことstrtus1を使い続けていたのですんなりstruts2も使いこなせるだろうと高を括っていました。struts1とは異なる点が多々あり足踏みをすることが多かったように思います。1)もしかするとstruts1にどっぷりだったからこそかもしれませんね。大まかな流れさえわかってしまえば学習曲線も上がるのですんなり身に入りそうな気がしています。

ではでは。

References   [ + ]

1. もしかするとstruts1にどっぷりだったからこそかもしれませんね。

Struts2は必ずexecuteメソッドを呼ぶわけではない

Struts2のサンプルを作り始めたときに呼ばれるメソッドで詰まった話。標準では必ずexecuteメソッドが呼ばれると思っていたのだけれどそうでもないらしい。

struts2-blank.warからサンプルを作り始めたときは特に問題にはならなかったのだけれど、struts2-rest-showcase.warから作り始めたたらexecuteメソッドが呼ばれない。かわりにindexメソッドを呼ぼうとする。

色々調べてみるとこのサイトにヒントがありました。

The problem is resolved, I had to remove the struts2-rest plugin. 

試しにstruts2-rest-plugin-2.3.16.3.jarを削除してみると確かにexecuteが呼ばれる。restサービスを作りやすくするぐらいの認識しかなったのだけれどどのように動くか全然抑えてなかったです。

公式サイトを見てみるとURLがどのようなルールでActionに結びつくのかが書いてある。『idパラメータがなければindexメソッド呼ぶよ』とかとか。

他にstruts2-rest-showcase.war内のstruts.xml見るとdefault.parent.packageが”rest-default”だったりと色々と考慮しなさ過ぎていたみたいです。