Как сделать файлы рабочих каталогов доступными для приложения WebStart? - PullRequest
1 голос
/ 26 августа 2010

Мы должны сделать демонстрацию Java-приложения доступной в Интернете с помощью JWS.Это идет довольно хорошо;все, чего не хватает, это сделать файлы рабочих каталогов доступными для приложения.

Мы знаем о способе getResource () ... Проблема в том, что у нас есть разные плагины для одного и того же приложения, и для каждого требуются разные файлычасто разные версии одних и тех же файлов) в их рабочем каталоге для правильной работы.Поэтому мы просто меняем рабочий каталог, когда хотим, чтобы приложение имело другое поведение.

В настоящее время демонстрационная программа упакована в файл JAR со знаком и загружается правильно, пока не потребуется файл из рабочего каталога.Очевидно, что интернет-пользователи этой демонстрации не имеют готовых файлов.Нам нужен способ сделать эти файлы доступными для приложения WebStart (доступ для чтения / записи) в его рабочем каталоге.

Мы подумали о некоторых вещах, например, о том, чтобы приложение загружало файлы самостоятельно при запуске,или упакуйте их в банку и извлеките их при запуске.

Ищете советы и / или новые идеи.Я продолжу работать над этим ... Я обновлю, если когда-нибудь найду что-нибудь надежное.

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 06 сентября 2010

Я сказал, что поделюсь тем, что нашел в своем исследовании, для чего-то, что соответствовало бы моим потребностям.Вот что у меня есть.

Я обнаружил, что концепция текущего рабочего каталога (CWD) в действительности не имеет смысла в контексте приложения Java Web Start (JWS).Это привело к тому, что я перестал пытаться найти CWD JWS и начал искать другие варианты.

Я обнаружил, что (нет, я не знал, что) вы можете ссылаться (используя getResource ()) к файлу в корневом каталоге JAR-файла, просто добавив «/» перед его именем.(Например, "/log4j.properties".) В результате этого я могу взять любой файл, на который есть ссылка только для чтения, в корне этого файла JAR (который на самом деле является только файлом ZIP).).Вы можете ссылаться на любой файл в корне файла JAR, используя AnyClass.class.getResourceAsStream.Это исключает проблему с файлами только для чтения, необходимыми для запуска приложения, за счет переключения кода, указывающего, запускается ли приложение из допустимого CWD или из контекста JWS.(Вы можете очень просто установить свойство в файле JNLP приложения JWS и проверить, установлено ли это свойство или нет, чтобы знать, где искать файл.)

Для файлов только для записи (файлы журналов вв моем случае) я использовал свойство, добавив каталог с именем приложения:/.appname и добавленные в него файлы журналов.

Файлы чтения / записи (которых у меня нет в моем случае), вероятно, будут просто находиться в том же месте, что и файлы только для записи.Программное обеспечение может загружать их куда-нибудь, если необходимо, после модификации, я думаю.

Так я сейчас решаю проблему.

0 голосов
/ 26 августа 2010

Обратите внимание, что есть служба, которую вы можете явно запросить, чтобы получить доступ к файлам на компьютере (если вы не пройдете весь путь и не попросите полного доступа (для этого требуются подписанные файлы JAR)).

Затем вам нужно определить, куда эти файлы нужно поместить - в основном вы не знаете, что находится и где вы можете писать где угодно. Вы можете создавать tmp-файлы, но они исчезают.

Будет ли абстракция файловой системы, взаимодействующая с JNLP-сервером, сохранять данные пользователей на сервере?

...