2012-02-26 2 views
0

Grails의 모델, 사용 Grails의에 웹 서비스 데이터를 통합 : 나는의이 책을 가정 해 봅시다 로컬 DB (일부 데이터가검색하고 난 깔끔한 모듈 형 방식으로 추적 상황을 처리 할 수있는 방법을 알고 싶어

, 저자 , 리뷰), 하나 이상의 외부 WS에서 오는 정보로 해당 데이터를 향상시켜야합니다. 가 다른 시나리오가 될 수 있습니다 엔티티의 속성을 강화

  1. (예를 들어 나는 데이터베이스의 도서 출판 해가없는, 그래서 WS에서 사용자가 예약하려고 할 때마다 그것을 얻을 필요)
  2. 는 DB에서와 레티에서 오는 단체 연합 (I 지역에서 일부 리뷰가 각 도서에 대한 예를하지만 외부 레티에서 그 (것)들의 더 많은 것을 얻을 수 있습니다)이 처리하는 가장 좋은 방법은 무엇

Grails에서이 문제가 발생 했습니까?

답변

0

문제는 광범위한 비트 (우리는 당신이 소비하려고하는 웹 서비스의 종류를 알 수없는),하지만 난 것 같아요 그들은 SOAP 기반의 각 소비되는 웹 서비스에 대한

  • 사용 groovyWS 경우 , 아니면 RestClient을 사용하십시오 (원하는 경우 Rest plugin을 사용할 수 있지만 잠시 동안 업데이트되지 않은 것으로 보입니다 ...)
  • 둘 다 질의하는 로직을 처리 할 Grails 서비스를 생성하십시오 로컬 데이터베이스와 웹 서비스 ...

    ,210
    class BookService { 
    
        def bookWS 
    
        def findByAuthor = { author -> 
         def books = [] 
         // From local db 
         books << Book.findAllByAuthor(author); 
    
         // From a webservice 
         books << bookWS.findBooksByAuthor(author); 
         return books 
        } 
    
    } 
    
  • 는 대답을 내 컨트롤러 액션에

    class BookController { 
        def bookService 
    
        def list() { 
         def author = Author.findByName(params.author) 
         [allBooks : bookService.findByAuthor(author)] 
        } 
    } 
    
+0

덕분에 내 로컬 bookservice를 사용합니다. 그러나 이제 진짜 질문이옵니다 : 책의 종류는 어떤 종류의 물건을 반환해야합니까? JSON 객체 (REST + JSON 가정)? 도서 모델? 기본 데이터 소스에서 추상화하기 위해 중급 Book 클래스를 만드는 것이 더 좋을까요? – Mario

+0

글쎄 내 예제에서는 WS 스텁 (bookWS) grails 응용 프로그램에서 북 모델에 원격 웹 서비스 응답을 변환하는 메서드가 있다고 가정합니다. 전환 논리는 당신에게 달렸습니다 ... – Philippe

+0

여기에 예제가 있습니다 : http://groovy.codehaus.org/Using+the+client+with+complex+objects – Philippe

관련 문제