JavaのプログラムでAMF通信する

Adobe Flex

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Javaのプログラム内でAMF通信するサンプルを作ってみました。
BlazeDSのバージョンは4.0.0を使います。
BlazeDSの以下のjarファイルをビルドパスに通します。

・flex-messaging-common.jar
・flex-messaging-core.jar

昨日作ったサンプルのサービスに接続してみます。
BlazeDSの設定とAMF通信のサンプル

まずはRemote Objectの場合です。
実行するとサーバとAMF通信して戻り値をコンソールに表示しました。
試したサービスの戻り値がString型だったのでキャストしています。

package sample;

import flex.messaging.io.amf.client.AMFConnection;

public class SampleRemoteObject {

	private static String URL = "http://localhost:8080/SampleBlazeDS/messagebroker/amf";

	public static void main(String[] args) {
		try {
			AMFConnection connection = new AMFConnection();
			connection.connect(URL);									// endpoint
			String text = (String)connection.call("sample.sayHello");	// destinationとメソッド名
			System.out.println(text);
	      
	    }catch(Exception e) {
			e.printStackTrace();
	    }
	}
}


次はMessagingの場合です。
昨日作ったPush通信のサンプルを起動してから
以下のプログラムを実行するとサンプルにメッセージが表示されました。

package sample;

import flex.messaging.io.amf.client.AMFConnection;
import flex.messaging.messages.AsyncMessageExt;
import flex.messaging.messages.Message;
import flex.messaging.util.UUIDUtils;

public class SamplePush {

	private static String URL = "http://localhost:8080/SampleBlazeDS/messagebroker/amfpolling";
  
	public static void main(String[] args) {
		try {
			AMFConnection connection = new AMFConnection();
			connection.connect(URL);			// endpoint
			String uuid = UUIDUtils.createUUID();
      
			AsyncMessageExt message = new AsyncMessageExt();
			message.setMessageId(uuid);
			message.setDestination("sample2");	// destination
			message.setBody("Hello World3!"); 	// メッセージ
			message.setHeader(Message.FLEX_CLIENT_ID_HEADER, uuid);
      
			connection.call("", message );
		
		}catch(Exception e) {
			e.printStackTrace();
		}
	}
}