2011-08-03 17 views
0

私は実行時にWSDLをロードし、定義したいくつかの異なるWebサービス間で共有するフレックスアプリを持っています。残念なことに、loadWSDL()を呼び出すたびにネットワーク要求が行われますが、実際にキャッシュすることで問題は発生しませんが、生成されたすべてのリクエストを生成するのは面倒で無駄です。この問題を解決するための簡単な方法はありますか?フレックスWebServicesは共通のwsdlを共有しています

私のコードは、現在のようなものです:

var services:Array = ['service1', 'service2', ...] 
for each (var name:String in services) { 
    var s:WebService = ServiceLocator.getInstance().getService(name) as WebService; 
    s.wsdl = wsdl; 
    s.loadWSDL(); 
} 

任意の助けが理解されるであろう。

+0

まずは、* cairngorm2 *は使用しないでください。それは恐ろしいフレームワークです。第2に、それぞれのWSDLがまったく同じ場合、なぜ呼び出すたびに新しいサービスを作成する必要がありますか? WSDLを一度ロードするだけで済みます(リクエストによって自動的にサービスが実行されるのではありませんか?)。あなたが手動でそれをするように強制されているようだ... –

+0

@J_A_Xええ、私はcairngormが吸うことに同意するが、それはそこにあったもので、私は一般化されたクラスの束にハックした後私のために働く。私は定義した各サービスのwsdlをロードするだけで、新しいサービスを作成しているわけではありません。しかし、wsdlは実行時まで認識されていないので、loadscribe()を手動で実行する必要があります。これは、actionscriptでwsdlの場所を定義する必要がある場合には、単独では実行できないためです。ダムの機能は私が思う。 – Kevin

+0

私はまだ問題を起こさない。同じWSDLを使用している場合、なぜあなたはたくさんのサービスを持っていますか?同じWSDLに対して同じWebServiceを持ち、コマンド/代理人を使用して呼び出している操作を変更するだけではどうですか? –

答えて

0

読み込まれた各WSDLのインターフェイスが異なる場合(つまり、Web操作が異なる場合)、各インターフェイス/ WSDLを個別に読み込むよりも選択肢がありません。クライアントサイドにキャッシュする必要があるため、アプリケーションにはWebサービスを表す属性や関数を入力する手段があります。

wsdlをロードしてクライアント側のコードが何も呼び出されていない場合は、本当に自分自身にサービスを停止させるでしょう。