こんなわけで S2Flex2-Components Beta4をリリースします。
変更点は以下の通りです。
サーバ側ロジック呼び出し時、初回にFlashのエラーが表示されてしまっていたのを修正しました。 flash.netNetConnectionを拡張したorg.seasar.flex2.net.NetConnectionを追加しました。
こちらからdownload することができます。
flex2_exampleに同梱していたs2flex2-components.swcを入れ替えることで初回接続に出ていたエラーがなくなるはずです。
先日リリース したBeta6のサンプルで初回アクセス時にエラーが発生するようになっていました。
これは、初回接続時にサーバ側からcallback関数として"AppendToGatewayUrl"を呼び出すようになっているのですが、これまでのS2Flex2-componentsは無視していたからです。
初回以降は、呼ばれませんのでエラーがでるのは一回だけになります。
今回の修正では、flash.net.NetConnectionを拡張してAppendToGatewayUrlを実装したクラスを追加しました。
S2Flex2
http://s2flex2.sandbox.seasar.org/ja/
Posted by nod at 2006年06月07日 02:06
| コメント (5)
| トラックバック (0)
| Clip!!
|
Clip!!
|
|
digg it!
|
del.icio.us it!
S2Flex2を試してみたのですが・・・。
RPCで呼び出すサービスクラスに対してaspectが効かないような気がするのですが気のせいでしょうか…?
<component name="aaaService" class="aaaServiceImpl">
<meta name="AmfRemotingService"/>
<aspect>aaaIntercepter</aspect>
</component>
として、aaaServiceの、bbb()メソッドをRPCコールすると以下のような例外が出てしまいます。
faultCode:SERVER.PROCESSING faultString:'[ESSR0046]コンポーネント(class aaaImpl$$EnhancedByS2AOP$$1c30993)が見つかりません' faultDetail:'org.seasar.framework.container.ComponentNotFoundRuntimeException: [ESSR0046]コンポーネント(class aaaImpl$$EnhancedByS2AOP$$1c30993)が見つかりません
RPCでコールされるクラス以外のクラスではAOPは効くのですが、
これって私の使い方の誤りでしょうか?それとも仕様でしょうか…。
Posted by: ksk at 2006年06月08日 17:18
私からも質問です。
FlashGatewayサーバって、cookieでjsessionidという名前のセッションIDをやりとりしていると思ったのですが、これをRPCされたメソッド内から参照することはできますか?
RPCをコールしたユーザを区別したいので、jsessionidを利用したいのですが…
Posted by: ぽん at 2006年06月10日 14:22
kskさん。はじめまして。
s2flex2を試して頂いてありがとうございます。
現在アップされているBeta6のexampleをダウンロードしなおして試しました。
ご指摘の通りエラーになりました。
Beta6での制限となってしまいます。m(__)m
その後現在の最新ソースで試したところ再現しませんでした。
Beta6リリース後の開発で改善できているかもしれません。
次のリリースでは
・初回接続時のFlashのエラー(componentsの改善)
・Serviceクラスでアスペクトが効かない
を改善されます。
今しばらくお待ちください。m(__)m
なお、頂いたエラーについてはsesarトラッキングに登録させていただきました。
https://www.seasar.org/issues/browse/FLEX
Posted by: nod at 2006年06月11日 23:50
ぽんさん コメントありがとうございます。
Java側のServiceクラスで、sessionを利用したいということでしょうか。
Sessionを扱うには、いくつか方法があります。
1.serviceクラスのインスタンスをSessionにしてServiceクラスのプロパティにrequestを定義して参照する。
Seasar2に登録されているコンポーネントは、"request"という名前の変数があればDIされます。
public class HogeServiceImpl{
private HttpServletRequest request;
public HttpServletRequest getRequest{
public void HttpServletRequest setRequest(HttpServletRequest request){
:
:
}
あとはサービスメソッドでrequestよりHttpSessionを参照するということもできます。
2.S2Flex2のアノテーションを利用する。
S2Flex2とともに、S2Flex2-tigerまたは、S2Flex2-backport175を利用してアノテーションでSessionに保存、Sessionから取得したデータをBindingすることができます。
ドキュメントはいまのところまだありませんが、Beta6のs2flex2_example2.mxmlからよばれるAddServiceをサンプルとしてやっています。
s2flex2_example2でアクセスして、上の段で計算します。
その後ブラウザでリロードします。
リロード後、下の段にあるenterボタンをクリックすると、最後に計算した結果(AddDto)がsessionより取り出されて復元されます。
この仕組みを使えばページ処理や認証などに使えると思います。
Session周りやメタタグなどは、これからまだまだ改良の余地があるので変わっていく可能性もありますがご意見などありましたら、フィードバックお願いいたします。m(__)m
Posted by: nod at 2006年06月12日 02:31
こんばんは。
Beta6における限定仕様!?ということですね。了解です。
早々のレスありがとうございます。
S2Flex2使ってみていますが、非常に便利です。
ありがとうございます。本家のFlexServerのキラーコンテンツかもしれませんね。
Posted by: ksk at 2006年06月12日 20:25
この記事のトラックバックURL
この記事に対するトラックバック
この記事に対するコメント