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;
}
}
答
在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并单击类并查看具有注释的源代码。
抱歉什么是消息拦截器?从来没有听说过它 – zavr