Обмен сообщениями между Java и Flex с Flerry - PullRequest
0 голосов
/ 22 июля 2011

В настоящее время я работаю над проектом, который должен взаимодействовать с Java с воздуха без использования сервера, такого как Tomcat. Для этого я нашел и использую Flerry.

Взаимодействие между Java и Air не проблема, если я пытаюсь отправить сообщение из класса, который я изначально создал из Air.

То, что я пытаюсь сделать, это подписать сообщения из класса сообщений в Java и использовать этот класс для отправки информации и ошибок в Air из Java.

MessageController.java:

public class MessageController 
{

    public MessageController()
    {

    }

    public static void sendErrorMessage(String errorMessage)
    {
        NativeObject.sendMessage(errorMessage, "error");
    }

    public static void sendInfoMessage(String infoMessage)
    {
        NativeObject.sendMessage(infoMessage, "info");
    }
}   

В Air я создаю NativeObject для класса сообщений и подписываюсь на сообщения:

var messageController:NativeObject = new NativeObject();
messageController.source = "controller.MessageController" ;
messageController.singleton = true;
messageController.debug = false;
messageController.addEventListener(FaultEvent.FAULT, onFileControllerFault, false, 0, true);

messageController.subscribe("info", infoMessageHandler);
messageController.subscribe("error", errorMessageHandler);

Как вы уже догадались, это не работает. Кажется, что я могу отправлять сообщения только из класса, на который я подписан, например, если я делаю это:

messageController.start();

и в моем MessageController.java я положил это:

public void start()
{
NativeObject.sendMessage("test message", "info");
}

infoMessageHandler получает сообщение, содержащее тестовое сообщение, как и должно быть.

Как я могу отправлять сообщения из любого класса в Java и перехватывать их в эфире?

1 Ответ

0 голосов
/ 05 сентября 2011

Я не уверен, что полностью понимаю проблему, но есть ли причина, по которой вы не можете просто отправлять и получать все сообщения через класс Java 'communication'? Если это работает, я просто установил бы общедоступные методы в Java-интерфейсе / классе связи и покончил с этим.

(Прошло некоторое время с тех пор, как я начал понимать, как работает Flerry, поэтому я не могу вспомнить достаточно, чтобы указать на вероятную причину поведения, которое вы видите.) Кроме того, Flerry является открытым исходным кодом, и не очень большой. , Если вы действительно хотите знать, почему он ведет себя определенным образом, я бы поспорил, что вы можете понять это, посмотрев на источник. (У меня не будет 6 месяцев, чтобы научиться как на базе кода Spring или Hibernate, или даже на BlazeDS, обещаю.)

Я использую Flerry в небольшом приложении, но теперь, когда я об этом думаю, у меня есть только один класс, который отправляет что-либо во Flex! Но я чувствую, что вам, возможно, придется по-разному описать проблему, с которой вы столкнулись, потому что для меня это звучит как ожидаемое поведение.

...