S2Flex2の1.0.0-rc3を先月ひっそりとリリースいたしました。
変更内容は以下の通りです。
- S2 Container 2.4 rc-2のcustomizer変更に対応いたしました。
- JDK1.4用に定数アノテーションを導入しました。
- SessionIDが正しくないときに新たにSessionを取得するように変更しました。
- AS3 ->JavaObjectのAMF3データ変換部分について改善いたしました。
- AS3でクラスを生成しなくてもJava側でクラスとして受け取れる機能を追加しました。(オブジェクトクラスマッピング)
- FieldAnnotaionHandler導入に伴いBasicAnnotationHandlerを廃止しました。
- セッションデータへのImport/Exportについて例外が発生してしまうケースを改善いたしました。
- 上記の変更に伴いdiconファイルの更新をしました。
今回の変更は、S2Container 2.4のrc-1からrc-2のcustomizerの変更にあわせてS2Flex2側も修正しています。
また、その他1.0.0に向けていくつか変更をしています。
定数アノテーションの導入
JDK1.4の場合は、S2Flex2-backport175を利用してアノテーションを利用していました。 しかしながら、backport175のEclipse用pluginが現在配布されていなかったり、smartDeployでアノテーションが読み出すことができなかったりなど問題があったので、定数アノテーションを導入しました。Serviceクラスに以下のように記述することで、S2Flex2で公開するサービスとして利用することができるようになります。
public Class AddServiceImpl implements AddService{
public static final String REMOTING_SERVICE = "addService";
:
:
データのImport/Exportは以下のように記述することができます。
private String strData; public static final String strData_EXPORT = "session"; public static final String strData_IMPORT = "session";public String getStrData() {
return strData;
}
public void setStrData(String strData) {
this.strData = strData;
}
今後は、JDK1.4ではbackport175ではなく定数アノテーションを使うように考えています。
セッションの問題
Seasar-user:4758での報告を頂いて、Sessionデータを走査する方法を変更しました。 これまでは、SessionのAttributeNamesの結果をまわしながらそのプロパティ名がないかチェックしていたのですが、例外が発生するタイミングがあったので変更しました。AS3->ObjectのAMF3データ変換
配列データの受け渡し部分について一部変更いたしました。 Flex2クライアントからjavaのメソッドを呼び出すときに、引数でArrayを渡したときには 配列で受けるようにします。 以下のようなコードがあったとします。 flex2クライアント(AS3)var a:Array=new Array(); a[0]="1"; a[1]="2"; amfService.updateList(a)このときには、java側では以下のようなメソッドを用意します。
public int updateList(Object[] a)
public int updateList(Bean[] a)
つまり配列で受けるようにします。
以前コメントで頂いた件も受け側の引数を配列にすることで正しく受け取ることができるように思います。
上記のBean[]と書いてあるのは、Flex2クライアント側で渡す配列の要素の型を見て
それを適用して配列を作成します。
Object[]→Object[] (変換なし)
Object[]→Bean[] (配列の第一要素がASObjectの場合は、これを適用して、 Bean[]を生成する)
Bean[]→Bean[] (メソッドの引数の型で、引数データの型を変換する)
上記の変更に加えて、接続コンポーネントも変更しました。そのことについては別エントリーにて(つづく?のか..)
この記事に対するコメント