Как установить grails.serverURL в корпоративной среде, если я заранее не знаю имя сервера и порт? - PullRequest
8 голосов
/ 20 января 2012

У нас есть приложение в Grails 2.0, которое мы работаем, когда работаем на localhost:8080Config.groovy приложение имеет свойство grails.serverURL, которое должно быть установлено для текущего хоста и текущего имени приложения.Однако в нашей среде QA команда связующего ПО вступает в войну, которую мы им даем, и развертывает ее на сервере, имя и порт которого мы не знаем заранее.

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

Как лучше всего решить эту проблему?Мы попытались просто удалить grails.serverURL, но Spring Security, похоже, использует его для создания URL для перенаправлений при успешном входе в систему и успешном выходе из системы.StackOverflow и в других местах, которые относятся к этой проблеме, но не отвечают на этот конкретный вопрос.

Ответы [ 3 ]

9 голосов
/ 20 января 2012

Нет, Spring Security не использует его. Всегда должно быть безопасно удалить свойство serverURL и позволить Grails генерировать URL-адреса относительно текущего запущенного приложения.

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

6 голосов
/ 20 января 2012

Grails имеет встроенный механизм, называемый Внешняя конфигурация , который позволяет использовать один или несколько необязательных Config.groovy файлов вне приложения.

Вы добавляете что-то подобное к своему Config.groovy:

grails.config.locations = [
    "classpath:${appName}-config.properties",
    "classpath:${appName}-config.groovy",
    "file:${userHome}/.grails/${appName}-config.properties",
    "file:${userHome}/.grails/${appName}-config.groovy" ]

Затем включите в любой из этих файлов на вашем сервере этот контент:

grails.serverURL = "http://example.com/"

Внешний конфиг переопределит базовый конфиг.

4 голосов
/ 20 января 2012

Выделите serverURL в свойство, которое может быть установлено вашей командой Middleware.Например, поместите в файл config.properties и сделайте его частью конфигурации вашего свойства для Spring.Как правило, рекомендуется использовать внешние свойства, чтобы вы могли передавать WAR-код и развертывать и настраивать его без необходимости перекомпиляции и перепаковки.

См. Здесь для лучшего примера: https://stackoverflow.com/a/973375/463226

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