konto usunięte

Temat: Klient Web Service'u , zapis odebranych danych do bazy

Cześć, mam pytanie odnośnie dobrych praktyk w implementacji opisanego poniżej przypadku.

Istnieje Web Service z którego chcę zaciągnąć dane i zapisać je do swojej bazy danych.
Web service javowy, baza danych Oracle 11g.
Baza danych będzie przygotowana po analizie struktur jakie zwracane są w XML'u przez WS.

Czy istnieje jakieś rozwiązanie np Open Source, które wspierałoby takiego typu mechanizm?
Gdzieś obiło mi się o oczy JAXB, z xmla robi klasy javowe i dalej można coś z tym zrobić.

Ktoś z Was spotkał się z podobnym wymaganiem ?
Maciej Nowicki

Maciej Nowicki Java Developer

Temat: Klient Web Service'u , zapis odebranych danych do bazy

Dokładnie tak, JAXB zapewni ci marshalling/unmarshalling xmla z/na obiekty, z którymi zrobisz sobie co zechcesz.

W zasadzie mógłbyś - na upartego - dodać adnotacje Hibernate bezpośrednio w wygenerowanych przez wsdl2java klasach i zapisywać je do bazy. Ale to jest dalekie od dobrych praktyk, bo najmniejsza zmiana w definicji serwisu rozwali Ci model danych i strukturę bazy. Dlatego jak już będziesz miał te klasy, przygotuj na ich podstawie klasy modelu i w warstwie biznesowej przepisuj zawartość obiektów.
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: Klient Web Service'u , zapis odebranych danych do bazy

Nie wiem po co chcesz zamieniać XML na formę relacyjną, więc może nie na temat będzie, ale...

skoro to Oracle, to może wystarczy przechowywać zaciągnięte XMLe jako CLOBy i korzystać z takiego wynalazku jak XMLType? Masz możliwość konwersji w locie CLOBa do formy relacyjnej, XQuery i inne wynalazki.

Słowa kluczowe:
- DBMS_XMLSCHEMA
- XMLType
- XQuery
- schema based XMLType
- non-schema based XMLType
...

Pewnie sporo zależy od tego jak się czujesz w wybranych technologiach :-)

konto usunięte

Temat: Klient Web Service'u , zapis odebranych danych do bazy

DZIĘKI.

@Paweł Grzegorz Kwiatkowski w związku z tym, że przechowywać chcemy tylko pewien wycinek danych, kóre będą odpowiadać wymaganiom biznesowym , lepszym rozwiązaniem jest utworzenie własnych struktur bazodanowych i trzymanie w nich tych odebranych danych.

@Maciej Nowicki
Udało mi się znaleść taki przykład unmarshalling xml-> java o którym pisałeś: http://theopentutorials.com/tutorials/java/jaxb/jaxb-m...

Moje pytania:

Mamy taką linijkę:
Employee employee2 = JAXBXMLHandler.unmarshal(new File("employee.xml"));

"employee.xml" <-- jest to plik, który zostanie stworzony na podstawie odpowiedzi WS ? W tym przykładzie to zwykły istniejący plik xml.

Employee <-- klasa, która w tym przykładzie została napisana ręcznie w aplikacji. Czy da się wygenerować na podstawie samego WSDL'a wszystkie niezbędne klasy, a potem podczas unmarshallingu zwracać odpowiedni obiekt ? Czy to należałoby zrobić w ten sposób, że klasy tworzę ręcznie na podstawie struktury XMLa w odpowiedzi WS. Znalazłem gdzies przykłady generowania xml <-> java class , gdzie tym xml'em był plik XSD , problemem jest natomiast dostęp do samej definicji WS czyli WSDL
Maciej Nowicki

Maciej Nowicki Java Developer

Temat: Klient Web Service'u , zapis odebranych danych do bazy

Oczywiście, że się da. Skorzystaj np. z Apache CXF i wsdl2java: http://cxf.apache.org/docs/wsdl-to-java.html

Wtedy poleceniem:

"wsdl2java -client <nazwa-pliku-wsdl>" lub "wsdl2java -client <url-wsdl-uslugi>"

Wygenerujesz sobie kod klienta i wszystkie potrzebne klasy. Pozostanie Ci tylko skonfigurować klienta (polecam jako bean springa - http://cxf.apache.org/docs/writing-a-service-with-spri... i wszystko gotowe.

Następna dyskusja:

WSDL kreowanie Web Service




Wyślij zaproszenie do