Как мне прочитать Java-объект в C ++? - PullRequest
0 голосов
/ 15 сентября 2009

Я реализую сервер журналов в C ++; который принимает сообщения журнала от программы Java (через app4 сокета log4j). Как мне прочитать эти объекты журнала Java в C ++?

Ответы [ 6 ]

7 голосов
/ 15 сентября 2009

Необходимо настроить приложение log4j для отправки сообщений в формате XML. Тогда это просто вопрос чтения XML на C ++.

2 голосов
/ 15 сентября 2009

Сериализованные Java-объекты - это байтовый поток, которому требуется мета-информация из Java Runtime для возможности восстановления Java-объектов. Без этой мета-информации, доступной в системе, вы должны добавить эту информацию самостоятельно, что утомительно и подвержено ошибкам. Вместо этого я предпочитаю отправлять XML - для этого была изобретена сериализация XML:)

1 голос
/ 16 сентября 2009

Другим очень быстрым способом независимой от языка сериализации является protobuf . Прото-файлы (мета-файлы, которые описывают ваши структуры данных) скомпилированы с использованием protoc, который пишет IO-код для различных целевых языков.

Я использую его в своем приложении и провел бенчмаркинг , который может дать вам подсказку, если он служит вашей цели. Единственный недостаток, который мне известен, это то, что protobuf вообще не обрабатывает ссылки. Если один из ваших объектов содержит один и тот же объект дважды, он будет записан дважды, а не один раз со ссылкой на предыдущий экземпляр (как в случае с сериализацией Java).

Что касается вашего первоначального вопроса, я согласен с Турбьёрном, что чтение и запись сериализованных объектов Java будут слишком сложными и подверженными ошибкам.

Если вы подумаете о том, чтобы пойти по пути protobuf, не стесняйтесь использовать этот файл protobuf события протоколирования в качестве стартового.

0 голосов
/ 15 сентября 2009

Log4cxx - это порт Log4j для C ++, возможно, вы можете извлечь некоторые идеи из этого или даже использовать его напрямую?

0 голосов
/ 15 сентября 2009

JSON - лучший способ решить подобные проблемы.

0 голосов
/ 15 сентября 2009

JSON! JSON! JSON! JSON!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...