2010-09-08 17 views
7

Jestem nowy w usługach sieciowych w ogóle. Próbuję napisać autonomicznego klienta Java, który może uzyskać odpowiedź z usługi sieciowej.Samodzielny klient sieci web java

Próbowałem wyszukiwać hasła SO i Google, ale teraz mam większe zamieszanie. Poniżej znajdują się linki, które przeszedłem szeroko.

mam url takich jak: http://api.something.com/remote/wsdl/SomeEncryptedText

Mam też żądania SOAP coś takiego:

<?xml version="1.0" encoding="utf-8"?> 
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> 
<soap12:Body> 
<AuthUsername>[email protected]</AuthUsername> 
<AuthPassword>mypassword</AuthPassword> 
<Sid>12121</Sid> 
<DynamicProductFeedsRequest xmlns="http://api.something.com/remote/SomeEncryptedText"> 
</DynamicProductFeedsRequest> 
</soap12:Body> 
</soap12:Envelope> 

Mając to jak mam napisać autonomicznej Java klienta, który chcę, aby zintegrować z niektórych aplikacji internetowej w późniejszym terminie?

Z zasobów wspomnianych wcześniej wygląda na szeroki wybór oprogramowania: SoapUI, WSDL2Java, Apache Axis, Maven Plugin, JAX-WS, Apache CXF.

Użyłem użyłem http://www.soapclient.com/soaptest.html w jednej z powyższych odpowiedzi SO i jestem w stanie uzyskać doskonały plik HTML/xml w przeglądarce.

Teraz jestem zdezorientowany, na jakim oprogramowaniu powinienem użyć? Informacje w linkach są niewielkie i nie mogę się ze sobą skorelować, ponieważ nic nie wiem w SOA.

Czy ktoś mógłby mi powiedzieć, jakie kroki należy wykonać podczas pisania autonomicznego klienta Java, który pobiera adres URL WSDL i żądanie SOAP i podaje mi jego wynik?

Proszę dać mi znać, jeśli przegapię jakiekolwiek informacje.

+0

Użyj CXF i wykonaj wszystkie kroki w tym linku http://cxf.apache.org/docs/developing-a-consumer.html – JoseK

Odpowiedz

10

To pytanie wszystko zależy od następujących czynników:

  • wersja JDK swojego kompilatora Javy.
  • Twoja wersja WSDL (jest 1.0, 1.2 i 2.0).

Zasadniczo, jeśli używasz Java annotations wygenerować usług internetowych, to musisz Java 5 Powiązany bibliotek z usług internetowych (który obsługuje adnotacji).

Niektóre artykuły dotyczące korzystania z Java Web Services z adnotacjami (JAX-WS):

Zacznę od generowania klienta usługi Web z Java, że ​​nie robi 't obsługuje adnotacje. Dobrze znany klient generujący WSDL na Javie to Apache Axis (ostatnia wersja to 1.4 wydana w dniu 22 kwietnia 2006 r.). Zasadniczo przyjmuje to definicję WSDL i generuje ją z powrotem do klienta. Obsługuje starą wersję WSDL (1.0) i ulega awarii, jeśli używasz nowszych wersji WSDL (1.2 i 2.0).

Co to w zasadzie robi, to bierze twój WSDL i generuje proxy Java, które komunikuje się z twoją usługą sieciową. Może pozwolić na komunikację opartą na RPC i XML.

Dla Java, który obsługuje adnotacje są skutecznie, 2 sposoby osiągnięcia tego celu:

  • stosujących własne wsimport polecenia Javy (wykonywalny znajduje się w folderze JDK_HOME/bin/).
  • Używanie bibliotek innych firm, takich jak Apache Axis 2 (która skutecznie zastępuje Apache Axis i obsługuje wersję WSDL 2.0) lub Apache CXF (która obsługuje WSDL do 1,2).

Aby korzystać wsimport, to w zasadzie trzeba iść do linii poleceń (lub napisać skrypt) i skutecznie zrobić coś z tym efekt:

wsimport -d [outputdir] wsdl_file 

i proxy Java będzie można znaleźć w [outputdir] teczka.

wsimport znajduje się w JDK 1.6 (nie wiem, czy istnieje w starszych wersjach). Więcej źródła here i here.

W przypadku Apache Axis, Apache Axis 2 lub Apache CXF istnieje plik klasy WSDL2Java, który generuje kod źródłowy.

Oto instrukcja korzystania z WSDL2Java w Apache CXF i Apache Axis 2.

Mam nadzieję, że pomoże to w jakikolwiek sposób, ponieważ spędziłem w tym czasie 30 minut pracy. :-)

+0

Witam, wielkie dzięki. Właśnie w tej kolejności eksploruję rozwiązanie JoseK. Miałem problem z WSDL2Java, który dał mi poniższy błąd; > Błąd WSDLToJava: kodery ws/ws kodowane/nie są obsługiwane przez CXF Naprawiono za pomocą rozwiązania SO. Zasadniczo usunąłem kodowanie i teraz wygenerowałem dwa pliki 1. RemoteModelDynamicProductFeedsPort.java i 2. RemoteModelDynamicProductFeedsService.java. Musisz wykonać kroki w linku. Spróbuję też postu "Elitarnego Dżentelmena", gdy utknę. Dzięki! Było to bardzo szczegółowo. – oneworld

+2

@Gentleman, po prostu nazwij to dokumentowaniem istniejących praktyk i zapisaniem go w lokalizacji poza miejscem, a twój szef poprosi cię o zrobienie tego ponownie. –

+0

Użyłem samouczek CFX dostał trzy pliki wygenerowane jak poniżej: RemoteModelDynamicProductFeedsPort.java RemoteModelDynamicProductFeedsPort_RemoteModelDynamicProductFeedsPort_Client.java RemoteModelDynamicProductFeedsService.java A potem wydał: wsdl2java -ant -client -d D: \ experiementals \ Java \ WebService-apache-CXF -2.2.10 \ bin -b async_binding.xml wsdlfile.wsdl Nic się nie dzieje. Myślałem, że wygenerowałem kody pośredniczące, a także spełniłem żądanie SOAP. Jakieś myśli na ten temat? Zasadniczo tutorial ma do czynienia z pewnymi skomplikowanymi materiałami. Czy to dlatego, że usunąłem szyfrowanie, to nic nie robi? – oneworld

Powiązane problemy