2012-01-24 12 views
5

Rozwijamy platformę MDA, która obsługuje usługi WWW. Użytkownik może dostarczyć WSDL w środowisku wykonawczym i wygenerować wszystkie artefakty (interfejs usługi i implementacja dla serwera oraz konsument dla klienta), używając wewnętrznie JAX-WS.Sprawdzanie czasu wykonywania WSDL za pomocą JAX-WS

Chcemy dodać sprawdzanie poprawności do dokumentu WSDL dostarczonego przez użytkownika. Teraz użytkownik musi sprawdzić to za pomocą zewnętrznego narzędzia, takiego jak Oxygen, XMLSpy lub narzędzie internetowe, ale chcemy to dodać jako część naszego systemu. Dobrą funkcją będzie również sprawdzanie poprawności schematu, w tym osadzone schematy WSDL.

W JAX-WS (RI) jest wsparcie dla sprawdzania poprawności schematu w czasie pracy (przy użyciu adnotacji @SchemaValidation), ale nie znalazłem żadnego wsparcia dla walidacji WSDL.

Próbowaliśmy zintegrować Eclipse's WSDL validator, ale wygląda na to, że nie działa dla nas.

Czy jest jakiś sposób zrobienia tego z JAX-WS? Jeśli nie, czy istnieją inne ramy weryfikacji, które możemy zintegrować?

Dzięki

Odpowiedz

2

Jest trochę zamieszania w swoim pytaniu, że muszę najpierw wyjaśnić.

Wygląda na to, że chcesz sprawdzić poprawność WSDL (składnia + WS-I) i XSD, osadzone lub odniesione zewnętrznie przez WSDL. Z drugiej strony wprowadzasz funkcję @SchemaValidation, która jest używana do sprawdzania poprawności dokumentów instancji.

W tradycyjnym podejściu można powiedzieć, że chcemy przynajmniej zweryfikować artefakty czasu projektowania (WSDL + XSD).

W tym scenariuszu wtedy, polecam następujące:

WSDL: do testowania zgodności WS-I, proszę spojrzeć na test tools section of the WS-I site. Nie jest jasne, w jaki sposób posiadane przez nich licencje z ich narzędziami testowymi będą działać z twoją, ale przynajmniej powinny dać ci wyobrażenie o tym, co by wyglądało, gdyby to nie działało dla ciebie.

AKTUALIZACJA: Dodatkowe zasoby walidacyjne WSDL: - Eclipse oparte, w jaki sposób korzystać poza środowiskiem Eclipse.

XSD: jeśli naprawdę potrzebujesz osobnego sprawdzania poprawności plików XSD, rzeczy mogą być trudne dla produktu o jakości produkcji; WSDL4J nie jest tu zbyt pomocne i uważam, że XSOM jest drogą do tego rodzaju pracy. Musisz wyodrębnić zawartość z sekcji typów jako jeden lub więcej plików XSD (może to być więcej niż jeden plik XSD, spójrz na kilka przykładów, Microsoft SharePoint WSDL przychodzą mi na myśl jako dobry przypadek testowy), przypisz uri podstawową dla każdy wyodrębniony XSD, który pasuje do lokalizacji WSDLs, a następnie użyj XSOM do sprawdzenia poprawności tych.

Od momentu wygenerowania klienta najprawdopodobniej nie dotyczy to sprawdzania poprawności, powiedzmy nagłówków HTTP (SOAP 1.1/HTTP, SOAPAction, jeśli jest zgodna z definicją operacji WSDL). Jeśli w końcu zainteresujesz się tym, co nazywam sprawdzaniem poprawności w czasie wykonywania, poleciłbym inny układ w twoim podejściu (tzn. Nie będę polegał na @SchemaValidation, ale raczej zrobię to za pomocą przejrzystej i ogólnej usługi proxy).

+0

Wspomniałem o @SchemaValidation tylko po to, aby uniknąć nieporozumień pomiędzy sprawdzaniem poprawności instancji i schematu/wsdl. Pytałem, jak powiedziałeś, o walidację artefaktów w czasie projektowania. O stronie WS-I, rzuciłem okiem na narzędzia i to może zadziałać, ale nie jestem pewien co do licencji. O XSD, już oddzielamy te od WSDL i obsługujemy wiele osadzonych schematów. Zbadam, jak sprawdzić te z XSOM. Co do twojego ostatniego punktu, generujemy również serwery i sprawdzanie poprawności tych nagłówków może być interesujące. Dzięki za odpowiedź! – Denian

+1

Z jakiegoś powodu i po krótkim przejrzeniu pliku licencji wydaje mi się, że stos narzędzi WS-I nie jest przyjazny dla zamkniętych lub komercyjnych narzędzi. Chciałem to podkreślić, aby upewnić się, że spojrzysz również na te aspekty. W przypadku sprawdzania poprawności nagłówków, widziałem przypadki, w których klient przesyła prawidłowe ciało Soap bez poprawnej SOAPAction. Również dziękuję za wyjaśnienie, pomyślałem o @SchemaValidation. –

+0

Tak, masz rację: http://netzooid.com/blog/2006/11/26/is-ws-i-open-look-at-their-test-license/ Myślę, że będziemy musieli znaleźć inne rozwiązanie lub framework. O sprawdzaniu poprawności XSD, próbowałem z XSOMParser tworzenie ErrorHandler i działa dobrze. Myślę, że powinienem zostawić to pytanie otwarte, ponieważ głównym problemem była walidacja WSDL, ale w każdym razie wielkie dzięki za twoje odpowiedzi. – Denian