Domanda

Sto implementando un server di registro in C ++; che accetta i messaggi di registro da un programma Java (tramite appender socket log4j). Come posso leggere questi oggetti di registrazione Java in C ++?

È stato utile?

Soluzione

È necessario configurare l'appender log4j per inviare messaggi in formato XML. Quindi si tratta semplicemente di leggere XML in C ++.

Altri suggerimenti

Gli oggetti java serializzati sono un flusso di byte che necessita di meta informazioni da Java Runtime per poter ricostruire gli oggetti java. Senza quelle meta informazioni disponibili nel sistema è necessario aggiungere tali informazioni da soli, che è noioso e soggetto a errori. Dico invece l'idea di inviare XML: ecco per cosa è stata inventata la serializzazione XML :)

Un altro modo molto veloce di serializzazione indipendente dalla lingua è protobuf . i proto-file (meta-file che descrivono le tue strutture di dati) sono compilati usando un protocollo che scrive IO-code per varie lingue di destinazione.

Lo sto usando nella mia app e ho fatto alcuni benchmarking che potrebbe darti un indizio se serve al tuo scopo. L'unico aspetto negativo di cui sono a conoscenza è che protobuf non gestisce affatto i riferimenti. Se uno dei tuoi oggetti contiene lo stesso oggetto due volte, verrà scritto due volte anziché una sola volta con un riferimento all'istanza precedente (come nel caso della serializzazione Java).

Per quanto riguarda la tua domanda originale, sono d'accordo con Thorbj che la lettura e la scrittura di oggetti Java serializzati sarà troppo dura e soggetta a errori.

Se pensi di seguire la strada del protobuf, sentiti libero di usare questo file protobuf dell'evento di registrazione come antipasto.

json è il modo migliore per affrontare questo tipo di problemi.

Log4cxx è una porta Log4j per C ++, forse puoi ricavarne alcune idee o persino usarlo direttamente?

JSON! JSON! JSON! JSON!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top