Grails 1.3.5: Как настроить Datasource.groovy для подключения к MySQL или SQL Server - PullRequest
1 голос
/ 26 октября 2010

Разрабатываемое мной приложение 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 работала!

Спасибо. С Уважением, Джей Чандран.

1 Ответ

0 голосов
/ 11 апреля 2012

поместите его в домашний каталог пользователя, который запускает экземпляр tomcat, или для вашего приложения должен быть создан каталог .grails, поместите его туда

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