Flash または Java アプリケーションからの Remoting Service

LIVECYCLE DATA SERVICES ES 141
LiveCycle Data Services ES 2.6.1 開発ガイド
Flash または Java アプリケーションからの Remoting
Service の宛先の呼び出し
注意:以下の内容は、『Remoting Service の使用』への補足です。
Flash Player の NetConnection API を使用することで、必要に応じて、(Flex 以外の)標準的な Flash アプリケーショ
ンまたは Flex アプリケーションの ActionScript から、Remoting Service の宛先を呼び出すことができます。LiveCycle
Data Services ES の AMFConnection API は、NetConnection API に基づいている Java API ですが、Java アプリケー
ションから Remoting Service の宛先を呼び出すことができる点が異なります。上述のどちらかの API を、LiveCycle
Data Services ES、BlazeDS またはサードパーティのリモート実装で使用できます。
Flash アプリケーションからの宛先の呼び出し
Flash Player の flash.net.NetConnection API を使用して、Flash アプリケーションから Remoting Service の宛先を呼
び出すことができます。NetConnection.connect() メソッドを使用して宛先に接続し、NetConnection.call() メ
ソッドを使用してサービスを呼び出します。次の MXML コード例は、RemoteObject ではなく NetConnection を使用
して Remoting Service を呼び出す方法を示しています。
<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%"
creationComplete="creationCompleteHandler();">
<mx:Panel id="mainPanel" height="100%" width="100%">
<mx:HBox>
<mx:Label text="Enter a text for the server to echo"/>
<mx:TextInput id="ti" text="Hello World!"/>
<mx:Button label="Send" click="echo()"/>
<mx:Button label="Clear" click='ta.text = ""'/>
</mx:HBox>
<mx:TextArea id="ta" width="100%" height="100%"/>
</mx:Panel>
<mx:Script>
<![CDATA[
import flash.net.NetConnection;
import flash.net.ObjectEncoding;
import flash.net.Responder;
private var nc:NetConnection
private function creationCompleteHandler():void {
// Create the connection.
nc = new NetConnection();
nc.objectEncoding = ObjectEncoding.AMF0;
// Connect to the remote URL.
nc.connect("http://[server]:[port]/yourapp/messagebroker/amf" );
}
private function echo():void {
// Call the echo method of a destination on the server named remoting_AMF.
nc.call( "remoting_AMF.echo", new Responder( resultHandler, faultHandler ),
ti.text );
}
private function resultHandler(result:Object):void {
ta.text += "Server responded: "+ result + "\n";
}
private function faultHandler(fault:Object):void {
ta.text += "Received fault: " + fault + "\n";
}
]]>
</mx:Script>
</mx:Application>
LIVECYCLE DATA SERVICES ES 142
LiveCycle Data Services ES 2.6.1 開発ガイド
Java アプリケーションからの宛先の呼び出し
AMFConnection API は、flex-messaging-core.jar ファイルに含まれる新しい Java クライアント API です。
AMFConnection API を使用することで、Java アプリケーションから Remoting Service の宛先を処理できるようにな
ります。AMFConnection API を使用する Java クラスをコンパイルするには、flex-messaging-core.jar ファイルと
flex-messaging-common.jar ファイルの両方がクラスパスに含まれている必要があります。
AMFConnection API は、Flash Player の flash.net.NetConnection API に似ていますが、ActionScript コーディング
パターンではなく、一般的な Java コーディングパターンを使用します。クラスは、flex-messaging-amf.jar ファイルの
flex.messaging.io.amf.client* パッケージに含まれています。主要なクラスは AMFConnection クラスです。
AMFConnection.connect() メソッドを使用してリモート URL に接続し、AMFConnection.call() メソッドを使用し
てサービスを呼び出します。エラーが発生した場合は、ClientStatusException 例外と ServerStatusException 例外を
キャッチします。次に、AMFConnection を使用して、Remoting Service の宛先を Java クラスのメソッドから呼び出
す方法を示します。
public void callRemoting()
{
// Create the AMF connection.
AMFConnection amfConnection = new AMFConnection();
// Connect to the remote URL.
String url = "http://[server]:[port]/yourapp/messagebroker/amf";
try
{
amfConnection.connect(url);
}
catch (ClientStatusException cse)
{
System.out.println(cse);
return;
}
// Make a remoting call and retrieve the result.
try
{
// Call the echo method of a destination on the server named remoting_AMF.
Object result = amfConnection.call("remoting_AMF.echo", "echo me1");
}
catch (ClientStatusException cse)
{
System.out.println(cse);
}
catch (ServerStatusException sse)
{
System.out.println(sse);
}
// Close the connection.
amfConnection.close();
}
AMFConnection API では、Web ブラウザと同様の方法で自動的に cookie が処理されるので、cookie のカスタム処理
は必要ありません。