ここでは、Flash連携特有の手順のみを説明します。各ファイルの概要や作成方法は通常のWebcoordinatorアプリケーションと同様です。“第3章 Apcoordinatorアプリケーションの主な構成要素”を参照してください。
サーブレットクラスはFlashServletクラスを継承して作成します。 メソッドを追加する必要はありません。
public class MainServlet extends com.fujitsu.uji.http.FlashServlet { public MainServlet() { super(); } }
web.xmlでは、次の2点を設定します。
サーブレットを呼び出せるように"servlet"タグと"servlet-mapping"タグを記述します。
ビジネスクラスから返却するオブジェクトのデフォルトの型を"uji.flash.returnValue"初期化パラメタで指定します。この指定によって、アプリケーション例外が発生した場合のクライアントへの通知方法が異なります。デフォルトは"JSP"に設定されています。詳細は“アプリケーション例外が発生した場合のクライアントへの通知方法”を参照してください。
以下の例はサーブレットクラスがflash.MainServletの場合で、ビジネスクラスから返却するオブジェクトのデフォルトの型をデータBeanの場合です。
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> ... <context-param> <param-name>uji.flash.returnValue</param-name> <param-value>DataBean</param-value> </context-param> ... <servlet> <servlet-name>MainServlet</servlet-name> <servlet-class>flash.MainServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>MainServlet</servlet-name> <url-pattern>/MainServlet</url-pattern> </servlet-mapping> ... </web-app>
データBeanは通常のWebcoordinatorアプリケーションと同様です。XMLデータBeanを使用する場合はデータBeanを作成する必要はありません。
ビジネスクラス内のメソッドでの返却値は、Flashで使用されたActionScriptのメソッドによって異なります。
LoadVars.sendAndLoadまたはXML.sendAndLoadを使用している場合は、データBeanまたはXMLデータBeanを返却します。
データBeanを返却する例
public Object doSomething(com.fujitsu.uji.DispatchContext context, com.fujitsu.uji.DataBean dataBean){ // ビジネスロジックを記述 return MyDataBean; }
注意
データBeanを返却する場合、値として"&"や"="を使用することはできません。
LoadVars.sendまたはXML.sendを使用している場合は、JSP名かHTMLファイル名を返却します。ファイル名には任意の文字列を指定することができます。 JSP名を返却する場合は、DispatchContextクラスのsetResponseBeanメソッドを使用してJSP内で使用するデータBeanを設定することが可能です。
JSP名を返却する例
public Object doSomething(com.fujitsu.uji.DispatchContext context, com.fujitsu.uji.DataBean dataBean){ // ビジネスロジックを記述 context.setResponseBean("body", dataBean); return "nextPage.jsp"; }
また、"uji.flash.returnValue"初期化パラメタで指定された値と異なるオブジェクトを返却する場合は、DispatchContextオブジェクトをFlashDispatchContextクラスにキャストし、setReturnValueメソッドで必ず指定してください。下記はJSPを返却する場合の指定例です。
public Object doSomething(com.fujitsu.uji.DispatchContext context, com.fujitsu.uji.DataBean dataBean){ ((FlashDispatchContext)context).setReturnValue(FlashDispatchContext.RETURN_JSP); context.setResponseBean("body", dataBean); return "nextPage.jsp"; }
コマンドマップは通常のWebcoordinatorアプリケーションと同様です。以下に例を示します。
mypkg.MyDataBean;myverb=mypkg.MyHandler.doVerb
/root;=mypkg.MyHandler.doVerbXml
アプリケーション例外が発生した場合のクライアントへの通知方法
サーバアプリケーションで例外が発生した場合、クライアントへは次の2通りの通知方法があります。
uji_flashExceptionによるFlashへの通知
画面遷移が発生する場合のエラーページによる通知
前者はsendAndLoadメソッドを使用して通信している場合に用いるもので、後者はsendメソッドを利用して通信している場合に用いるものです。上記の2つの通知方法は、uji.flash.returnValue初期化パラメタで指定する方法と、FlashDispatchContextクラスのsetReturnValueメソッドで指定する方法があります。
uji.flash.returnValue初期化パラメタによって指定された値は、アプリケーションで共通の設定となります。uji_flashExceptionによる通知を行う場合は"DataBean"を、エラーページによる通知を行う場合は"JSP"を指定してください。省略した場合は"JSP"となります。
setReturnValueメソッドで指定することで、リクエストごとの指定が可能です。setReturnValueメソッドによって指定された値は"uji.flash.returnValue"初期化パラメタによる指定より優先度が高くなります。ただし、setReturnValueメソッドが呼ばれる前に例外が発生した場合は"uji.flash.returnValue"初期化パラメタの値が有効になります。エラーページによる通知を行う場合は"FlashDispatchContext.RETURN_JSP"を、uji_flashExceptionによる通知を行う場合は"FlashDispatchContext.RETURN_DATABEAN"を使用してください。メソッドを使用しない場合は"uji.flash.returnValue"初期化パラメタによる指定が有効となります。