2010-09-14 1 views
1

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

Есть ли способ сказать приложению использовать другой db и выполнить конкретный sql-скрипт (возможно, через свойства запуска или, возможно, фрагменты или еще что-нибудь еще)?

Спасибо

ответ

2

Я нашел и использую другой подход сейчас, больше RCP-ish IMHO. Я определяю фрагмент, чтобы переопределить реквизиты базы данных и заменить файл фиктивного запроса в подключаемом модуле хоста. Затем я определяю две функции: одну для тестирования с фрагментом и производственную функцию без фрагмента. А затем используйте функции в разных продуктах - один для производства, один для тестирования. Прекрасно работает

0

Для RCP я обычно использую некоторый тип файла свойств. В нем я указывал бы такие вещи, как БД для использования и сценарий запуска (при необходимости). Этот подход будет стоить того, так как ваше приложение растет.

+0

и ваш набор персистентности читает этот файл prop при запуске, я полагаю? это будет работать, но нужно отредактировать или переключить файл prop для запуска производства/тестирования, чего я пытаюсь избежать. То, что я хотел бы сделать, - создать отдельный файл запуска или продукта, чтобы указать реквизиты или соответствующие фрагменты «раз и навсегда». – kostja

1

Приложение будет принимать аргументы как исполняемый файл Eclipse. Вы можете указать аргументы в ини файле вашего приложения (в Eclipse, это eclipse.ini, вы можете переименовать его для вашего приложения) в виде

-vmargs 
-Dkey=value 

Эти значения могут быть считаны с помощью System.getProperty

На некоторых платформах вы также сможете принимать эти аргументы из командной строки.

+0

. Этот будет работать, даже проще, чем файл конфигурации, syou dac определяет аргументы в продукт. Единственное, что мне не нравится в этом, - это скорее эстетический вопрос. Я хотел бы получить более «воздушное» решение, основанное только на технологии RCP. Действительный ответ, хотя – kostja

2

Звучит как идеальный прецедент для OSGi-сервисов.

+0

звучит интересно. не могли бы вы рассказать? – kostja

+0

Разработайте пакет, который подключается к базе данных, выполняет некоторую инициализацию (например, выполняет какой-либо SQL, если это необходимо), а затем публикует как сервис в интерфейсе javax.sql.DataSource. Теперь ваш пакет приложений может получить доступ к базе данных, не заботясь о том, является ли это производством или тестом. Чтобы переключиться, разверните другую версию пакета соединителей базы данных (или настройте его со стандартной службой Config Admin). –

Смежные вопросы