2011-07-22 25 views
0

我目前正在开发一个项目,需要在不使用像Tomcat这样的服务器的情况下从空中与Java通信。为此我找到并使用Flerry。Java和Flex与Flerry之间的消息传递

Java和Air之间的通信没有问题,只要我尝试从我最初从Air实例化的类发送消息。

我试图做的是对来自Java中的消息类的消息进行下标并使用该类将信息和错误发送给来自Java的Air。

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"); 
    } 
} 

在空气中我的消息类创建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

您正在创建AIR应用程序,对吗?它看起来像Flerry使用Adobe AIR的NativeProcess功能;这将不会在基于Flex的Web应用程序中提供。 – JeffryHouser

+0

Flextras说什么。这就是为什么你使用基于web的技术,如tomcat(但真的,这只是部署你的服务器)与前端进行通信。 –

+0

@Flextras我正在创建一个AIR应用程序。我编辑了这篇文章。 – Raeghin

回答

0

我不确定我是否完全理解这个问题,但有没有理由不能简单地通过Java'通信'类发送和接收所有消息?如果这有效,我只需在Java接口/通信类中设置公共方法并完成它。 (自从我研究Flerry的工作方式以来,已经有一段时间了,所以我不记得足以指出你所看到的行为的可能原因。)Flerry也是开源的,并不是很大所有。如果你真的想知道它为什么会以某种方式表现出来,我敢打赌你可以通过查看源代码来弄清楚。 (不需要花费6个月的时间学习一些Spring或Hibernate代码库,甚至BlazeDS,我保证。)

我在一个小应用程序中使用Flerry,但现在我想到了,我只有一个向Flex发送任何东西的类!但我觉得你可能需要描述你所面对的问题,因为这听起来像我预期的行为。