Разрабатываемое мной приложение Grails может работать на MySQL или SQL Server. Я хочу добавить новое свойство в файл application.properties, скажем
database.type = MySQL // или это может быть SQLSERVER
Как мне получить это свойство в Datasource.groovy, чтобы, если это MySQL, я подключаюсь к серверу MySQL или это SQLSERVER, я подключаюсь к SQL Server?
Это правильный способ сделать это? Как я могу это сделать?
РЕДАКТИРОВАТЬ: После прочтения и поиска вариантов я понял, как объяснить это следующим образом.
Я создал файл config.properties в папке / grails-app / conf /.
driverClassName = com.microsoft.sqlserver.jdbc.SQLServerDriver
dataSource.url = jdbc:sqlserver://localhost:1433;databaseName=testDB
dataSource.username = sa
dataSource.password = sa
Также обновлен Config.groovy
grails.config.locations = ["classpath:config.properties"]
Но я получаю ошибку ниже
Невозможно загрузить указанное местоположение конфигурации. Classpath: config.properties: ресурс пути к классу [config.properties] не может быть открыт, поскольку он не существует
Но если использовать
grails.config.locations = ["file:E:/workspace/SpringSource2.3.3/GRAILS_PRO/config.properties"]
Приложение запускается и может подключаться к базе данных. Я не хочу использовать статический путь к файлу. Что не так при использовании classpath?
Имеют одну и ту же проблему как для режима run-app, так и для режима war, т. Е. Ошибка в одном и том же файле.
2-й РЕДАКТИРОВАНИЕ:
После такого большого разочарования по поводу использования classpath и невозможности заставить его работать, я прибег к использованию свойства среды. Поскольку на сервере будет определен CATALINA_HOME, я использовал приведенное ниже для построения пути для внешнего файла конфигурации.
def CATALINA_HOME = "CATALINA_HOME"
def CONFIG_FILE_NAME = "db_config.properties"
if(!grails.config.locations || !(grails.config.locations instanceof List)) {
grails.config.locations = []
}
if(System.getenv(CATALINA_HOME)) {
def fullPath = System.getenv(CATALINA_HOME) + File.separator + "webapps" + File.separator + "${appName}" + File.separator + "WEB-INF" + File.separator + "classes" + File.separator + CONFIG_FILE_NAME
grails.config.locations << "file:" + fullPath
} else {
println "Missing configuration!"
}
Приведенное выше решение относится к Tomcat. Мне бы очень хотелось, чтобы версия classpath работала!
Спасибо.
С Уважением,
Джей Чандран.