JavaRush /Java Blog /Random-TK /Web hyzmatlary. Stepdim 2. Müşderi ýazmagy nädip aňsatlaş...
eGarmin
Dereje

Web hyzmatlary. Stepdim 2. Müşderi ýazmagy nädip aňsatlaşdyrmaly?

Toparda çap edildi
Bu çalt bellikde, öňki ädimde ýazan web hyzmat müşderi kodymyza täzeden göz aýlamak isleýärin . Bu ýagdaýda, IDEA-yňyzyň açykdygyny we 1-nji ädimden taslama göz öňünde tutýaryn. Web taslamamyz bu taslamada başlamaly:
package ru.javarush.client;

// нужно, чтобы получить wsdl описание и через него
// дотянуться до самого веб-сервиса
import java.net.URL;
// такой эксепшн возникнет при работе с an objectом URL
import java.net.MalformedURLException;

// классы, чтобы пропарсить xml-ку c wsdl описанием
// и дотянуться до тега service в нем
import javax.xml.namespace.QName;
import javax.xml.ws.Service;

// интерфейс нашего веб-сервиса (нам больше и нужно)
import ru.javarush.ws.HelloWebService;

public class HelloWebServiceClient {
    public static void main(String[] args) throws MalformedURLException {
        // создаем ссылку на wsdl описание
        URL url = new URL("http://localhost:1986/wss/hello?wsdl");

        // Параметры следующего конструктора смотрим в самом первом теге WSDL описания - definitions
        // 1-ый аргумент смотрим в атрибуте targetNamespace
        // 2-ой аргумент смотрим в атрибуте name
        QName qname = new QName("http://ws.javarush.ru/", "HelloWebServiceImplService");

        // Теперь мы можем дотянуться до тега service в wsdl описании,
        Service service = Service.create(url, qname);
        // а далее и до вложенного в него тега port, чтобы
        // получить ссылку на удаленный от нас an object веб-сервиса
        HelloWebService hello = service.getPort(HelloWebService.class);

        // Ура! Теперь можно вызывать удаленный метод
        System.out.println(hello.getHelloString("JavaRush"));
    }
}
Öňünden näçeräk bilmelidigimize üns beriň. Wsdl düşündirişine girmegiň zerurdygyna goşmaça (bu bolmasa, bagyşlaň, ýol ýok):
URL url = new URL("http://localhost:1986/wss/hello?wsdl");
bu xml faýly özüňiz açmaly we bellige seretmeli definitions, ondaky häsiýetlere targetNamespacewe namekonstruktora jaň etmeli QName:
QName qname = new QName("http://ws.javarush.ru/", "HelloWebServiceImplService");
soň bellige el bilen birikmeli service:
Service service = Service.create(url, qname);
we bellikde port:
HelloWebService hello = service.getPort(HelloWebService.class);
we şondan soň uzakdaky usula jaň edip bileris:
hello.getHelloString("JavaRush")
Sorag: ata-babalarymyzyň söweş meýdanynda ölenliginiň sebäbini, indi hemmesini el bilen edýärismi? Bu hatda web hyzmatymyz däl-de, başga biriniň hyzmaty. Şonda bu proses hasam ýakymsyz bolar. XML formaty, adamlar däl-de, maşynlar tarapyndan okamak üçin döredildi. Şonuň üçin geliň, enjamy hapa işler bilen meşgullanalyň we amaldan lezzet alalyň. Munuň üçin aýratyn bir zat etmeli däl, sebäbi ... Java-da JDK diýilýän iň halaýan SDK, wsimport atly ýörite kömekçi enjamy öz içine alýar . Firstöne ilki bilen ilki zatlar ... Ilki bilen, menýudan Faýl> Täze taslama ... saýlap , taslama HelloWS adyny berip IDEA-da täze taslama döredeliň . Täze döredilen taslamany nireden açmaly diýip soranlarynda, Täze penjire jogap bermeli . täze penjirede, sebäbi öňki taslamanyň açyk bolmagynyň möhümdigini ýene bir gezek bellärin, sebäbi 1-nji ädimden web taslamamyzyň şol taslamada işleýändigini ýadymyzdan çykarmaýarys. Elbetde, ony diňe Windows konsolynyň üsti bilen açyp bilersiňiz, ýöne men muny halamok. Täze taslamadan View> Tool Windows> Terminal ýa-da diňe Alt + F12 basyp, konsoly açyň . Indi taslamanyň düýbünde, src bukjasyna girmeli , şonuň üçin aşakdaky buýrugy konsola girizýäris: Indi wsimportcd src kömekçi programmasyny ulanmagyň wagty geldi . Aşakdaky ýörelgäniň üstünde işleýär: WSDL düşündirişini berýäris we jogap hökmünde web hyzmatyna girmek üçin zerur bolan ähli funksiýalary öz içine alýan stub faýllaryny (klasslar diýilýär) döredýär . Bu synplar bukjada ýerleşdiriler . Bukjanyň adynyň nireden gelýändigini sorasaňyz, jogap: bukjanyň ady WSDL beýanyndan tersine nyşan at giňişligi. WSDL- den bellikdäki häsiýeti ýadyňyzda saklaň . Ol ýerde aşakdaky ýazgylar bardy . Bu sahypanyň salgysy däl, at giňişliklerini xml-de suratlandyrmak adaty zat, eger ters tertipde galanlary taşlasak we giňeltsek, paketimiziň adyny alarys. Şeýlelik bilen, peýdaly enjamy işledeliň: Işlemegi üçin oňa barýan ýol PATH gurşaw üýtgeýjisinde görkezilmelidir , ýa-da oňa doly ýoly ulanyp bilersiňiz. Meniň üçin C: \ Program Files \ Java \ jdk1.8.0_31 \ bin bukjasynda ýerleşýär . Siziň etmeli zadyňyz, WSDL faýlyny baglanyşyk arkaly uzakdan elýeterli saklamak düwmesiniň üsti bilen geçirmekdir , elbetde, web hyzmatyny ýapmadyk bolsak. Bu sapak sapaklary näme? Olardan diňe ikisi bar. Olaryň biriStubru.javarush.wstargetNamespacedefinitionshttp:// ws.javarush.ru/http://wsimport -keep http://localhost:1986/wss/hello?wsdlHelloWebServiceAslynda 1-nji ädimde el bilen döreden şol bir web hyzmat interfeýsi. Tapawut gaty az we öňden gören belliklerimiziň birneme başgaça ulanylýandygyna we goşmaça goşmaça düşündirişleriň ulanylmagyna esaslanýar. Hiç zady bilmeýändigimi aýtdym, ýöne hemme zat öňem olar üçin işleýärdi, şonuň üçin hökmany däl. Ikinji synp HelloWebServiceImplService, synpdan miras galan stub Service. ServiceMüşderimizde synp bilen eýýäm duşuşdyk. Bu synpyň koduny bermerin, sebäbi ... Onuň setirleriniň hemmesini düşündirmäge taýyn däl, ýöne synpyň düýp manysy, web hyzmatyna birikmek üçin müşderide el bilen ýazan zatlarymyzyň hemmesiniň bu synpda awtomatiki usulda döredilendigi we bize gerek usullaryndan birine jaň ediň we hemme zat açyk bolar. Şonuň üçin geliň, bu synplary ulanyp, müşderimiziň koduny täze taslamada täzeden ýazalyň we koduň has gysga bolandygyna göz ýetireliň. Ilki bilen, täze taslamanyň src bukjasynda , bir paket döredeliň ru.javarush.clientwe onda HelloWebServiceClientusuly bolan synp main:
package ru.javarush.client;

// подключаем классы-заглушки
import ru.javarush.ws.*;

public class HelloWebServiceClient {
    public static void main(String[] args) {
        // подключаемся к тегу service в wsdl описании
        HelloWebServiceImplService helloService = new HelloWebServiceImplService();
        // получив информацию из тега service подключаемся к самому веб-сервису
        HelloWebService hello = helloService.getHelloWebServiceImplPort();

        // обращаемся к веб-сервису и выводим результат в консоль
        System.out.println( hello.getHelloString("JavaRush Community") );
    }
}
Kody derňemek başlangyç we teswirlerde beýan edenlerim ýeterlik. Müşderini işe girizenimizden soň, setiri görmelidiris: Hello, JavaRush Community!Şol bir wagtyň özünde, 1-nji ädimdäki taslamanyň müşderisi işlemegini we onda ýazan tekstimizi görkezmegini dowam etdirer, ýagny: Hello, JavaRush! Şu wagt, belki, muny gutaryp bileris Stepdim, sebäbi maksadyna ýetildi. Web hyzmatynyň WSDL beýany bar bolsa , jdkstub bu web hyzmaty üçin müşderi ýazmagy ýönekeýleşdirmek üçin stub synplaryny awtomatiki usulda üpjün etmäge taýýardygyna düşündik. Meniň pikirimçe, başga biriniň web hyzmatyny synap görmek we WSDL beýanyna göz aýlamak islemeýän wagtyňyz bu gaty peýdaly aýratynlyk. Geljege göz aýlamak Web hyzmatlary baradaky indiki makalada, web hyzmatyny Tomcat servlet konteýnerine we dürli amaly serwerlere nädip ýerleşdirip boljakdygy baradaky pikirleri beýan etmek isleýärin, şonuň üçin web hyzmatyny işletmegiň zerurlygy ýok. ilkinji 2 ädimde edişimiz ýaly aýratyn programma. Thatöne ondan ozal serwetleriň, serwet konteýnerleriniň nämedigi we amaly serwerlerden we adaty webden tapawudy barada gysgaça pikir ýöretmek has gowy bolardy ... Mundan başga-da, programma serwerlerine gysgaça syn bermeli bolarys , meniň pikirimçe, biziň ünsümizi çekmelidir.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION