Где поместить сериализованный файловый объект в netbeans проекта - PullRequest
0 голосов
/ 08 февраля 2012

У меня есть настольное приложение, которое реализует класс Serializable, но сейчас я перевожу его в веб-приложение с сервлетами, для этой работы я использую Netbeans, у меня есть следующий код:

InputStream input = ClassLoader.getSystemResourceAsStream(file_input);

Где file_input - это стиль байт-кода объекта, сериализованного ранее, я не знаю, куда мне поместить этот файл, потому что в настольном приложении я поместил его в тот же каталог, где у меня были мои классы.

(у меня есть файл, мне не нужно его создавать).

1 Ответ

0 голосов
/ 08 февраля 2012

Прежде всего, никогда не используйте ClassLoader#getSystemResourceAsStream() в веб-приложении Java EE.Вместо этого используйте ClassLoader#getResourceAsStream().Я также поставил бы большой вопрос об использовании ClassLoader#getSystemResourceAsStream() в настольном приложении Java SE, чтобы точно определить, должно ли оно быть распространяемым, но это в стороне.

ClassLoader в конечном итоге загружает ресурсы из пути к классам.Поэтому все, что вам нужно сделать, - это убедиться, что файл помещен в один из путей, которые по умолчанию включены в classpath времени выполнения веб-приложения, или , чтобы добавить новый путь к файлу во время выполнения веб-приложения.classpath через параметр конфигурации, специфичный для сервера, такой как shared.loader свойство Tomcat /conf/catalina.properties.

. Одним из путей по умолчанию, охватываемых classpath времени выполнения веб-приложения, является папка /WEB-INF/classes WAR.С точки зрения проекта IDE, просто поместите файл в корневую папку папки «Java Source» (src), где у вас есть все ваши пакеты и классы Java.IDE позаботится о том, чтобы в конечном итоге она оказалась в /WEB-INF/classes встроенного файла WAR.

Кстати, я все еще предполагаю, что вы не создаете файл изнутри веб-приложения,как вы прямо сказали.Это не сработает.Если вам на самом деле также необходим доступ на запись, вам потребуется абсолютный путь к файловой системе диска.Вы всегда можете сделать его настраиваемым, указав его, например, в качестве аргумента виртуальной машины или переменной среды.

...