我使用的是Grails 2.4.3,我的服务只在生产环境中返回null。如果我在Dev环境中运行它,服务会正确响应。即使我使用开发生成war文件也可以,但如果我使用生产环境(默认的grails war)生成war文件,该服务将返回null。我不确定在环境影响服务的地方会发生什么?
我只是通过这种方式发现了一个特定服务的问题。项目中的所有其他服务似乎在所有环境中都能正常工作。
- UPDATE-- 详细说明有问题的服务:该服务确实进行了一些数据库查询和保存(在会话中获取一些信息并保存)。它在课堂上标有@Transactional。它还按惯例注入两个辅助服务(包括sessionFactory)(def sessionFactory; def otherService;)
我也试过从应用程序上下文中获取bean,然后我找到了#34; Bean找不到"
答案 0 :(得分:0)
从事物的声音来看,它与你的注射有关..
grails run-war
来自开发 - 看看这是否会重现同样的问题:
How to log SQL statements in Grails
如果这不能解决问题,下一次尝试将实际应用程序置于调试模式
http://grails-dev.blogspot.co.uk/2012/09/setting-up-log4j-configuration-in.html
conf / spring / resources.groovy
为src / groovy文件创建一个条目:在本例中为GetDownloadConfig 定义注射:
getDownloadConfig(GetDownloadConfig) {
grailsApplication = ref('grailsApplication')
dnsService = ref('dnsService')
jobReplaceService= ref('jobReplaceService')
jenkinsService= ref('jenkinsService')
}
然后在
class GetDownloadConfig {
def jenkinsService
def dnsService
def jobReplaceService
def grailsApplication
// Or alternative method using holders -
//def grailsApplication = Holders.grailsApplication.mainContext.getBean 'grailsApplication'
//def dnsService = Holders.grailsApplication.mainContext.getBean 'dnsService'
//def jobReplaceService= Holders.grailsApplication.mainContext.getBean 'jobReplaceService'
//def jenkinsService= Holders.grailsApplication.mainContext.getBean 'jenkinsService'
这可能也有帮助
How do you get the sessionFactory in a Grails Geb/Spock test case?