簡體   English   中英

如果我不知道服務器名稱和端口,如何在企業環境中設置grails.serverURL?

[英]How do I set grails.serverURL in an enterprise environment when I don't know the server name and port ahead of time?

我們在Grails 2.0中有一個可以在localhost:8080上運行的應用程序。 Config.groovy ,應用程序具有grails.serverURL屬性,必須為當前主機和當前應用程序名稱設置grails.serverURL屬性。 但是,在我們的QA環境中,中間件團隊承受了我們給予他們的戰爭,並將其部署到我們事先不知道其名稱和端口的服務器上。

看來Grails假設您總是要注冊一個域名,然后完全控制該名稱和應用程序正在運行的端口,而事實並非如此。

解決此問題的最佳方法是什么? 我們只是嘗試刪除grails.serverURL ,但是Spring Security似乎使用它來構建用於成功登錄和注銷成功的重定向的url。

development { grails.serverURL = "http://www.notused.com/${appName}" }
production { grails.serverURL = "<we don't know yet>" }

在有人問之前,我已經閱讀了關於StackOverflow和與該問題有關的其他地方的大量文章,但沒有回答這個特定問題。

不,Spring Security不使用它。 刪除serverURL屬性並讓Grails生成相對於當前正在運行的應用程序的url應該總是安全的。

通常,您唯一需要此屬性的位置是在生成電子郵件並希望嵌入服務器URL時,以便用戶可以單擊返回到您的站點。 由於這些通常是異步發送的,而不是在服務器請求期間發送的,因此如果沒有config選項,就無法知道服務器地址。 但是,如果您不這樣做,則可以忽略。

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/"

外部配置將覆蓋基本配置。

將serverURL外部化為可由您的中間件團隊設置的屬性。 例如,放置在config.properties文件中,並將其作為Spring的屬性配置的一部分。 通常,將屬性外部化是最佳實踐,因此您可以傳遞WAR並進行部署和配置,而無需重新編譯和重新打包。

參見此處以獲得更好的示例: https : //stackoverflow.com/a/973375/463226

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM