Flex:BlazeDs反序列化

问题描述:

我正在使用Spring + Flex构建的Web应用程序。正面和背面之间的通信使用BlazeDS和我有一个自定义编组,以便从柔性序列化的数据到后端为:Flex:BlazeDs反序列化

<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel"> 
     <endpoint url="http://localhost:8080/${context.root.cpanel}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> 
     <properties>  
      <serialization> 
       <type-marshaller>es.onebox.flex.messaging.io.CustomTypeMarshaller</type-marshaller> 
      </serialization> 
     </properties> 
    </channel-definition> 

是否有配置如何使用自定义解串器从后弯曲的方法吗?我需要一个拦截器来修改从flex返回的数据的一些字段,所以我认为这种方法可以工作。

我用使用Flex的拦截:

<flex:message-interceptor ref="myMessageInterceptor"/> 

而且在我的application.xml我定义为myMessageInterceptor:

<bean id="myMessageInterceptor" class="es.onebox.flex.messaging.io.FlexInterceptor"/> 

这是拦截器的德内容:

public class FlexInterceptor implements ResourceHandlingMessageInterceptor 
{ 
private static Logger logger = Logger.getLogger(FlexInterceptor.class); 

public void afterCompletion(MessageProcessingContext context, Message inputMessage, Message outputMessage, Exception ex) 
{ 
    logger.info(inputMessage.getMessageId()); 
} 

public Message postProcess(MessageProcessingContext context, Message inputMessage, Message outputMessage) 
{ 
    return outputMessage; 
} 

public Message preProcess(MessageProcessingContext context, Message inputMessage) { 
    return inputMessage; 
} 

}

+0

抱歉什么是消息拦截器?从来没有听说过它 – zavr

在AMFEndpoint类[],有田

/** 
    * Returns the deserializer class name used by the endpoint. 
    * 
    * @return The deserializer class name used by the endpoint. 
    */ 
    @Override protected String getDeserializerClassName() 
    { 
     return "flex.messaging.io.amf.AmfMessageDeserializer"; 
    } 

    /** 
    * Returns the serializer class name used by the endpoint. 
    * 
    * @return The serializer class name used by the endpoint. 
    */ 
    @Override protected String getSerializerClassName() 
    { 
     return "flex.messaging.io.amf.AmfMessageSerializer"; 
    } 

所以我认为你可以扩展AMFendpoint并指定自己的串行器/ deserealizer并加以实施,效果显着。 AmfMessageDeserializer源代码在这里: http://opensource.adobe.com/svn/opensource/blazeds/branches/4.6_Apache/modules/core/src/flex/messaging/io/amf/AmfMessageDeserializer.java

另外我想如果你想改变从BlazeDS发送到Flex的消息,你需要用户Serializer而不是Deserializer。

顺便说一句,下载BlazeDS的整个源代码非常有用,您可以将它添加到Eclipse并按住Ctrl并单击类并查看具有注释的源代码。