【问题标题】:Having error while requesting wsdl file from grails从 grails 请求 wsdl 文件时出错
【发布时间】:2012-01-25 20:59:48
【问题描述】:

我正在使用: 圣杯 xfire 插件 我创建了包含以下代码的服务手机: 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] 错误 [/survey].[XFireServlet] - Servlet.service() 用于 servlet [XFireServlet] 在路径 [/survey] 的上下文中抛出异常消息: 键 [org.hibernate.impl.SessionFactoryImpl@4af6178d] 没有值 绑定到线程 ["http-bio-8080"-exec-2] 行 |方法 ->> 886 | java.util.concurrent.ThreadPoolExecutor$Worker 中的 runTask - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | 908 |运行 '' ^ 680 |跑步 。 .在 java.lang.Thread 中

更改客户端后,发现 SOAP 服务器和客户端现在工作正常。 该错误没有影响服务器。

【问题讨论】:

    标签: web-services grails soap groovy wsdl


    【解决方案1】:

    问题和解决方法在this 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/*")
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-22
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多