【发布时间】:2011-07-22 06:44:16
【问题描述】:
我目前正在开发一个项目,该项目需要在不使用像 Tomcat 这样的服务器的情况下从空中与 java 进行通信。为此,我找到并使用了 Flerry。
只要我尝试从我最初从 Air 实例化的类发送消息,Java 和 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");
}
}
在 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 中的任何类发送消息并在 Air 端捕获它们?
【问题讨论】:
-
您正在创建一个 AIR 应用程序,对吧?看起来 Flerry 使用了 Adobe AIR 的 NativeProcess 功能;这在基于 Flex 的网络应用程序中不可用。
-
Flextras 所说的。这就是为什么您使用基于 Web 的技术,例如 tomcat(但实际上,这只是用于部署您的服务器)与前端进行通信。
-
@Flextras 我正在创建一个 AIR 应用程序。我编辑了帖子。
标签: java apache-flex messaging flex4.5