`
yidianfengfan
  • 浏览: 125109 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java client调用BlazeDS服务

    博客分类:
  • java
阅读更多
若想直接用java来访问BlazeDS后台的服务,可以用BlazeDS中的AMFConnection类。这个类在3.1.0.2602版本上才有。
AMFConnection支持HTTP和HTTS, 并会自动记录cookie

一、 基本的使用
final String URL = "http://127.0.0.1/project-web/messagebroker/amf";
AMFConnection connection = new AMFConnection();
try {
    connection.connect(URL);
    User user = getUserFromSomewhere();
    connection.call("userService.createUser", user);
} catch (Exception e) {
    e.printStackTrace();
    throw e;
} finally {
    connection.close();

}
二、 AMFConnection连接过程
1. 建立连接、设置请求头及初始化请求环境
建立连接
URL raw = new URL(url);
urlConnection = (HttpURLConnection)urlObject.openConnection();
urlConnection.setDoOutput(true);

设置cookie和请求头
 
--setHttpRequestCookieHeader(); cookies to request
--httpRequestHeaders 设置时urlConnection的requestProperty
--Content-Type ->application/x-amf

设置请求环境:
actionContext = new ActionContext();

2. 发起请求
根据请求的命令和参数发出请求、按AMF3协议写入流、解析cookie, 按AMF解析返回流、返回结果
重要的方法是:
call(String command, Object ... arguments)

发出请求:
//构建请求信息(0-amf0 3-amf3)
ActionMessage requestMessage = new ActionMessage(getObjectEncoding());
MessageBody amfMessage = new MessageBody(command, responseURI, arguments);
requestMessage.addBody(amfMessage);
// Setup for AMF message serializer
actionContext.setRequestMessage(requestMessage);
ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
AmfMessageSerializer amfMessageSerializer = new AmfMessageSerializer();
amfMessageSerializer.initialize(serializationContext, outBuffer, amfTrace)
amfMessageSerializer.writeMessage(requestMessage);
outBuffer.writeTo(outputStream);
outBuffer.flush();
outBuffer.close();


解析返回流:
 
urlConnectionInputStream = new BufferedInputStream(inputStream);
// Mark the first 2 bytes so that the stream can be reset in case it
// contains non-AMF data.
urlConnectionInputStream.mark(2);
ActionMessage message = new ActionMessage();
actionContext.setRequestMessage(message);
MessageDeserializer deserializer = new AmfMessageDeserializer();
deserializer.initialize(serializationContext, urlConnectionInputStream, amfTrace);
deserializer.readMessage(message, actionContext);
Object result = null;
for (MessageBody msg : (ArrayList<MessageBody>)message.getBodies())
{
    String targetURI = msg.getTargetURI();

    if (targetURI.endsWith(MessageIOConstants.RESULT_METHOD))
    {
    	result =  msg.getData();
    }
    else if (targetURI.endsWith(MessageIOConstants.STATUS_METHOD))
    {
        String exMessage = "Server error";
        result = exMessage;
    }
}


分享到:
评论
1 楼 7先生 2014-02-19  
你好,请问一下,如果接口参数是一个类,那么如何传递?


public User login(User user)
User user = new User("admin","admin");
比如call("userService.login",User);
上面的方法会报错


下面的则可以通过:
public User login(String username,String password)
User user = new User();
call("admin","admin");
 

相关推荐

    Flex+JAVA+BlazeDS开发环境配置(Java工程和Flex工程独立)

    在配置中,指定Java Web项目的路径,并验证配置,确保Flex客户端能够找到服务器上的BlazeDS服务。 通过以上步骤,我们就建立了一个基础的Flex+Java+BlazeDS开发环境,使得Flex客户端能够通过AMF与Java服务端进行...

    blazeds开发者指南中英文对照版

    部署BlazeDS应用通常涉及到配置Web容器、设置数据源以及配置BlazeDS服务。 #### 五、结论 BlazeDS为开发者提供了构建高性能、可扩展的实时应用程序的框架。通过结合强大的远程访问和消息服务,BlazeDS使得创建复杂...

    整合blazeds和spring需要的jar包

    - `flex-messaging-admin.jar`: 用于管理Blazeds服务的接口和类。 - `flex-client-java.jar`: 提供Flex客户端与Blazeds服务器通信所需的类库。 2. **Spring相关jar包**: - `spring-beans.jar`: 包含Spring的...

    flex与Java的通信

    通过BlazeDS,Flex应用可以调用Java服务的方法,传递参数并接收返回值。此外,BlazeDS还支持发布和订阅模型,允许实时数据推送,即服务器主动向客户端发送更新。 7. **示例Dome**: 一个简单的示例可能包括一个...

    Blazeds向客户端推送数据.

    这通常涉及到监听特定事件、处理业务逻辑并调用Blazeds API将数据发布到已定义的目的地。 5. **客户端处理**:在Flex客户端,需要订阅目的地来接收服务器推送的数据。通过创建`RemoteObject`实例,绑定到定义好的...

    BlazeDS开发者指南

    - **服务组件定义与调用**:指导如何定义服务组件以及如何在客户端调用这些服务。 - **事件处理**:说明如何处理来自服务端的事件,如调用失败、成功等。 - **参数传递与结果处理**:讨论如何在客户端和服务端之间...

    用一个HelloWorld例子手把手教会你使用FLEX BlazeDS

    本教程不仅介绍了BlazeDS的基本概念,还详细指导了如何在本地环境中安装配置BlazeDS、编写Java服务端代码以及使用Flex Builder 3创建客户端应用来调用这些服务。这对于初学者来说是非常实用且直观的学习方式。希望本...

    flex4.6+blaze+java

    BlazeDS还提供了Remoting和LiveCycle Data Services,前者使得Flex客户端可以直接调用Java后台的服务,后者提供了数据推送功能,使得服务器可以主动向客户端推送更新,实现实时应用。 Java作为后端开发语言,可以...

    最简单的java与flex通信实例与完全步骤总结

    - 使用`RemoteObject`组件来调用Java服务,配置其`endpoint`指向服务器的AMF通道。 - 定义一个`UserService`的代理,绑定到`RemoteObject`,并实现客户端的方法调用。 7. **通信过程**: - 在Flex中调用`...

    FLEX4 FLEX+JAVA+(数据库)

    - **WebService**:调用Web服务接口。 - **RemoteObject**:通过AMF格式进行远程对象调用。 以上介绍的架构方法和技术栈为开发人员提供了构建高质量RIA应用的基础。通过深入学习这些技术和框架,开发人员可以构建出...

    spring-flex官方文档

    BlazeDS是Adobe开源的一个项目,它提供了将Flex前端与Java后端服务连接的基础通信层,包括远程调用和消息传递功能。虽然之前也可以通过BlazeDS与Spring管理的服务进行交互,但Spring BlazeDS Integration提供了一个...

    集成 Flex, Spring, Hibernate 构建应用程序.docx

    4. Flex客户端开发:使用Flex Builder创建Flex应用,通过RemoteObject调用Java服务,实现前后端的数据交换。 通过这种集成方式,开发者可以利用Flex的强大UI设计能力,Spring的灵活管理和事务处理,以及Hibernate的...

    flex转化成web项目需要的架包和文件

    6. **示例代码**:可能包含了一些示例的Flex和Java类,展示了如何创建和调用服务,以及如何处理数据交换。 转换过程中,你需要确保Flex应用能够正确连接到后端Java Web服务,同时后端能够正确处理Flex发送的数据。...

    flex与后台通讯方式

    1. BlazeDS和LCDS:Flex与后台通信通常借助于BlazeDS或LCDS(LiveCycle Data Services),这两个都是Adobe提供的服务器端技术,用于实现Flex与Java或.NET等后端服务的集成。BlazeDS是免费的,而LCDS提供了更高级的...

    flex Socket 通信

    虽然Flex和Java之间可以通过Socket通信,但还有其他方式,如AMF(Action Message Format)和 BlazeDS / LCDS服务,它们提供更高级别的消息传递,支持对象序列化,以及更方便的服务调用。 总的来说,Flex Socket...

    spring flex实例

    BlazeDS 提供了 Remoting 和 Messaging 服务,使得 Spring 上的服务能便捷地被 Flex 应用调用。 4. **MXML & ActionScript**:在 Flex 应用中,MXML 用于构建用户界面,而 ActionScript 用于处理事件和业务逻辑。...

    Flex、Spring、Hibernate 集成

    - **BlazeDS** 支持**Flex** 对Java对象的远程调用,并可以部署在多种Web应用服务器上,例如Tomcat、WebSphere、JBoss等。 ### 5. 示例程序分析 假设我们有一个示例程序,它是一个在线宠物商店的应用场景,可以...

    集成 Flex, Spring, Hibernate 构建应用程序.pdf

    其中,RemoteObject 提供了一种更高效的远程调用方式,适用于实时通信场景。 2. **Spring 后端架构**: - **业务逻辑处理**:Spring 框架通过其强大的 DI 和 AOP 特性管理业务逻辑组件,实现了模块化的设计。 - *...

Global site tag (gtag.js) - Google Analytics