wsdl stworzony w .Net C# i .Net ASP - klient w javie

0

Witam

Będę robił to po raz pierwszy. Na razie nie mam dostępu do samego wsdl'a (jest on na maszynie docelowej odciętej od reszty świata, ale mam rozpiskę metody jaką zawiera - serwer, klient chyba też tam będzie). Wiem, że Eclipse potrafiłby wygenerować zalążek klienta jeśli ma dostęp do wsdl'a. A co robić jeśli się nie ma? Wystarczy sam klient? Czy też serwis też jest potrzebny? Jakie technologie (biblioteki) wykorzystać (im bardziej standardowe tym lepiej, najlepiej nie wychodzić poza JDK, ale pewnie się nie da)? Co polecacie do poczytania odnośnie SOAP'a (poza samą specyfikacją, chodzi mi bardziej o tworzenie web service'ów i klientów pod Eclipse)?

Pozdrawiam
Mariusz

0

Eclipse potrafi generować w obie strony. Nie bardzo rozumiem o jakie biblioteki pytasz. Jeśli chodzi o webservices to masz JAX-WS, jeśli chodzi o SOAP to SAAJ

0

Chodziło mi o biblioteki typu np. Axis 2, CXF. Ale jeśli do stworzenia klienta SOAP wystarczy SAAJ (tylko SAP 1.1?) to OK.

1

Ale przecież napisałeś że chcesz pisać klienta, więc na cóż ci axis czy cxf?
http://docs.oracle.com/cd/E17802_01/webservices/webservices/reference/tutorials/wsit/doc/Examples_glassfish6.html

0

Aha, czyli pisząc klienta nie potrzebuję żadnych dodatkowych, zewnętrznych bibliotek.

Ale kontener lub serwer aplikacji już dla klienta muszę postawić? Czy aplikacja desktopowa może być klientem web serwisu?

0

Czy w ogóle otwarłeś link który ci podałem?

1

Och no tak, bo ten art który podałem to taki długi jest że kilka dni go trzeba czytać... Masz tam przykład klienta webservice który jest zwykłą klasą z metodą main(). Więc to chyba dość oczywiste że to jest zwykły desktopowy klient...

0

Wybacz, ale prze ostatnie kilka dni padnięty byłem. Tak naprawdę dopiero dziś siadłem przy całym tym temacie i powoli czytam różne materiały. Oczywiście masz rację. W każdym razie jeszcze trochę wiedzy muszę przyswoić sobie. Czy wsimport poradzi sobie z wsdl'em, który mam lokalnie (razem z importami)? Mam jakąś wiedzę, ale nieusystematyzowaną.

Ktoś używał Eclipse do generowania klienta?

0

Ten przykład klienta jest OK. Brak w nim jednak szczegółów. Np. nie widzę w tym przykładzie jak jest lokalizowany web serwis i łączenie z nim.

0

Tak, ale w tej przykładowej klasie klienta nie widać żadnych odniesień do wsdl'a. Gdzie to więc się ukrywa?

0

Dobra odgrzeję trochę wątek. Co muszę zrobić żeby taką aplikację desktopową wykorzystującą SOAP przestawić na komunikację po SSL (HTTPS)?

0

Nie no, ty masz poważnie jakiś problem z korzystaniem z google.
http://ws.apache.org/xmlrpc/ssl.html
Ręce opadają.

0

Nie mam. Korzystałem człowieku :-). Wiele stron przeglądnąłem. Zapewne doskonale wiesz, że jest tam takie pole tekstowe służące do wpisywania fraz - niestety szklane kule mi się skończyły i pojęcia nie mam co mógłbyś tam wpisywać - zatem szukałem po frazach po których spodziewałem się wyszukania odnośników do stron z satysfakcjonującymi informacjami - niestety nie było tak do końca (wujek Google ma swoje sprytne algorytmy). Gdzie masz napisane, że Google musi być wiarygodnym źródłem informacji? Że zawsze wyniki jego wyszukiwania będą zadowalające? Nikt Ci nie każe się udzielać w społeczności i na forach jeśli przez to wzrasta twój poziom frustracji. Oczywiście nie kwestionuję tym twoich kompetencji i wiedzy - zapewne sporej. Sugeruję tylko czasem "ugryźć się w język", albo w ogóle nic nie pisać - przecież przymusu nie ma :-). Co do linka owszem omawia on łączenie się po SSL'u, a mi chodziło jak to pożenić z JAXB (Metro - czyli to co jest wbudowane standardowo w Javę; od razu zaznaczam, że jestem na etapie przeglądania dokumentacji, ale jest tego sporo i dlatego tu pytam, bo może ktoś szybciej doradzi czego szukać konkretnie) z endpointami i bindowaniami.

0

W takim razie proponuje zadawać sensowne pytania to moze dostaniesz sensowne odpowiedzi. Spytałeś jak puszczać SOAP po SSL i odpowiedź dostałeś.
Nie bardzo rozumiem co SSL ma wspólnego z (de)serializacją obietków do xml / z xml (do czego służy JAXB). Ale znów wspominasz o Metro które nie jest nijak w żadną javę wbudowane a jest referencyjną implementacją JAX-WS, że wykorzystującą JAXB to zupełnie inna bajka.
Zadaj więc konkretne pytanie: co chciałbyś osiągnąć?

0

Dobra, z tymi skrótami to rzeczywiście zginąłem jak w babka w Czechach :-) Wcześniej serwisy (WSDL'e) były wystawione na HTTP. Było pięknie, łączyłem się, komunikacja odbywała się. Potem na serwerze został zainstalowany zaufany certyfikat i skończyła się sielanka. Samo poprawienie URL'i w kodzie nie wystarczyło. Pytanie jest co więcej muszę zrobić.

0

No ale tożto w linku który podałem powyżej masz podane kilka linijek które wstawione tam gdzie tworzysz klienta webserwisu powinny rozwiązać problem (tzn to jest taki lipny przykład łykania każdego certyfikatu, ale chodzi o koncepcje ;]).

0

Witam

Niestety nadal mam błędy:

Exception in thread "pool-3-thread-1" javax.xml.ws.WebServiceException: {http://
tempuri.org/} xxxxxxx is not a valid port. Valid po
rts are:
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPortModel(Unknown
Source)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(Unknown Sour
ce)
at com.sun.xml.internal.ws.client.WSServiceDelegate.getPort(Unknown Sour
ce)
at javax.xml.ws.Service.getPort(Unknown Source)
at org.tempuri.NotificationService.getBasicHttpBindingINotificationServi
ce(NotificationService.java:132)
at multicast.PacketsSniffer.run(PacketsSniffer.java:99)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Chyba coś muszę zmienić jeszcze w endpoincie lub adnotacji. Tylko co?

Pozdrawiam

0

Ale ja się łączę do web serwisu (i jest widoczny), a nie wystawiam go. Robię tak:

@WebEndpoint(name = "BasicHttpBinding_ITest")
public INotificationService getBasicHttpBindingITest() {
return super.getPort(BasicHttpBindingINotificationService, ITest.class);
}

Przy próbie ponownego wygenerowania klienta z wsdla otrzymuje takli komunikat: "WSI-BP-1.0 R2718 violation: A wsdl:binding in a DESCRIPTION MUST have the same set of wsdl:operations as the wsdl:portType to which it refers. PutNotificationData not found in wsdl:binding". Co może być nie tak?

1 użytkowników online, w tym zalogowanych: 0, gości: 1