2008/07/16

[coldfusion][soap]UnsignedByteに対応するには

GeOAPに記載されている、メソッドを使うのに、引数にunsignedByte型を必要とするものがありました。(StraightDistanceOfAdrToStationメソッドなど)

ここで問題になるのは、ColdFusionには、unsignedByteという型が存在しないということ。

なので、unsignedByte型を引数にとるメソッドは呼び出せないのかなと思うのですが、前にも書いたように、ColdFusionは、Javaで実装されているので、おそらくできるだろうと予想。

案の定、ぐぐってみると、UnsignedByte型は、javaのshort型変数に対応していると、ここに書かれていました。

上の記事は、internet.comの記事なのですが、axisのサイトを見てみると、UnsignedByte型は、javaのlong型に対応していると書かれていました。

というわけで、ColdFusionで、UnsignedByte型を引数に取るメソッドを呼び出したい場合、

<cfscript>
//webserviceの呼び出しと共にオブジェクトを生成
ws = CreateObject("webservice","呼び出し先のurl");

//Longクラスをコール
jo = createobject("java","java.lang.Long");

//引数をLong型にデコード
jo = jo.decode("数字");

//UnsignedByteクラスをコール
ju = createobject("java","org.apache.axis.types.UnsignedByte");

//Long型のjoをUnsignedByte型に変換しオブジェクト(ju)にセット
ju.setValue(jo);

//メソッドをコール
ret = ws.メソッド(UnsignedByte型の引数 = ju);
</cfscript>

という流れでいけると思います。

これで、引数の型が、UnsignedByte型でも怖くないぞと。

うーん、時間があったら、ここのサービスの使い方とかも書いてもいいかもなー。

0 コメント:

コメントを投稿