Package | jp.co.fujitsu.reffi.client.flex.model.rpc |
Class | public class WebServiceCore |
Inheritance | WebServiceCore ![]() ![]() ![]() |
[概 要]
リモートサーバにSOAPリクエストを行う為の機能モデルクラスです.[詳 細]
WSDLが公開されているSOAPベースのWebサービスと通信を行います。 提供されているサービスメソッドの粒度が細かい場合、アクションにこのクラスを複数登録することで 1アクション内でマッシュアップが可能です。public class WebServiceMashUpAction extends BaseAction { override protected function reserveModels(models:Array):void { // getEmployeeId用 models.push(Class(WebServiceCore)); // getEmployeeEmailAddress用 models.push(Class(WebServiceCore)); // sendEmail用 models.push(Class(WebServiceCore)); } override public function nextModel(index:int, prev:ModelProcessEvent, next:BaseModel):Boolean { WebServiceCore(next).wsdl = "employeeService?wsdl"; switch(index) { case 0: var employeeName:String = TextInput(getComponentByName("txtEmployeeName")).text; WebServiceCore(next).methodName = "getEmployeeId"; WebServiceCore(next).addWsParameter(employeeName); break; case 1: var employeeId:String = ResultEvent(prev.cause).result as String; WebServiceCore(next).methodName = "getEmployeeEmailAddress"; WebServiceCore(next).addWsParameter(employeeId); break; case 2: var employeeEmailAddress:String = ResultEvent(prev.cause).result as String; WebServiceCore(next).methodName = "sendEmail"; WebServiceCore(next).addWsParameter(employeeEmailAddress); WebServiceCore(next).addWsParameter(TextInput(getComponentByName("taEmailContent")).text); break; } return true; } override public function failureForward(index:int, model:BaseModel, faultEvent:Event):Event { switch(index) { case 0: trace("従業員名が登録されていません"); break; case 1: trace("Emailアドレスが登録されていません"); break; case 2: trace("Email送信中にエラーが発生しました"); break; } return faultEvent; } override public function complete():void { trace("Emailを送信しました"); } }
[備 考]
Property | Defined By | ||
---|---|---|---|
![]() | asyncToken : Object
[概 要]
非同期通信トークンです. | RPCCore | |
![]() | cache : Dictionary [static]
[概 要]
static通信オブジェクトキャッシュプロパティです. | RPCCore | |
![]() | cacheMode : Boolean
[概 要]
通信先が同じであれば各種通信オブジェクトをキャッシュします. | RPCCore | |
![]() | controller : BaseController
[概 要]
このモデルを起動したコントローラインスタンスです. | BaseModel | |
![]() | executeIndex : int
[概 要]
実行インデックス設定. | BaseModel | |
headers : Array
[概 要]
SOAPヘッダ情報です. | WebServiceCore | ||
methodName : String
[概 要]
実行するメソッド名です. | WebServiceCore | ||
![]() | parameterMapping : ParameterMapping
[概 要]
MVC各レイヤを伝播するパラメータオブジェクトです. | BaseModel | |
resultFormat : String
[概 要]
受信データフォーマットです. | WebServiceCore | ||
![]() | service : IEventDispatcher
[概 要]
継承先で定義される、各種通信オブジェクトのI/Fです. | RPCCore | |
![]() | skip : Boolean
[概 要]
このモデルを実行するか、コントローラが判断する為のフラグです. | BaseModel | |
![]() | successCount : int
[概 要]
モデルインスタンス生存中に、何回モデル処理が成功したかを保持します. | BaseModel | |
wsdl : String
[概 要]
読み込むWSDLのロケーションです. | WebServiceCore | ||
wsParameter : Array
[概 要]
メソッド引数です. | WebServiceCore |
Method | Defined By | ||
---|---|---|---|
addHeader(header:Object):void
[概 要]
SOAPヘッダ情報を追加します. | WebServiceCore | ||
addWsParameter(value:Object):Object
[概 要]
メソッド引数を追加します. | WebServiceCore | ||
![]() | dispatchModelFailure(event:ModelProcessEvent):void
[概 要]
モデル処理失敗イベントを発行するメソッドです. | BaseModel | |
![]() | dispatchModelFinished(event:ModelProcessEvent):void
[概 要]
モデル処理完了イベントを発行するメソッドです. | BaseModel | |
![]() | dispatchModelSuccess(event:ModelProcessEvent):void
[概 要]
モデル処理成功イベントを発行するメソッドです. | BaseModel | |
![]() | incrementSuccessCount():int
[概 要]
ModelProcessEvent.SUCCESS発行回数を1増加させます. | BaseModel | |
![]() | removeAllCache():void [static]
[概 要]
通信オブジェクトキャッシュを全て削除します. | RPCCore | |
![]() | removeCache(cacheId:String):void [static]
[概 要]
通信オブジェクトキャッシュを削除します. | RPCCore | |
![]() | run():void
[概 要]
コントローラにコールされるモデルの主幹メソッドです. | BaseModel |
Method | Defined By | ||
---|---|---|---|
cacheId():String [override]
[概 要]
キャッシュモード実行時、通信オブジェクトを識別する為のIDを返却します. | WebServiceCore | ||
createConcreteService():IEventDispatcher [override]
[概 要]
具象通信オブジェクトを作成します. | WebServiceCore | ||
![]() | faultHandler(event:FaultEvent):void
[概 要]
受信失敗ハンドラです. | RPCCore | |
![]() | finallyProc():void
[概 要]
run()が終了したタイミングでテンプレートコールされるメソッドです. | BaseModel | |
finishConnect():void [override]
[概 要]
通信成功、失敗に関わらずコールされます. | WebServiceCore | ||
![]() | mainProc():void [override]
[概 要]
メイン処理メソッドです. | RPCCore | |
![]() | onFailure(event:FaultEvent, parameterMapping:ParameterMapping):void
[概 要]
受信失敗処理用オーバーライドメソッドです. | RPCCore | |
![]() | onFinish(parameterMapping:ParameterMapping):void
[概 要]
通信終了処理実装メソッドです. | RPCCore | |
![]() | onSuccess(event:ResultEvent, parameterMapping:ParameterMapping):void
[概 要]
受信成功処理用オーバーライドメソッドです. | RPCCore | |
![]() | postProc():void
[概 要]
後処理テンプレートメソッドです. | BaseModel | |
![]() | preProc():Boolean
[概 要]
前処理テンプレートメソッドです. | BaseModel | |
![]() | resultHandler(event:ResultEvent):void
[概 要]
受信成功ハンドラです. | RPCCore | |
send(dispatcher:IEventDispatcher):Object [override]
[概 要]
メイン処理メソッドです. | WebServiceCore | ||
![]() | trap(e:Error):Error [override]
[概 要]
非同期通信開始前のエラーをハンドリングします. | RPCCore |
headers | property |
headers:Array
[概 要]
SOAPヘッダ情報です.[詳 細]
既存のSOAPヘッダ情報は全て上書きされます。[備 考]
public function get headers():Array
public function set headers(value:Array):void
methodName | property |
methodName:String
[概 要]
実行するメソッド名です.[詳 細]
WSDLに記述されているメソッド名を指定します。[備 考]
public function get methodName():String
public function set methodName(value:String):void
resultFormat | property |
resultFormat:String
[概 要]
受信データフォーマットです.[詳 細]
「object」「e4x」「xml」が指定可能です。[備 考]
The default value is object
.
public function get resultFormat():String
public function set resultFormat(value:String):void
See also
wsdl | property |
wsdl:String
[概 要]
読み込むWSDLのロケーションです.[詳 細]
[備 考]
public function get wsdl():String
public function set wsdl(value:String):void
wsParameter | property |
wsParameter:Array
[概 要]
メソッド引数です.[詳 細]
methodNameで指定したメソッドが持つパラメータです。 第一引数、第二引数・・・と順番に値が入ります。[備 考]
public function get wsParameter():Array
public function set wsParameter(value:Array):void
addHeader | () | method |
public function addHeader(header:Object):void
[概 要]
SOAPヘッダ情報を追加します.[詳 細]
既に登録されているSOAPヘッダ情報に追加登録します。[備 考]
Parameters
header:Object — SOAPヘッダ情報
|
addWsParameter | () | method |
public function addWsParameter(value:Object):Object
[概 要]
メソッド引数を追加します.[詳 細]
methodNameで指定したメソッドのパラメータを設定します。 呼び出すサービスメソッドが以下のようなシグネチャを持っている場合、 public int registProduct(int productId, String productName); addWsParameter(5); addWsParameter("ノートPC"); のように追加します。[備 考]
Parameters
value:Object |
Object |
cacheId | () | method |
override protected function cacheId():String
[概 要]
キャッシュモード実行時、通信オブジェクトを識別する為のIDを返却します.[詳 細]
wsdlプロパティを返却します。 cacheIdはcacheModeプロパティがtrueの場合のみ使用されます。[備 考]
ReturnsString — 通信オブジェクトを識別する為のキャッシュID
|
createConcreteService | () | method |
override protected final function createConcreteService():IEventDispatcher
[概 要]
具象通信オブジェクトを作成します.[詳 細]
WebServiceオブジェクトを生成して返却します。[備 考]
ReturnsIEventDispatcher — WebServiceオブジェクト
|
finishConnect | () | method |
override protected final function finishConnect():void
[概 要]
通信成功、失敗に関わらずコールされます.[詳 細]
処理は有りません。[備 考]
通信終了処理実装はonFinishをオーバーライドしてください。send | () | method |
override protected function send(dispatcher:IEventDispatcher):Object
[概 要]
メイン処理メソッドです.[詳 細]
WebServiceオブジェクトに対してプロパティ情報を設定して通信を開始します。 通信確立の為以下の処理が行われます。[備 考]
Parameters
dispatcher:IEventDispatcher |
Object — AsyncToken
|
package test.server; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; import javax.annotation.Resource; import javax.jws.WebParam; import javax.jws.WebResult; import javax.jws.WebService; import javax.servlet.ServletContext; import javax.xml.ws.WebServiceContext; import javax.xml.ws.handler.MessageContext; @WebService public class DummyService { @Resource private WebServiceContext wsContext; @WebResult(name="getGreenSheetReturn") public List<GreenSheet> getGreenSheetInfo(@WebParam String brandName) throws IOException{ List<GreenSheet> greenSheetInfo = new ArrayList<GreenSheet>(); MessageContext msgContext = wsContext.getMessageContext(); ServletContext servletContext = (ServletContext) msgContext .get(MessageContext.SERVLET_CONTEXT); String filePath = servletContext.getRealPath("/greensheet.csv"); FileInputStream fis = new FileInputStream(filePath); InputStreamReader in = new InputStreamReader(fis,"SJIS"); BufferedReader br = new BufferedReader(in); String line = null; while((line = br.readLine()) != null){ StringTokenizer tokenizer = new StringTokenizer(line, ","); GreenSheet greenSheet = new GreenSheet(); greenSheet.setRegistDate(tokenizer.nextToken()); greenSheet.setMemberName(tokenizer.nextToken()); greenSheet.setBrandName(tokenizer.nextToken()); greenSheet.setMarket(tokenizer.nextToken()); greenSheet.setHandlingBrand(tokenizer.nextToken()); greenSheet.setPublicDivision(tokenizer.nextToken()); greenSheet.setTradeDate(tokenizer.nextToken()); greenSheet.setBuyAndSellDivision(tokenizer.nextToken()); greenSheet.setAmount(tokenizer.nextToken()); greenSheet.setPrice(tokenizer.nextToken()); greenSheet.setOpponent(tokenizer.nextToken()); greenSheet.setDivision(tokenizer.nextToken()); if("".equals(brandName) || brandName.equals(greenSheet.getBrandName())) { greenSheetInfo.add(greenSheet); } } br.close(); fis.close(); return greenSheetInfo; } }
<servlet> <servlet-name>DummyWS</servlet-name> <servlet-class>test.server.DummyService</servlet-class> </servlet> <servlet-mapping> <servlet-name>DummyWS</servlet-name> <url-pattern>/dummyservice</url-pattern> </servlet-mapping>
package test.client.action { import flash.events.Event; import jp.co.fujitsu.reffi.client.flex.action.BaseAction; import jp.co.fujitsu.reffi.client.flex.events.ModelProcessEvent; import jp.co.fujitsu.reffi.client.flex.model.BaseModel; import jp.co.fujitsu.reffi.client.flex.model.rpc.WebServiceCore; import mx.collections.ArrayCollection; import mx.controls.TextInput; import mx.rpc.events.ResultEvent; public class SOAPRequestAction extends BaseAction { override protected function reserveModels(models:Array):void { models.push(Class(WebServiceCore)); } override public function nextModel(index:int, prev:ModelProcessEvent, next:BaseModel):Boolean { if(index == 0) { var brandName:String = TextInput(getComponentByName("txtBrandName")).text; WebServiceCore(next).wsdl = "dummyservice?wsdl"; WebServiceCore(next).methodName = "getGreenSheetInfo"; WebServiceCore(next).addWsParameter(brandName); } return true; } override public function successForward(index:int, model:BaseModel, resultEvent:Event):void { var results:ArrayCollection = ResultEvent(resultEvent).result as ArrayCollection; for each(var greenSheet:Object in results) { trace( greenSheet["registDate"] + ", " + greenSheet["memberName"] + ", " + greenSheet["brandName"] + ", " + greenSheet["market"] + ", " + greenSheet["handlingBrand"] + ", " + greenSheet["publicDivision"] + ", " + greenSheet["tradeDate"] + "," + greenSheet["buyAndSellDivision"] + ", " + greenSheet["amount"] + ", " + greenSheet["price"] + ", " + greenSheet["opponent"] + ", " + greenSheet["division"] ); } } override public function complete():void { trace("SOAP Request Complete"); } } }
2009/3/1, ○○証券代行株式会社, ○○ソフトウェアエンジニアリング, エマージング, 株券, 毎日, 2009/3/1,売, 50, 25500, △△証券株式会社, 委託売買 2009/3/1, ○○証券代行株式会社, ○○ソフトウェアエンジニアリング, リージョナル, 株券, 毎日, 2009/3/1,買, 50, 25500, ××証券株式会社, 委託売買 : : 2009/3/1, ○○証券代行株式会社, ○○ソフトウェアエンジニアリング, エマージング, 株券, 毎日, 2009/3/1,売, 13, 25000, △△証券株式会社, 委託売買 2009/3/1, ○○証券代行株式会社, ○○ソフトウェアエンジニアリング, フェニックス, 株券, 毎日, 2009/3/1,買, 13, 25000, △△証券株式会社, 委託売買 SOAP Request Complete
Copyright (c) 2008-2009 FUJITSU Japan All rights reserved.