Каков наилучший способ использовать веб-сервис в Grails? - PullRequest
0 голосов
/ 20 декабря 2011

Я знаю, что есть несколько плагинов для веб-сервисов для Grails, некоторые из них выглядят так, как будто они не поддерживаются.У меня есть банка со всеми заглушками, сгенерированными из WSDL, и теперь мне нужно начать интеграцию.Какой плагин лучше всего подойдет для этого?Кроме того, веб-служба использует SOAP, а не REST.

Ответы [ 2 ]

1 голос
/ 21 декабря 2011

Я знаю, что ваш вопрос задавался о плагине для использования, но я никогда не использовал один из плагинов Grails-WS, поэтому я не могу комментировать там.Вместо этого, если ваши заглушки совместимы с маршалингом JAXB, вы можете использовать проект Spring Web Services.Вам просто нужно добавить зависимость в BuildConfig.groovy для импорта соответствующих jar-файлов.

http://static.springsource.org/spring-ws/sites/2.0/reference/html/client.html

Таким образом, вы просто определяете некоторые bean-компоненты JAXB marshaller / unmarshaller и обработчики веб-служб.Вы можете получить как можно больше подробностей из документации, приведенной выше, и определить таймауты и безопасность, если указали свой собственный обработчик или перехватчики соединений.

myJaxb2Marshaller(org.springframework.oxm.jaxb.Jaxb2Marshaller) {
    classesToBeBound = ['my.class.Class1','my.class.Class2']
}

myWebServiceMessageFactory(org.springframework.ws.soap.saaj.SaajSoapMessageFactory)

myWebServiceTemplate(org.springframework.ws.client.core.WebServiceTemplate, ref('myWebServiceMessageFactory')) {
    marshaller = ref('myJaxb2Marshaller')
    unmarshaller = ref('myJaxb2Marshaller')
}

В этот момент вы можете использовать внедрение зависимостей Grail для использованияWebServiceTemplate в вашем коде Grails:

class myService {
    def myWebServiceTemplate

    void myMethod {
        ...
        Class1 myRequestObject = new Class1(data:myData)
        Class2 myResponseObject = myWebServiceTemplate.marshalSendAndReceive(mySoapEndpoint, myRequestObject)
        ...
    }
}
0 голосов
/ 21 декабря 2011

Я бы порекомендовал использовать способ Spring.В конце концов, вы развиваетесь в Grails, так что, возможно, вам не нужен плагин.Прочитайте документы Spring на Remoting и веб-сервисах , глава 19.5.2 «Доступ к веб-сервисам с помощью JAX-RPC».

Нет необходимости в заглушках вашего фляги.Spring будет генерировать все для вас ...

PS: Полагаю, вы знаете, как объявлять бобы в граале ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...