#java
#java
Вопрос:
В моем приложении отправлена и получена определенная структура / формат сообщения. Когда я должен отправить сообщение, сообщение должно быть создано в определенном формате. У меня есть сообщение для синтаксического анализа в perticular message. Сообщение не что иное, как byte array
Для анализа сообщения я использовал Preon lib.
У меня следующая проблема с :
- Программно я должен создать массив байтов для каждого поля.
- Когда формат сообщения изменяется, я должен изменить код.
Как я могу построить структуру сообщений во время выполнения и проанализировать структуру сообщений.
Структура сообщения выглядит следующим образом
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
}
-
Структура сообщения будет изменяться в любое время.
-
В системе существует более 1000 типов сообщений.
Итак, я ищу решение на java, которое создаст сообщение и проанализирует из заданной структуры во время выполнения.
Если у вас есть пример кода, пожалуйста, предоставьте сниипет кода.
Комментарии:
1. Если структура вашего сообщения изменилась, но ваш код не изменился, как вы собираетесь обрабатывать изменения?
2. Да, где-нибудь в файле конфигурации или свойствах я изменю вот так.
3. Как изменение файла конфигурации позволит вам сохранить данные, которые вы не могли сохранить раньше?
4. @Kamahire, Когда вы принимаете ответ, это означает, что вы задали четкий вопрос и работали с теми, кто отвечал на вопрос, пока не получили приемлемый ответ. т. Е. на ваши вопросы стоит ответить. 😉
5. Я могу использовать базу данных для этой цели.
Ответ №1:
Я бы использовал контейнер OSGi (karaf / iPOJO), который позволяет мне изменять код во время работы приложения. Это означает, что вы можете добавлять поля, изменять их тип и размер в системе, не прерывая работу приложения.
Примечание: если вы добавите поле или увеличите его размер, но код это не поддерживает, не потеряете ли вы информацию?
Комментарии:
1. Пожалуйста, поправьте меня, если я ошибаюсь, OSGi адресует другую версию jar, используемую в приложении. Обычно используется для разрешения проблемы. Извините, но я не могу понять, как я могу использовать OSGi. Можете ли вы дать мне пример кода.
2. С помощью контейнера OSGi вы можете загрузить новую версию библиотеки и удалить старую версию, т.е. обновить весь код для обработки сообщений, не останавливая приложение.