我使用的是: Grails插件,我创建了包含以下代码的服务手机:services/MobileService.groovy
package survey
class MobileService {
static expose=['xfire'];
static transactional = true;
Choice getChoices(String questionTitle_){
return Questions.findByQuestionTitle(questionTitle_);
}
}UrlMappings.groovy
class UrlMappings {
static mappings = {
"/$controller/$action?/$id?"{
constraints {
controller(matches:/.*[^(services)].*/)
}
}
"/"(view:"/index")
"500"(view:'/error')
}
}我可以在这里看到WSDL文件的XML内容:http://127.0.0.1:8080/survey/services/mobile?wsdl,但是我不能使用我的客户端读取它,我有以下错误
错误2012-01-25 22:42:12,826 "http-bio-8080"-exec-2 ERROR /survey.XFireServlet - Servlet.service()在路径/survey的上下文中抛出异常消息:绑定到java.util.concurrent.ThreadPoolExecutor$Worker中的线程"http-bio-8080"-exec-2 Line Line Method ->> 886 ->>886 runTask的键/survey没有值。在java.lang.Thread中
在更改客户端之后,结果是SOAP服务器和客户端现在工作正常。这个错误并没有影响服务器。
发布于 2012-02-20 17:45:42
这个jira中的问题及解决方案
对我有用的黑客:
def doWithWebDescriptor = { xml ->
def filters = xml.filter
def filterMappings = xml.'filter-mapping'
def servlets = xml.servlet
def servletMappings = xml.'servlet-mapping'
// define hibernate's OpenSessionInViewFilter
def hibernateFilter = 'hibernateFilter'
// Here's the modification I made per the JIRA:
/*
filters[filters.size()-1] + {
filter {
'filter-name'(hibernateFilter)
'filter-class'('org.grails.xfire.OpenSessionInViewFilter')
}
}
filterMappings[filterMappings.size()-1] + {
'filter-mapping' {
'filter-name'(hibernateFilter)
'url-pattern'("/services/*")
}
}
*/
def xfireServlet = 'XFireServlet'
servlets[servlets.size()-1] + {
servlet {
'servlet-name'(xfireServlet)
'servlet-class'('org.grails.xfire.XFireSpringServlet')
'load-on-startup'(1)
}
}
servletMappings[servletMappings.size()-1] + {
'servlet-mapping' {
'servlet-name'(xfireServlet)
'url-pattern'("/services/*")
}
}
servletMappings[servletMappings.size()-1] + {
'servlet-mapping' {
'servlet-name'(xfireServlet)
'url-pattern'("/servlet/XFireServlet/*")
}
}
}https://stackoverflow.com/questions/9010226
复制相似问题