我有一个flex web应用程序,想要将它与Java集成。
该应用程序将拥有一个非常小的数据库(2-3个表),以及一些常规逻辑,如发送邮件。
根据此链接(http://learn.adobe.com/wiki/display/Flex/2b.+Code+Files),我还需要一个.jsp文件。我以为Flex只对我的班级感兴趣?
此外,我的java方法将采用参数 - 如何将flex .mxml页面的文本框中的值传递给java方法?一个简单的例子对我有帮助。
使用httpservice呼叫时,还有什么我需要知道的吗?
由于
答案 0 :(得分:3)
查看Blaze DS。设置它非常简单,以便您可以从Flex调用Java类的方法。
http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/
基本上,您注册一个引用Flash Remoting端点的URL的RemoteObject,并指定目标(通常是类名)。请参阅WebOrb文档,了解如何执行此操作。完成后,您可以像这样调用RemoteObject:
var token:AsyncToken = emailService.sendEmail(subject,body); token.addResponder(responderImpl);
您创建IResponder接口的实现并将其注册到从Flex中的远程调用返回的“AsyncToken”。在Flex中对服务器的所有调用都是异步的,这就是为什么你注册一个响应者,然后调用结果或错误方法。
答案 1 :(得分:1)
另一个选择是使用Ajax(即JavaScript)作为Flex和服务器端Java之间的中介,以帮助保持视图和业务层很好地分离。我已经看到这样做成功 - Flex可以轻松地调用JavaScript,并且有许多经过验证的模式可以将Java对象/方法暴露给JavaScript以进行Ajax样式调用(DWR是一个不错的选择)。
答案 2 :(得分:1)
如果您使用BlazeDS(它是您放入Web服务器的servlet),您将能够在远程处理调用上传递ActionScript对象。这些将通过网络编组到AMF,然后被解释为Java对象。您需要使用代码生成器工具来获取Java远程服务并创建相应的ActionScript类以在客户端上使用(用于发送参数然后接收结果)。
Flex还支持Web服务调用ala SOAP样式。效率低于AMF,但如果交换的数据不多,则没有大问题。
当我急着做一些真正快速和肮脏的事情时,我只是做一个HttpService send()调用,我已经编写了一个HTTP POST(数据在URL中不可见,因为它与GET一起使用)。快速编写的Java servlet处理POST并以文本格式接收数据作为名称/值对的映射。 (HttpSerivce.send()方法与AJAX XmlHttpRequest()机制一样异步行为。)
除了做类似的事情之外,它没有任何简单,但名称/值对不如结构化数据灵活。有时您需要处理更复杂的结构化数据。因此,通过BlazeDS远程处理将ActionScript模型对象序列化为AMF对象图就属于它自己。