Некоторые объекты Java, например, объекты класса BufferedImage, не могут быть сериализованы. Переменные таких типов должны быть исключены из стандартного механизма сериализации, используемого при сохранении состояния модели. Если же Вы все-таки хотите сохранять и восстанавливать состояние таких объектов, то Вы можете написать свой собственный код в методах writeCustomData и readCustomData. Этот код должен выполнять нестандартную сериализацию и восстановление основного содержимого несериализуемого объекта.
Например, в случае класса BufferedImage, основным его содержимым являются: высота, ширина, параметры типа изображения (которые используются в конструкторе) и массив int[] цветов пикселей (который может быть получен путем вызова метода getRGB). Код, восстанавливающий объект BufferedImage (в методе readCustomData), должен создавать экземпляр этого класса посредством вызова конструктора с вышеперечисленными параметрами и последующего вызова метода setRGB для восстановления изображения.
Открытые соединения с базами данных и открытые файлы не могут
сохранять и восстанавливать свои состояния. Поэтому после
восстановления состояния модели файлы и соединения с базами данных
будут в закрытом состоянии. Это не означает, что Вы не можете
продолжать работать с ними. Например, если модель записывает информацию
в файл журнала, то Вы можете продолжать записывать туда нужные Вам
данные при условии, что соответствующий текстовый файл
находится в режиме "запись с добавлением в конец". Объекты связи с
базами данных установят свои соединения при первом доступе к базе
данных (как и обычно). Но объекты Statement и ResultSet (если есть таковые) не могут быть включены в сохраняемое состояние модели (они несериализуемы).
Рекомендуется открывать объекты ResultSet,
работать с ними и закрывать их в теле одной и той же функции
(или в коде одного и того же кодового свойства элемента модели). Не рекомендуется хранить ссылки на объекты типа Statement
и ResultSet
в переменных активного объекта. Также обратите внимание, что файлы
состояния не могут влиять на внешние источники данных и в некоторых
случаях может потребоваться ручное сохранение и восстановление баз
данных.
В настоящий момент исполняющий модуль оптимизатора OptQuest не
поддерживает сериализацию, поэтому Вы не можете сохранять и
восстанавливать состояние оптимизационных экспериментов. Это станет
возможно, как только OptTek выпустит версию OptQuest, которая
будет поддерживать сериализацию.