2012-01-25 2 views
2

에서 WSDL 파일을 요청하는 동안 오류를 갖는 Grails의 있는 XFire 플러그인 을하고 난 다음 코드를 포함하는 서비스 모바일 생성 : 서비스/MobileService.groovy내가 사용 Grails의

package survey 

class MobileService { 
    static expose=['xfire']; 
    static transactional = true; 
    Choice getChoices(String questionTitle_){ 
     return Questions.findByQuestionTitle(questionTitle_); 
    } 
} 

UrlMappings을 여기 WSDL 파일의 XML 컨텐츠를

class UrlMappings { 

    static mappings = { 
     "/$controller/$action?/$id?"{ 
      constraints { 
       controller(matches:/.*[^(services)].*/) 
      } 
     } 
     "/"(view:"/index") 
     "500"(view:'/error') 
    } 
} 

을 볼 수 있습니다에는 .groovy : 012,351을 6,http://127.0.0.1:8080/survey/services/mobile?wsdl 그러나 나는 내 클라이언트를 사용하고 난 다음 오류 데 읽을 수 없습니다 :

오류 2012-01-25 22 : 42 : 12,826 [ "HTTP 바이오-8080"을 - [XFireServlet] 경로 [/ survey]가있는 컨텍스트에서 예외가 발생했습니다. 메시지 : 키 [org.hibernate.impl]에 대한 값이 없습니다. SessionFactoryImpl @ 4af6178d] 스레드에 바인딩 된 [ "http-bio-8080"-exec-2] Line | 방법 - >> 886 | java.util.concurrent.ThreadPoolExecutor $ worker의 runTask - 012 - 908 | ''에서 실행^'680 | 운영 . . java.lang.Thread에서

클라이언트를 변경 한 후 SOAP 서버와 클라이언트가 제대로 작동하고 있음이 밝혀졌습니다. 해당 오류가 서버에 영향을 미치지 않았습니다.

답변

0

문제와 솔루션은 나를 위해 작동 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/*") 
     } 
    } 
}