Проанализировать и создать сообщение из файла конфигурации / базы данных / файла свойств во время выполнения

#java

#java

Вопрос:

В моем приложении отправлена и получена определенная структура / формат сообщения. Когда я должен отправить сообщение, сообщение должно быть создано в определенном формате. У меня есть сообщение для синтаксического анализа в perticular message. Сообщение не что иное, как byte array

Для анализа сообщения я использовал Preon lib.

У меня следующая проблема с :

  1. Программно я должен создать массив байтов для каждого поля.
  2. Когда формат сообщения изменяется, я должен изменить код.

Как я могу построить структуру сообщений во время выполнения и проанализировать структуру сообщений.

Структура сообщения выглядит следующим образом

 Message1{

int field_1
char[2] field_2
long filed_3 
double filed_4
bit field_5
short field_6
char field_7

}


Message2{

    Message1 msg
    short field_8
    char field_9
}
  
  1. Структура сообщения будет изменяться в любое время.

  2. В системе существует более 1000 типов сообщений.

Итак, я ищу решение на java, которое создаст сообщение и проанализирует из заданной структуры во время выполнения.

Если у вас есть пример кода, пожалуйста, предоставьте сниипет кода.

Комментарии:

1. Если структура вашего сообщения изменилась, но ваш код не изменился, как вы собираетесь обрабатывать изменения?

2. Да, где-нибудь в файле конфигурации или свойствах я изменю вот так.

3. Как изменение файла конфигурации позволит вам сохранить данные, которые вы не могли сохранить раньше?

4. @Kamahire, Когда вы принимаете ответ, это означает, что вы задали четкий вопрос и работали с теми, кто отвечал на вопрос, пока не получили приемлемый ответ. т. Е. на ваши вопросы стоит ответить. 😉

5. Я могу использовать базу данных для этой цели.

Ответ №1:

Я бы использовал контейнер OSGi (karaf / iPOJO), который позволяет мне изменять код во время работы приложения. Это означает, что вы можете добавлять поля, изменять их тип и размер в системе, не прерывая работу приложения.

Примечание: если вы добавите поле или увеличите его размер, но код это не поддерживает, не потеряете ли вы информацию?

Комментарии:

1. Пожалуйста, поправьте меня, если я ошибаюсь, OSGi адресует другую версию jar, используемую в приложении. Обычно используется для разрешения проблемы. Извините, но я не могу понять, как я могу использовать OSGi. Можете ли вы дать мне пример кода.

2. С помощью контейнера OSGi вы можете загрузить новую версию библиотеки и удалить старую версию, т.е. обновить весь код для обработки сообщений, не останавливая приложение.