生产环境中的 Grails 服务返回 Null
Posted
技术标签:
【中文标题】生产环境中的 Grails 服务返回 Null【英文标题】:Grails Service in Production Environment returns Null 【发布时间】:2014-11-02 21:50:45 【问题描述】:我正在使用 Grails 2.4.3,并且我有一个仅在生产环境中返回 null 的服务。如果我在开发环境中运行它,服务会正确响应。即使我使用 Development 生成一个 war 文件,它也可以工作,但是如果我使用生产环境(默认的 grails war)生成一个 war 文件,该服务将返回 null。我不确定在环境影响服务的情况下可能导致这种情况发生的原因......?
我只发现一个特定服务以这种方式响应的问题。项目中的所有其他服务似乎在所有环境中都能正常工作。
--更新-- 详细说明有问题的服务:该服务确实进行了一些数据库查询并保存(在会话中获取一些信息并保存)。它在类上用@Transactional 标记。它还按照约定注入了两个辅助服务(包括 sessionFactory)(def sessionFactory; def otherService;)
我也尝试从应用程序上下文中获取 bean,但得到“找不到 Bean”
【问题讨论】:
服务在做什么?服务是否从数据库中检索数据? 这肯定与天气状况有关 :)。详细说明! 【参考方案1】:从事情的声音来看,它与您的注射有关..
-
我会跑
grails 运行战
来自开发 - 看看这是否会重新产生相同的问题:
-
将应用程序数据库置于调试模式,查看是否与数据库相关:
How to log SQL statements in Grails
如果这不能解决问题,下一个尝试是将实际应用程序置于调试模式
http://grails-dev.blogspot.co.uk/2012/09/setting-up-log4j-configuration-in.html
-
这当然是一个服务,而不是一个 groovy src 文件或其他东西,为了将服务注入到其他调用中,您可以尝试:
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?
【讨论】:
以上是关于生产环境中的 Grails 服务返回 Null的主要内容,如果未能解决你的问题,请参考以下文章
如何在实时/生产环境中监控和维护我的 Grails 应用程序?
grails 2.0 - 正确使用 serverURL 进行生产?