2012-05-16 16 views
13

Po prostu potrzebuję klienta SOAP do wykonywania połączeń zdalnych, ale jestem trochę noobu Groovy. Zgodnie z Groovy documentation, standardowa biblioteka SOAP Groovy jest przestarzała. Zamiast tego dokumenty prowadzą do nowszej biblioteki: GroovyWS.Jaka jest standardowa biblioteka SOAP do użycia w groovy?

Niestety, GroovyWS ma ostrzeżenie, że projekt jest uśpiony, a następnie wskazuje na Groovy WSLite.

Groovy WSLite wciąż wydaje się być pod aktywnym rozwojem, ale nie bardzo "Groovy-ish" w porównaniu do poprzednich 2 bibliotek. Czy wslite jest tym, czego wszyscy używają?

+0

Moje wymagania dotyczące projektu, które zrodziły to pytanie, uległy zmianie, więc nie wypróbowałem bibliotek sugerowanych przez @ john-wagenleitnera, ale jego odpowiedź była najbardziej kompletna jako odpowiedź na moje pytanie. Dziękuję wszystkim za odpowiedzi! – matmer

Odpowiedz

11

myślę, że można znaleźć zarówno GroovyWS i groovy-wslite (i HTTP Builder) są używane jako biblioteki klienckie Groovy mydło w projektach i decyzja była prawdopodobnie jedną z których jeden pracował, a który miał API/podejść użytkownikowi preferowanego (w ta kolejność).

Moja rada to dać GroovyWS spróbować, jeśli podoba ci się API, które zapewnia i jego zdolność do proxy dokumentu WSDL i sprawdzić, czy działa dla usług, z którymi potrzebujesz interakcji. W świecie SOAP nie zmieniło się wiele, więc nie przejmowałbym się zbytnio tym, jak ostatnio został zaktualizowany. Jeśli to zadziała, to skończysz, jeśli napotkasz problemy, których nie jesteś w stanie łatwo znaleźć, spróbuję alternatywy.

groovy-wslite (disclaimer: Jestem autora) ma na celu zapewnienie lekki (w sensie zależności) alternatywa, która inwestuje wygodę WSDL analizowania/proxy dla ułatwiając mieć większą kontrolę nad powstałego połączenia bez mydła aby zagłębić się w wnętrza niektórych bazowych frameworków Java, takich jak CXF. Niektórzy wolą mieć dodatkowe funkcje biblioteki zbudowane na podstawie takiego szkieletu, podczas gdy inni mogą preferować prostotę innego podejścia.

Rzeczą, która sprawia, że ​​Groovy jest tak świetny, jest to, jak łatwo jest zintegrować się z Javą. Tak więc, jak już zauważyli inni, można łatwo zintegrować z klientami usług WWW Java, takimi jak Spring WS, CXF i JAX-WS.

2

Trzymałbym się z dala od groovywów, to jest do bani. Po rozejrzeniu się w końcu wybrałem rozwiązanie polegające na korzystaniu z usług internetowych wiosennych i serwisów internetowych opartych na umowach.

Klient tworzy instancję poleceń za pomocą metody toXml(), która generuje kod XML żądania mydła. Następnie użyj WebServiceTemplate do sendToEndpoint.

Dla serwera używamy punktów końcowych usług sieci Spring. Parsowanie przychodzącego xml jest dziecinnie proste i nie trzeba marnować XML-a na obiekt, jako że GPathResult uzyskany z XmlSlurpera jest całkowicie zarządzalny. Nasz serwer działa na wierzchu graalów, więc wykorzystaliśmy wtyczkę springws grails, dzięki czemu tworzenie punktów końcowych jest jeszcze łatwiejsze.

Jest jednak jedno zastrzeżenie. Wtyczka Springws dla Grails jest nieaktualna. Wiosenne serwisy internetowe to teraz wersja 2.x, a wtyczka springws pochodzi z 1.4.x. Jest jednak bardzo łatwy w użyciu bez wtyczki i myślę, że uaktualnienie wtyczki do nowszej wersji API nie jest trudne.

Ponadto, jeśli chcesz zrobić MTOM, springws staje się nieco bardziej skomplikowany, ponieważ musisz głębiej zagłębić się w obsługę wiadomości. Byłem w stanie zrobić całkiem zaawansowane zabezpieczenia ws-spring, ale nie ma problemu.

W przeciwnym razie użyłbym cxf (dobrze ładuje MTOM), jeśli chcesz trzymać się jax-ws et al. Przekroczenia są prawdopodobnie wyższe, ponieważ wszystkie dynamicznie generowane proxy i pojęcia. Co więcej, nie jest on oparty na umowach, co jest dla nas dużym plusem.

http://predic8.com/groovy-web-services-jax-ws.htm

http://cxf.apache.org/docs/how-do-i-develop-a-client.html

+0

FWIW, 4 lata później, i migracja z dala od SOAP, dałbym groovy wslite strzał, dla pozostałych klientów usług internetowych. Budując punkty końcowe serwera, będę musiał ponownie przestudiować tę dziedzinę. Proszę o odpowiedź w kontekście roku 2012. – loteq

0

Wygląda jak ty zrobisz yourslef domowe! Wydaje się, że Groovy WS Lite aktualnie działa. Jeśli chcesz zobaczyć spring-ws w akcji przy użyciu Groovy, to tutaj jest projekt test suite, który stworzyłem w github.

Powiązane problemy