我扩展了AbstractByteArraySerializer,现在我想像其他可用的tcp序列化程序(lf,null,l1,…)一样使用这个序列化程序。
我在tcp-encdec.xml中找到了配置文件,并注册了自己的配置文件:

...

<beans profile="use-custom">
    <bean id="CUSTOM"
        class="custom.tcp.serializer.ByteArrayCustomSerializer">
        <property name="maxMessageSize" value="${bufferSize}" />
    </bean>
</beans>

...

spring使用EncoderDecoderMixins.EncodingEncoding转换为特定的配置文件。
EncoderDecoderMixins.Encoding是最后一个类中的枚举。spring将decodertcp属性转换为基于此枚举的特定配置文件。我的自定义序列化程序不工作,因为它不在指定的Encodings中。
是否有方法注册一个新的Encoding或者我必须编写一个新的源模块才能使用序列化程序?

最佳答案

不幸的是,您将需要一个自定义源;我们可能会添加另一个枚举,例如CUSTOM,您可以在其中提供反序列化程序的类名,但这将需要更改标准源。
快速而肮脏的解决方法是在本地修改源:

<int-ip:tcp-connection-factory id="connectionFactory"
    ...
    deserializer="myDeserializer"/>

<bean id="myDeserializer" class="foo.Deser" />

例如,更改${decoder}占位符以指向bean。

关于java - Spring XD使用自定义TCP序列化程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35554870/

10-12 02:13