Наша фирма разрабатывает в основном на Java и поддерживает ряд «живых» систем (в основном, долго выполняющихся серверных процессов), все они зависят от общих справочных данных и перечислений. Иногда определение enum расширяется, чтобы включить новое значение, и в этом случае мы в настоящее время переустанавливаем все наши приложения , когда это происходит, причина в том, что у каждого приложения есть отдельная папка "lib", содержащая все библиотеки jar (включая библиотека enum entity). Очевидно, что это нежелательно, и поэтому мне было бы интересно услышать рекомендации или подходы других людей.
Идеи, о которых я думал:
- Изменение сценария запуска каждого приложения для получения самой последней версии библиотеки "enum entity" и добавления файла jar к пути к классам.
- Какой-то механизм динамической классификации загрузки нового определения перечисления во время выполнения.
Проблема с этими подходами состоит в том, что приложения обычно имеют код в формате:
switch(enumVal) {
case A:
// Do something.
break;
case B:
// Do something.
break;
default:
throw new IllegalArgumentException("Invalid enum value: " + enumVal);
}
... и, следовательно, начнет сбой, когда они достигнут значения по умолчанию. Возможно, это говорит о том, что эти сущности вообще не должны быть перечислениями; это действительно удобный компромисс в нашем случае. Или, возможно, это просто говорит о том, что наши приложения слишком хрупкие и должны обрабатывать случай по умолчанию более изящно.