2014-04-06 35 views
6

Próbowałem napisać usługę sieciową (JAX-WS) i przeszedłem kilka tutoriali od 2006 do 2013 te. Większość z nich dotyczy niektórych IDE. Te, które mówią o ręcznym tworzeniu/wdrażaniu usługi internetowej, są ze skryptami ant. Do tego wszystko jest w porządku.apt vs wsgen vs wsimport. Konfundowanie na temat czego używać i kiedy nie używać innego

W chwili, gdy sprawdzam skrypty mrówek, zaczyna się zamieszanie. niektóre stare samouczki używają zadania APT do kompilowania SEI, a następnie do generowania artefaktów używa się metody wsgen. nowsze używają tylko wsgen (chociaż APT jest zdefiniowany jako taskdef w skryptach ant). Ponadto, jak czytałem o dokumentacji JAVA 7, mówi, że nie musisz używać wsgen jako javac, sam robi wszystkie kompilacje i artefakty wymagają. dla WS jest generowany dynamicznie w środowisku wykonawczym.

Próbowałem użyć polecenia javac na SEI i wdrożyłem go na tomcat, ale nie działało.

Czy ktoś może wyjaśnić, jakie komendy muszę użyć w wydaniu JAVA SE 7, aby wdrożyć usługę internetową.

Ponadto chcę wiedzieć, co generuje każde polecenie i kiedy używać tych poleceń.

Zgodnie z moją wiedzą wsimport nie jest potrzebny do programowania i wdrażania, ale wystarczy zbudować klienta WS-client. Czy to jest poprawne? Jeśli nie, proszę podać mi wskazówki do wyjaśnienia mojego zrozumienia.

Dzięki z góry

Także jeśli jestem powtórzyć moje ja wtedy przykro jak jestem nowy na StackOverflow i nie bardzo znane z tego. :)

Odpowiedz

9

Aby utworzyć usługę WWW przy użyciu specyfikacji Java-WS, potrzebujesz kilku artefaktów. Celem "apt", "wsgen" i "wsimport" jest zautomatyzowanie tej procedury.

Istnieją dwa sposoby utworzenia usługi sieci Web: od dołu (pierwszy kod, a następnie WSDL) i od góry do dołu (pierwszy kod WSDL, a następnie kod).

oddolne podejście:

  • apt: Wykorzystuje kod źródłowy, generuje WSDL (i artefaktów)
  • wsgen: Używa skompilowany kod, generuje WSDL (i artefaktów)

Top-Down

  • wsimport: Używa WSDL, generuje kod Java dla implementacji usługi/klienta.

Zaletą używania apt jest to, że mając kod źródłowy, skrypt będzie mógł uzyskać nazwy parametrów i wykorzystać je w WSDL.

Web Service Deployment

Do produkcji będzie trzeba kontenerze WWW, który może być odpowiedzialny za bezpieczeństwo, scalablity i zarządzania zasobami, jednak dla celów testowych można wdrożyć swoje usługi internetowe za pomocą wbudowanego serwer wWW na Java SE wykonując:

@WebService public class MyService{ 

    public static void main(String args[]){ 
     MyService service = new MyService(); 
     String url = "service/"; 
     Endpoint ep = new Endpoint(url, service); 
    } 


    @WebMethod 
    public String getInfo(){ 
     return "Service info"; 
    } 
} 

Ten kawałek kodu, który generuje WSDL i publikują usługę w swoim localhost/usługi.

+0

Dzięki ... To daje mi podstawowy pomysł na napisanie usługi internetowej zgodnej ze specyfikacją JAX-WS. Teraz w.r.t apt i wsgen, czy muszę użyć dowolnego z nich jawnie/?? bcz mogłem wdrożyć klasę Myservice bez żadnego z nich i działało dobrze ... –

+0

Nie, nie robisz tego. "Ten fragment kodu wygenerowałby WSDL i opublikowałby usługę w twoim localhost/usłudze". Klasa Endpoint uruchomi program wsgen. Jeśli uważasz, że ta odpowiedź jest pomocna, wybierz "odpowiedź jest przydatna" lub jeszcze lepiej "przyjmij" odpowiedź. – FewDexter