mx.servicetags
RemoteObject クラス
RemoteObject クラス
mx.servicetags.Service の拡張<mx:RemoteObject> タグを使用すると、Java オブジェクトを手動で SOAP ベースの Web サービスとして設定しなくても、オブジェクトのメソッドにアクセスできます。<mx:RemoteObject> タグを使用すると、AMF (Action Message Format) エンコードを使用して Java オブジェクトとデータをやり取りできます。RemoteObject クラスは Service クラスを拡張しますが、header() メソッドおよび setEndpointURI() メソッドは適用されません。
MXML シンタックス
<mx:RemoteObject> タグには、次のプロパティを使用できます。
<mx:RemoteObject
concurrency="multiple|single|last"
endpoint="No default."
fault="No default."
id="No default."
protocol="http|https"
result="No default."
serviceName="No default."
showBusyCursor="false|true"
source="No default."
type="stateless-class|stateful-class"
/>
これらのプロパティについては、http://livedocs.macromedia.com/flex で入手できる『Flex アプリケーション開発ガイド』の「データサービスの使用」に解説があります。
メモ : HTTP でサービスされている Flex アプリケーションから HTTPS を介してリモートオブジェクトサービスにアクセスするには、protocol プロパティを https に設定する必要があります。 <mx:RemoteObject> タグには、次のプロパティを持つ <mx:method> タグを複数置くことができます。
<mx:method
concurrency="multiple|single|last"
fault=No default.
name=No default, required
result=No default.
/>
このタグの下には、<mx:arguments> 子タグを 1 つ置くことができ、さらにこのタグの下にも子タグを置くことができます。各子タグは RemoteObject メソッドへのパラメータで、1 番目のタグが 1 番目のパラメータ、2 番目のタグが 2 番目のパラメータというように順次パラメータが決まります。タグの名前は無視されます。
例を参照するにはここをクリックしてください
| RemoteObjectExample.mxml |
<?xml version="1.0" encoding="utf-8"?>
<!-- この例をローカルで実行する手順です。
1. - 以下の java コードをコピーして、"WEB-INF/classes/example" フォルダ
(Java Objects は Flex Web アプリケーションのクラスパスにあります) の下に "RemoteInfo.java" として保存します。
- RemoteInfo.java ファイルをコンパイルします。
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Start of RemoteInfo.java_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/**
* RemoteObject タグの使用方法を示す簡単な Java クラス
*
**/
package example;
public class RemoteInfo
{
public String getInfo()
{
String info;
info = "Working with remote object services."+ '\n'
+ "- <mx:RemoteObject>タグを使用して、Flex が動作している Java アプリケーションサーバー上にある" + '\n'
+ " Java オブジェクトのメソッドを呼び出すことができます。" + '\n'
+ '\n'
+ "<mx:RemoteObject> タグでは、Macromedia Flash Remoting で使用されるエンコード方式である AMF を使用します。" + '\n'
+ "AMF 伝達は SOAP 伝達よりも高速で、使用するネットワーク帯域幅も少なくなります。" + '\n'
+ '\n'
+ "- 次のような Java オブジェクトのメソッドを呼び出すことができます。" + '\n'
+ " Flex Web アプリケーションのクラスパス内にあるオブジェクト " + '\n'
+ " セッションサーブレット (セッション変数へのアクセスに使用されます)" + '\n'
+ "_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ";
return info;
}
}
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ End of RemoteInfo.java_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
2. flex-config.xml ファイルを編集して、次のように <remote-objects> の名前のないホワイトリストに
example フォルダを追加します。
<unnamed>
<source>example.*</source>
</unnamed>
3. RemoteObjectExample.mxml コードを Flex サーバーにコピーした後に例を実行します。
-->
<!-- RemoteObject の使用方法を示す簡単な例 -->
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" backgroundColor="#FFFFFF">
<mx:RemoteObject id="remoteTagInfo" source="example.RemoteInfo">
<mx:method name="getInfo" result="resultHandler(event.result)"/>
</mx:RemoteObject>
<mx:Script>
<![CDATA[
var infoStr:String;
function getdata()
{
remoteTagInfo.getInfo();
}
function resultHandler(result)
{
infoStr= result;
}
]]>
</mx:Script>
<mx:Panel title="Remote Object Panel" width="60%" height="45%">
<mx:Button label="Get Data" click="getdata();"/>
<mx:TextArea text="{infoStr}" width="100%" height="100%"/>
</mx:Panel>
</mx:Application>
|