簡體   English   中英

無法從Config.groovy訪問外部化的grails.serverURL

[英]Externalized grails.serverURL not accessible from Config.groovy

我有一個配置被外部化的應用程序。 在Config.groovy中,我正在更新

grails.config.locations=[file:/.../myapp-log4j.groovy, file:/.../myapp-config.properties]

對於數據源等來說,這很好用。 但是稍后在Config.groovy中,我有:

springws {
    wsdl {
        MyApp {
            // In this case the wsdl will be available at    <grails.serverURL>/services/v1/myapp/myapp-v1.wsdl
            wsdlName= 'myapp-v1'
            xsds= '/WEB-INF/myapp.xsd'
            portTypeName = 'myappPort'
            serviceName = 'myappService'
            locationUri = "${grails.serverURL}/services/v1/myapp"
            targetNamespace = 'http://www..../myapp/v1/definitions'
        }
    }
}

$ {grails.serverURL}包含[:],這不是我的配置文件中的內容。 配置文件包含(在數據源詳細信息中):

grails.serverURL=http://samiel:9011/xid

我的猜測是,僅當我從Config.groovy返回后,才使用更新的grails.config.locations。

那么,根據外部化的serverURL設置Web服務詳細信息有哪些選擇?

這是我運行示例時得到的結果(只需確認您的起始位置):

def testExternalConfig() {
  println "grails.serverURL: ${ConfigurationHolder.config.grails.serverURL}"
  println "springws.wsdl.MyApp.locationUri ${ConfigurationHolder.config.springws.wsdl.MyApp.locationUri}"
}

--Output from testExternalConfig--
grails.serverURL: http://samiel:9011/xid
springws.wsdl.MyApp.locationUri http://localhost:8080/soGrails/services/v1/myapp

就像您說的那樣,Config.groovy看不到在外部配置中設置的值。 我相信Grails在Config.groovy之后會處理外部配置,並且該測試似乎可以確認這一點。 邏輯上是您可能具有要優先於war文件中的config的外部配置文件值。

解決方法是覆蓋myapp-config.properties中的full屬性:

grails.serverURL=http://samiel:9011/xid
springws.wsdl.MyApp.locationUri=http://samiel:9011/xid/services/v1/myapp

有了這個改變,我得到了:

--Output from testExternalConfig--
grails.serverURL: http://samiel:9011/xid
springws.wsdl.MyApp.locationUri http://samiel:9011/xid/services/v1/myapp

暫無
暫無

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

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