| Package | jp.co.fujitsu.reffi.client.flex.model.rpc |
| Class | public class WebServiceCore |
| Inheritance | WebServiceCore RPCCore BaseModel flash.events.EventDispatcher |
[概 要]
リモートサーバに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を送信しました");
}
}
[備 考]
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 getGreenSheetInfo(@WebParam String brandName) throws IOException{
List greenSheetInfo = new ArrayList();
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.
| Property | Defined by | ||
|---|---|---|---|
![]() | 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 | |
![]() |
run():void
[概 要] コントローラにコールされるモデルの主幹メソッドです. | BaseModel | |
| Method | Defined by | ||
|---|---|---|---|
|
createConcreteService():IEventDispatcher
[概 要] 具象通信オブジェクトを作成します. | WebServiceCore | ||
![]() |
faultHandler(event:FaultEvent):void
[概 要] 受信失敗ハンドラです. | RPCCore | |
![]() |
finallyProc():void
[概 要] run()が終了したタイミングでテンプレートコールされるメソッドです. | BaseModel | |
|
mainProc():void
[概 要] メイン処理メソッドです. | WebServiceCore | ||
![]() |
onFailure(event:FaultEvent, parameterMapping:ParameterMapping):void
[概 要] 受信失敗処理用オーバーライドメソッドです. | RPCCore | |
![]() |
onSuccess(event:ResultEvent, parameterMapping:ParameterMapping):void
[概 要] 受信成功処理用オーバーライドメソッドです. | RPCCore | |
![]() |
postProc():void
[概 要] 後処理テンプレートメソッドです. | BaseModel | |
![]() |
preProc():Boolean
[概 要] 前処理テンプレートメソッドです. | BaseModel | |
![]() |
resultHandler(event:ResultEvent):void
[概 要] 受信成功ハンドラです. | RPCCore | |
![]() |
trap(e:Error):Error
[概 要] run()内で発生した全例外をハンドリングするメソッドです. | BaseModel | |
| headers | property |
headers:Array [read-write]
[概 要]
SOAPヘッダ情報です.[詳 細]
既存のSOAPヘッダ情報は全て上書きされます。[備 考]
実装 public function get headers():Array
public function set headers(value:Array):void
| methodName | property |
methodName:String [read-write]
[概 要]
実行するメソッド名です.[詳 細]
WSDLに記述されているメソッド名を指定します。[備 考]
実装 public function get methodName():String
public function set methodName(value:String):void
| resultFormat | property |
resultFormat:String [read-write]
[概 要]
受信データフォーマットです.[詳 細]
「object」「e4x」「xml」が指定可能です。[備 考]
The default value is object.
public function get resultFormat():String
public function set resultFormat(value:String):void
関連項目
| wsdl | property |
wsdl:String [read-write]
[概 要]
読み込むWSDLのロケーションです.[詳 細]
[備 考]
実装 public function get wsdl():String
public function set wsdl(value:String):void
| wsParameter | property |
wsParameter:Array [read-write]
[概 要]
メソッド引数です.[詳 細]
methodNameで指定したメソッドが持つパラメータです。 第一引数、第二引数・・・と順番に値が入ります。[備 考]
実装 public function get wsParameter():Array
public function set wsParameter(value:Array):void
| addHeader | () | method |
public function addHeader(header:Object):void
[概 要]
SOAPヘッダ情報を追加します.[詳 細]
既に登録されているSOAPヘッダ情報に追加登録します。[備 考]
パラメータheader:Object — SOAPヘッダ情報
|
| addWsParameter | () | method |
public function addWsParameter(value:Object):Object
[概 要]
メソッド引数を追加します.[詳 細]
methodNameで指定したメソッドのパラメータを設定します。[備 考]
パラメータvalue:Object |
Object |
| createConcreteService | () | method |
protected final override function createConcreteService():IEventDispatcher
[概 要]
具象通信オブジェクトを作成します.[詳 細]
WebServiceオブジェクトを生成して返却します。[備 考]
戻り値IEventDispatcher — WebServiceオブジェクト
|
| mainProc | () | method |
protected override function mainProc():void
[概 要]
メイン処理メソッドです.[詳 細]
WebServiceオブジェクトに対してプロパティ情報を設定して通信を開始します。 通信確立の為以下の処理が行われます。[備 考]