WebORBでサービスを呼ばずに、任意のオブジェクトを返却する
RailsでWebORBを利用すると。weborb_controller.rbが$RIALS_ROOT/app/controller配下に
出来ていると思う。普段はこいつを意識する必要なんて無いのだが、ある条件時には
サービスの呼び出しをせずに、任意のオブジェクトを返却したくなったのでちょっとやってみた。
WebORBと言ったところで、所詮はコントローラがリクエストを受け取ってサービスの
呼び出しを行っているだけなので、コントローラをゴリゴリ書き換えればよいのだが、
ちょっと困ってしまうのが、バイナリを返却しなくちゃならないってところ。
一応、下記の方法で動いているっぽい
request_message.body_parts.each do |body| body.response_data_object = { :hoge => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" } body.service_uri = "" body.response_uri << Constants::ONRESULT end
単純にresponse_dataに値を入れれば大丈夫かなぁと、思っていたのだが、そうは問屋が下ろしてくれずに
Flash側で取得する事が出来なかった。で、WebORBのinvoke.rbを眺めていたら
invocation_body.service_uri = "" invocation_bosy.response_uri << Constants::ONRESULT
ってのを、見かけたので、とりあえず書いてみたら動いた。
同じinvoke.rb内で例外を補足しているところで、response_uri に Constants::ONSTATUSを
設定していたので、もしかしたらエラーとして返せるのかなぁって思ってみる。