2009-10-01 13 views

Odpowiedz

3

Czy AXIS lub CXF są niezbędne w przypadku usług internetowych Java?

nr Chociaż Axis2 jest najbardziej popularny framework do pracy z Web Services nie jest jedynym sposobem, aby je zrobić.

Czy można to zrobić za pośrednictwem JDK (1.6)?

Tak, ale jest o wiele trudniejsze. Zyskasz ogromne korzyści z używania frameworka używanego przez inne aplikacje i błędów, które zapewnia zespół programistów. Robienie wszystkiego ręcznie przypomina ponowne wynalezienie koła.

Jeśli chcesz mieć pełną kontrolę tego, co się dzieje pod spodem, prawdopodobnie można przejść z: JAX-WS

lub jeśli aplikacja jest bardzo prosta, bezpośrednio z gniazdka.

Ale znowu, Axis2 jest kanoniczny sposób to zrobić WS (ale nie jedynym)

+1

Tylko zgadnij, ale prawdopodobnie chce trochę więcej szczegółów. –

+0

@Willliam: Edytowany, aby dodać więcej szczegółów. Myślę, że bez względu na to, co jeszcze zostanie dodane, odpowiedź będzie taka sama. Czy Axis jest potrzebny? Nie, można to zrobić za pomocą JDK? Tak, ale jest o wiele trudniejsze. :) – OscarRyz

1

Można używać strumieni http dostarczonych przez serwer jak zażyczyć sobie, ale za pomocą ramy i kilka słoików (które są udowodnione działanie) zaoszczędzi ci wielu bólów głowy i dużo czasu na dłuższą metę.

0

Zwykle będziesz chciał użyć ram programowania dla usług internetowych.

Coś takiego jak AXIS, CXF lub Java EE (GlassFish) do pobrania od firmy Sun.

2

Jako alternatywę dla Axis, możesz użyć struktury Spring WebServices do uruchomienia aplikacji webservices w kontenerze J2EE, takim jak Tomcat lub podobnym. Zauważyłem, że jest bardzo łatwy w użyciu i konfiguracji, a jeśli chcesz później zintegrować swoje serwisy internetowe z inną aplikacją internetową, jest to dość łatwe (zrobiłem to osobiście podczas dwóch różnych okazji).

+0

Osi 1? Zły. Axis2? Nawet gorzej. +1 dla wiosennych serwisów internetowych. – duffymo

3

opiera się na wszystko do prawdziwego i osobistej historii następujący:

Więc chcesz konsumować usługi internetowej w aplikacji sieci web Java, i nie chcesz, aby dodać 10MiB słoików do listy chudego pliku 1.3 MB .war, a poza tym jesteś świetny w analizie XML (możesz ręcznie kodować zapytania XPath i pliki XSLT), całkowicie rozumiesz HTTP, a klient, z którym się łączysz, ma świetną dokumentację. Pobierz wygląd WSDL na punktach końcowych i swoich metodach i zacznij tworzyć klasę Java odwzorowującą funkcje, których będziesz potrzebować. Już czujesz się świetnie.

Zaczynasz czytać o tym, jak wysłać żądanie SOAP i uważasz, że to wygląda trochę gadatliwie, ale co to jest, to tylko ciąg, więc zaczniesz budować narzędzie, które pobiera twój obiekt żądania Java i konwertuje go do żądania SOAP. Wysyłasz swoje jasne żądanie SOAP do serwera, ale odmawia ono dostępu (missing a signature).

Teraz zaczniesz dodawać pliki JAR szyfrowania do projektu i zaczniesz analizować sposób obliczania podpisu części dokumentu XML i uwzględniać zarówno jego, jak i dokument w żądaniu.Zajmie to trochę czasu, ale przy dostatecznym hackowaniu otrzymasz wiadomość, którą możesz wysłać do usługi mydła, a teraz masz do czynienia z SOAP response. Teraz czujesz się świetnie ...

Do czasu, gdy administrator Twojego klienta zmieni swoje wymagania bezpieczeństwa, wyda nowe klucze publiczne i zaktualizuje interfejs mydła z niektórymi niestandardowymi typami, a także następny klient, który ma podobną usługę (ale na Windows Server) chce, abyś zaimplementował je również z nimi.

W tym momencie zrezygnowałem z próby zaimplementowania tego w czysty sposób Java i właśnie zacząłem używać standardowych bibliotek. Zajmują się takimi zagadnieniami, jak szyfrowanie, podsłuchy, odchylenia od standardów i pozwalają skupić się na rzeczach, które są bliższe twojej problematycznej dziedzinie. Mam nadzieję, że możesz zaoszczędzić sobie utraconego miesiąca, który zajęło mi nauczenie się tej lekcji.

3

Aktualizacja na krajobraz usług internetowych w 2013 roku

usług sieciowych wykorzystywanych być SOAP i XML oparte. Usługi internetowe zostały standaryzowane w JAX-WS. Niektóre z bardziej popularnych ram są (były):

  • Axis 1.x
  • Oś 2
  • Apache CXF - CXF obejmuje również inne protokoły. Jest to znacznie szerszy szkielet usług sieciowych Metro, który obejmuje implementację referencyjną JAX-WS.
  • Java 6 i Java 7 zawierają domyślnie JAX-WS RI. Oznacza to, że struktury nie są już potrzebne, z wyjątkiem generowania kodów pośredniczących i szkieletów klienta/szkieletów.

Istnieją inne implementacje, które nie są tutaj wymienione, a które są specyficzne dla producenta, np. Implementacja WS Web Webs i implementacja Weblogic WS.

Generalnie jednak, aby tworzyć usługi sieciowe, polecam Metro i JAX-WS RI.

Należy pamiętać, że istnieje wiele standardów WS- *, np. WS-Security, który może nie być częścią wszystkich implementacji WS.

Ponieważ serwisy internetowe istnieją już od jakiegoś czasu, pojawiły się inne alternatywy zarówno pod względem stylu architektury, protokołu i kodowania.

Na przykład XML był kodowaniem de facto. JSON jest teraz bardziej rozpowszechniony. Warto zajrzeć do Jacksona, parsera JSON lub Google GSON. Głównymi argumentami na korzyść JSON są to, że są łatwe w obsłudze, lekkie i przyjazne programistom.

Wraz z JSON-em przyszedł odpoczynek. REST to styl architektoniczny. Dzięki usłudze REST można nadal implementować "usługi sieciowe" w znaczeniu usług zdalnych, które można łatwo wykorzystać w sieci. REST został również ujednolicony w rodzinie standardów Java jako JAX-RS. Niektóre popularne implementacje JAX-RS obejmują CXF, Jersey i RESTLet.

Wreszcie, w bloku są nowe dzieci, które używają binarnych kodowań. Są to bufory protokołów Google i Apache Thrift. Ich głównym celem jest wydajność oraz szersze wsparcie dla innych języków (Java, C#, Erland, Perl ...).

Podczas tworzenia dzisiejszej usługi internetowej pytanie powinno brzmieć: - czy zależy mi na wydajności? - czy chcę uzyskać dostęp do usługi z wielu różnych języków? - czy chcę korzystać z urządzeń mobilnych?

Powinny one pomóc poprowadzić swój wybór. Ponadto wolę minimalizować zależności. Oznacza to, że wolę wziąć coś, co pochodzi z JRE lub JDK, np. implementacja referencyjna JAX-WS lub JAX-RS.

+0

Dziękuję za to, bardzo pouczające. –

+0

Czy możesz zaktualizować tę odpowiedź na 2016 rok? Co się zmieniło i jakie są nowe standardy? Czy masz posty na blogu, które zawierają więcej szczegółów na ten sam temat? – gonephishing

+0

Powiedziałbym, że JSON, REST i Jersey są drogą do zrobienia: jest bardziej lekki i łatwiejszy w użyciu. –

Powiązane problemy