読者です 読者をやめる 読者になる 読者になる

Spring BlazeDS Integration

Flex Spring

Flex(Actionscript)とJavaとのデータのやり取りの方法はSOAPやREST等の手段が存在するが、やはり代表的なのはBlazeDSでしょう。Seasar2であればS2BlazeDSで容易にFlexとのデータ通信ができますが、Springの場合Spring BlazeDS Integrationというプロダクトを使用すると良いでしょう。
Springも2.5系からコンポーネントスキャンがサポートされてアノテーションでの設定が可能になりましたが、Spring BlazeDSもアノテーションを付与することでBlazeDSのサービスとして公開することができます。


import org.springframework.stereotype.Service;
import org.springframework.flex.remoting.RemotingDestination;

@RemotingDestination(channels={"my-amf","my-secure-amf"})
@Service
public class HogeService {

public String hello(String name) {
return String.format("Hello, %s", name);
}
}

Spring BlazeDSのセットアップは割愛します。@Serviceは通常のコンポーネント登録のためのアノテーション。@RemotingDestinationがFlex側から見たリモートサービスのEndPointということになります。これだけでサーバサイドは準備完了。後はサーバーを起動してFlashBuilder側から公開されたサービスを選択肢、サービスコール用のASスタブを自動生成します。スタブメソッドから渡されたASオブジェクトは、BlazeDSによってJavaのオブジェクトにバインドされます。SOAPでcontract-lastな場合はインピーダンスミスマッチの恐れもありますが、BlazeDSでは基本的にその心配はありません。
また、アノテーションで定義ができるので、コンポーネントには@RemotingDestinationだけではなくJAX-WSの@WebService等も併せて使えるので、SOAPのEndPointとして使用することも可能です(この場合はSpringとSpring-WS、CXF等のSOAPフレームワークとの連携が必要)。