nod::ぶろぐ:RIA::Flex/AIR/Flash

FlashやFlex,(Ajax),S2Flex2,ActionScript3,yui-frameworks,Akabanaプロジェクトなどのメモ帳

サーバ側で発生した例外をFlexで受け取る

最近はやり?のサーバロジックを呼び出す際に、サーバ側で発生したエラー情報をクライアント(Flex)で受け取る方法が書かれたエントリーを集めてみました。

RemoteObjectやWebServiceなど呼び出し方法やサーバ実装によって取得方法が異なるようです。
WebServiceなんかは、ServerStatusCodeが200番でないと、エラー情報が取得できないらしく、みなさんServletのfilterやASP.NETのGlobal.asxなどで変更して対応しているようです。

WebServiceについてはBlazeDSのproxyを使った場合で変わったりするのでしょうか?ちょっと気になるところです。

RemoteObjectを使った例ではWebOrb(.NET)やColdFusion、Javaなどの例がありました。
エラー発生時にはFaultEventが送出されるので、そのFaultEventからFaultを取得しそこから例外情報を取得します。

こんな風にタグを書いて..
<mx:RemoteObject id="srv" destination="hogeServic" showBusyCursor="true" result="event.token.resultHandler(event)" fault="event.token.faultHandler(event)"/>

こんな風にFaultを取得します。


public function faultHandler(event:FaultEvent):void{
var fault:Fault = event.fault as Fault;
}

Faultから、例外やエラー情報を取得します。

#Javaの例外内容を取得する方法はこちら。
Sending extra data in Java Exceptions to Flex Clients
http://blogs.eyepartner.com/adrian/flex/sending-extra-data-in-java-exceptions-to-flex-clients/

#サーバがBlazeDSの例
Handling Java Exceptions in Flex application « Sujit Reddy G - The Evangelist
http://sujitreddyg.wordpress.com/2008/02/12/handling-java-exceptions-in-flex-application/

#FxUGのフォーラムにあった、FaultからrootCause経由で取得する方法。これがきっかけでS2Flex2とComponentsのバージョンアップにつながりました。
Java側で発生した例外の内容を取得する方法
http://www.fxug.net/modules/xhnewbb/viewtopic.php?viewmode=flat&topic_id=1752&forum=15

#sato-shiさんも過去に紹介していましたっ
Javaの例外を取る - Flex Coder
http://d.hatena.ne.jp/sato-shi/20080224/p18

#WebService経由だと例外が発生してstatusCodeが500になってしまいます。Flex側ではStatusCodeが200でないと受け取れません。Servletフィルタを使って無理やり500->200にしています。強引だ..。
Stack Overflow Handling Web Service exception in Flex code
http://stackoverflowexception.blogspot.com/2007/02/handing-web-service-exception-in-flex.html

#FxUGのフォーラムの投稿 ASP.NETでの対応コードがあります。やっぱりstatusCodeを200番に変更して対応してるようです。
WebServiceからのSOAP Faultを正しく受け取りたい
http://www.fxug.net/modules/xhnewbb/viewtopic.php?viewmode=flat&topic_id=554&forum=1

#サーバがColdFusionのケースはこちらのエントリーを参考に。
Bruce Phillips' Blog Handling ColdFusion Custom Exceptions In Flex
http://www.brucephillips.name/blog/index.cfm/2008/4/27/Handling-ColdFusion-Custom-Exceptions-In-Flex

Flex2 + NET(WebOrb)については、devnetに記事がありました。
Adobe - Developer Center Handling .NET exceptions in Flex
http://www.adobe.com/devnet/flex/articles/net_exceptions.html

#AS2の例
Exceptions and Exception Handling - ActionScript.org Flash, Flex and
ActionScript Resources
http://www.actionscript.org/resources/articles/603/15/Exceptions-and-Exception-Handling/Page15.html

Posted by nod at 2008年05月05日 01:29 | コメント (0) | Clip!! | Clip!! | このエントリーを含むはてなブックマーク |digg it! |del.icio.us it!

この記事に対するコメント

この記事に対するコメントはまだありません。


コメントを投稿する




保存しますか?



Flex.org - The Directory for Flex Get Adobe Flash Player Made with dreamweaverMade with fireworksPowered by Movable Type 3.36Powered by Wandering Wind
Copyright : [Articles] (C) nod::ぶろぐ:RIA::Flex/AIR/Flash All Rights Reserved.
[Comments/Trackbacks] ... Authors of those have rights.