Eclipse RCP: использование каталога конфигурации - PullRequest
7 голосов
/ 17 февраля 2009

Моему приложению Eclipse RCP требуется файл конфигурации, содержащий некоторую информацию для подключения к удаленной базе данных. Где лучше всего хранить этот файл конфигурации?

Могу ли я использовать каталог конфигурации по умолчанию (где обычно хранится «config.ini») для этой цели? Если так, как я могу получить экземпляр File в это место программным путем? Я также отмечаю, что этот каталог не существует в моей Eclipse IDE.

Спасибо.

Ответы [ 5 ]

5 голосов
/ 17 февраля 2009

У вас, как всегда, есть несколько вариантов, в зависимости от ваших требований.

  • используйте Настройки времени выполнения для сохранения в PreferenceStore с подходящим PreferenceInitializer. Довольно большой и обширный API, в который вложено немало идей. Настройки по умолчанию не предоставляются пользователю или администратору, поэтому вам нужно будет поработать над раскрытием страницы настроек или записать файл свойств.

Для менее продвинутой / меньшей работы, особенно если у вас нет доступа к настройкам затмения (например, OSGi на сервере):

  • устанавливается как системное свойство в RCP.ini. Не подлежит изменению пользователем после запуска, требует доступа к файлу RCP.ini (eclipse.ini), что может быть возможно, особенно если вы не предоставляете IDE.
  • устанавливается как системное свойство, как аргумент в ярлыке. Зависит от пользователя с помощью ярлыка. Во время установки необходимо создать специальный ярлык.

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

Я вспоминаю интервью Эриха Гаммы (как в «Банде четырех» и техническом лидере JDT), в котором он говорит, что существует около семи различных механизмов предпочтения, и он никогда не знал, какой из них использовать.

2 голосов
/ 29 марта 2010

Как уже указывалось, API настроек - это то, на что стоит обратить внимание. Существует также API безопасных настроек, который подходит для хранения имен пользователей и паролей, зашифрованных на диске.

Другим вариантом является использование службы OSGi org.eclipse.osgi.service.datalocation.Location. Это обеспечивает доступ к различным доступным местам.

Третий вариант - определить системное свойство в «config.ini», которое указывает на файл с информацией о вашем соединении, используя заполнители: «my.connection.settings=@config.dir/mysettings.ini». '@ config.dir' - это заполнитель, который заменяется фактическим путем к каталогу конфигурации.

1 голос
/ 17 февраля 2009

Взгляните на плагин ресурсов - может дать вам то, что вы ищете:

http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.platform.doc.isv/guide/resInt_filesystem.htm

0 голосов
/ 17 февраля 2009

Чтобы получить расположение файла каталога конфигурации, запустите:

new org.eclipse.core.runtime.preferences.ConfigurationScope (). GetLocation (). ToFile ();

0 голосов
/ 17 февраля 2009

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

File configFile = new File("./bin/remoteDbConfig.ini");

Тогда, если это настоящий INI-файл, вы можете использовать Properties.load () для загрузки и использования значений из INI-файла.

Вы также можете использовать Preferences API для хранения данных, необходимых для удаленного подключения.

...