По умолчанию страница jsp устанавливает для флага сеанса значение true. Установите это на странице индекса jsp, и сессия не будет создана.
<%@ page session="false" %>
По моему опыту, пересматривая данные Вам будет нужно, неизменно напрасно тратится время. То, что важно, должно структурировать Ваши метаданные способом, которые расширяемы. Для XML-файлов это просто, но двоичные файлы требуют немного более мысли.
Я склонен хранить метаданные в структуре в конце файла, не начало. Это имеет два преимущества:
Самый простой нижний колонтитул метаданных, который я использую, выглядит примерно так:
struct MetadataFooter{
char[40] creatorVersion;
char[40] creatorApplication;
.. or whatever
}
struct FileFooter
{
int64 metadataFooterSize; // = sizeof(MetadataFooter)
char[10] magicString; // a unique identifier for the format: maybe "MYFILEFMT"
};
После необработанных данных, нижнего колонтитула метаданных и ЗАТЕМ нижнего колонтитула файла записаны.
При чтении файла ищите в конец - sizeof (FileFooter). Считайте нижний колонтитул и проверьте magicString. Затем ищите назад согласно metadataFooterSize и считайте метаданные. В зависимости от размера нижнего колонтитула, содержавшегося в файле, можно использовать значения по умолчанию для недостающих полей.
Как KeithB указывает, Вы могли даже использовать эту технику для хранения метаданных как строки XML, давая преимущества и полностью расширяемых метаданных, с компактностью и скорости двоичных данных.
Для больших двоичных файлов я серьезно посмотрел бы на HDF5 (Google для него). Даже если это не что-то, что Вы хотите принять его, мог бы указать на Вас в некоторых полезных направлениях в разработке Ваших собственных форматов.
Для больших двоичных файлов в дополнение к номеру версии я склонен помещать количество записей и CRC, при этом причина состоит в том, что большие двоичные файлы являются намного более склонными для получения усеченными и/или повреждаемыми со временем или во время передачи, чем меньшие. Я недавно нашел к моему ужасу, что Windows не обрабатывает это хорошо вообще, поскольку я использовал проводник для копирования приблизительно 2 ТБ через несколько сотен файлов к приложенному устройству NAS и нашел, что 2-3 файла на каждой копии были повреждены (не полностью скопированный).
Идентификатор для типа файла был бы полезен, если Вам запишут другие структуры в двоичные файлы позже. Возможно, это могло быть короткой строкой, таким образом, Вы видите взглядом в файл (через Hex-редактор), что это содержит.
Если бы они являются настолько большими, я зарезервировал бы здоровый блок (64K?) пространства в начале файла и помещенный метаданные там в формат XML, сопровождаемый символом конца файла (Ctrl-Z для DOS/Windows, ctrl-D для Unix?). Тем путем можно исследовать и проанализировать метаданные легко с широким спектром наборов инструментов там для XML.
Иначе я иду с тем, что уже сказали другие люди: метка времени для создания файла, идентификатор, для которой машины это создается на, в основном что-либо еще, о чем можно думать для диагностических целей. И идеально Вы включали бы определение самого формата структуры. При изменении структуры часто это - большая боль для поддержания нужной версии кода вокруг для чтения различных форматов старых файлов данных.
Одно большое преимущество HDF5 как @highpercomp упомянуло, то, что Вы просто не должны волноваться об изменениях в формате структуры, пока у Вас есть некоторая конвенция того, каковы имена и типы данных. Имена структуры и типы данных все хранятся в самом файле, таким образом, можно унести код C к осколкам, и он не имеет значения, можно все еще получить данные из файла HDF5. Это позволяет Вам волноваться меньше о формате данных и больше на структуре данных, т.е. Я не забочусь о последовательности байтов, это - проблема HDF5, но я действительно забочусь об именах полей и т.п..
Другая причина мне нравится HDF5, является Вами, может принять решение использовать сжатие, которое занимает очень небольшое количество времени и может дать Вам огромные победы в пространстве памяти, если данные медленно изменяются или главным образом то же за исключением нескольких ошибочных вспышек интересности.
@rstevens сказал 'идентификатор для типа файла'... разумный совет. Традиционно, это назвало магическое число и, в файле, не является ругательством (в отличие от этого, в коде, где это - ругательство). В основном это - некоторое число - обычно по крайней мере 4 байта, и я обычно удостоверяюсь, что по крайней мере одним из тех байтов не является ASCII - что можно использовать для проверки этого, файл имеет тип, который Вы ожидаете с низкой вероятностью того, чтобы быть перепутанным. Можно также записать правило в/etc/magic (или локальный эквивалент), чтобы сообщить, что файлы, содержащие магическое число, являются специальным типом файла.
Необходимо включать номер версии формата файла. Однако я рекомендовал бы не использовать количество SVN кода. Ваш код может измениться, когда формат файла не делает.
В дополнение к любой информации Вы нуждаетесь для управления версиями схемы, добавляете детали, которые могут быть значимыми, если Вы диагностируете проблему. Например:
Мы находим, что это очень полезно (a) в получении информации, которую мы должны были бы иначе попросить, чтобы клиент предоставил и (b) получающая корректная информация - удивительно, сколько клиентов сообщает, что они выполняют другую версию программного обеспечения к тому, чего требуют данные!
Вы могли бы рассмотреть помещение файлового смещения в фиксированной позиции в заголовке, который говорит Вам, где фактические данные начинаются в файле. Это позволило бы Вам изменить размер заголовка при необходимости.
В нескольких случаях я поместил значение 0x12345678 в заголовок, таким образом, я мог обнаружить, если бы формат файла, соответствовал endianism машины, которая обрабатывала его.
При помещении номера версии в заголовок, можно изменить ту версию каждый раз, когда необходимо изменить структуру POD или добавить новые поля к заголовку.
Не добавляйте материал к заголовку теперь, потому что это могло бы быть интересно. Вы просто создаете код, который необходимо поддержать, но это имеет мало действительного значения.
Для больших файлов Вы могли бы хотеть добавить определения данных, таким образом, Ваш формат файла становится самоописанием.