2017-09-21 1 views
0

J'ai un serveur TCP en python, qui doivent envoyer des documents XML, dans des chaînes comme ça:Comment puis-je créer un désérialiseur personnalisé pour TcpNetClientConnectionFactory?

<MSG_IVEF><Header MsgRefId="" Version="0.2.5">{1,1}</Header><Body>{1,1}</Body></MSG_IVEF> 

Et je TCP Client, avec Spring Integration, mis en œuvre avec un TcpNetClientConnectionFactory et je dois définir un désérialiseur personnalisé à lire sur le TCP.

Comment puis-je faire un personnalisé comme le ByteArrayStxEtxSerializer? Par exemple, si je veux avoir le même mais avec <MSG_IVEF> et </MSG_IVEF>?

Répondre

0

Eh bien, puisqu'il s'agit d'un XML, je ne regarderais pas à la logique ByteArrayStxEtxSerializer. Parce que votre MSG_IVEF est une balise racine du document XML et STX/ETX octets sont exclus du message cible après la désérialisation. Vous ne voulez certainement pas perdre la balise racine dans votre document.

Vous ne savez pas quel est le problème sur votre client et serveur pour terminer l'envoi du document XML avec un délimiteur standard, comme fourni un via ByteArrayCrLfSerializer. Il existe également ByteArraySingleTerminatorSerializer qui peut être personnalisé avec n'importe quel paquet arbitraire d'octets à délimiter sur le réseau.

+0

Vous avez raison, je ne veux pas perdre la balise racine dans mon document. Il n'y a pas de problème pour envoyer XML avec un délimiteur standard (CRLF), ou avec d'autres, mais je ne peux pas configurer le serveur, l'application printanière finale doit être configurable avec le délimiteur, donc du côté client. – user7953086