Java memanggil WebService. Ketika Anda pertama kali menghubungi, Anda akan berpikir itu adalah mimpi buruk, terutama tanpa implementasi standar terpadu. Dibandingkan dengan implementasi layanan web yang dapat diselesaikan dalam beberapa langkah .NET, sangat menyedihkan melihat implementasi Java. Tetapi bahkan jika kita sedih, kita masih harus menyelesaikannya. Java juga memiliki banyak implementasi yang baik, seperti Xfire, Jersey, CXF. Di sini kita akan melihat implementasi XFire bersama -sama.
1) Pertama -tama, tentu saja saya harus keluar dari tas, dan orang biasa ini mengetahuinya. http://xfire.codehaus.org/download Anda dapat pergi ke sini, Anda dapat pergi semua atau distribusi. Tapi lebih baik memberikan banyak masalah aneh untuk kehilangan kepercayaan diri.
Apa yang harus saya lakukan jika saya melepas tas? Masukkan ke dalam proyek. Tampaknya omong kosong, tetapi banyak orang tidak tahu harus berbuat apa.
Untuk membangun proyek baru, saya membandingkannya dengan XFirewebebservice, yang tentu saja merupakan proyek web di sini.
Saya telah meletakkan semua paketnya di sini. Lagi pula, ketika kita menulis contoh, tidak perlu pilih -pilih. Klik dengan santai. Jika Anda ingin melihat informasi pengecualian, Anda dapat menambahkannya perlahan. Sangat mudah untuk menghilangkan kesalahan di masa depan, tetapi kami tidak akan melakukannya di sini. Lagi pula, tidak ada yang buruk tentang kurangnya pengecualian apa pun, dan Anda dapat menghilangkannya sendiri.
2) Mari kita pahami perbedaan antara XFIRE dan kerangka kerja webservice lainnya. Perbedaan terbesar adalah bahwa ia membutuhkan antarmuka, dan jika Anda perlu menggunakan XFIRE untuk memanggil layanan web yang sesuai, Anda harus mengetahui definisi antarmuka. Saya merasa ada sedikit batasan di sini. Namun terlepas dari ini, cukup nyaman untuk menelepon layanan web, seperti halnya memanggil metode lokal. Mari kita lihat contoh secara langsung:
Pertama -tama, antarmuka terpenting:
antarmuka publik IReaderService {pembaca publik getReader (nama string, kata sandi string); Daftar Publik <READER> getReaders (); } Ada antarmuka, tentu saja harus ada kelas implementasi, jika tidak antarmuka tidak akan memiliki arti. Public Class ReaderService mengimplementasikan IReaderService {pembaca publik getReader (nama string, kata sandi string) {return baru pembaca (nama, kata sandi); } Daftar Publik <READER> getReaders () {Daftar <Reader> readerList = ArrayList baru <READER> (); readerlist.add (pembaca baru ("shun1", "123")); readerlist.add (pembaca baru ("shun2", "123")); Return ReaderList; }} Lihat juga kelas Javabean dan pembaca:
pembaca kelas publik {private static final long serialversionuid = 1l; nama string pribadi; kata sandi string pribadi; pembaca publik () {} pembaca publik (nama string, kata sandi string) {this.name = name; this.password = kata sandi; } // Get/atur Metode menghilangkan string publik toString () {return "name:"+name+", kata sandi:"+kata sandi; }}Perhatikan bahwa kelas pembaca kami di sini mengimplementasikan antarmuka yang dapat diserialisasi, mengapa? Di sini, pertama -tama, kita perlu memahami prinsip layanan web. Untuk Java, jika kita perlu mengunggah objek di internet, banyak orang tentu saja akan memikirkan serialisasi. Ngomong -ngomong, ini adalah serialisasi, karena kita perlu melewati pembaca sebagai parameter. Ini perlu diimplementasikan secara paksa di versi sebelumnya, jika tidak kesalahan akan dilaporkan. Namun, versi terbaru (pada kenyataannya, yang terbaru juga dari tahun 2007, karena Xfire telah berhenti berkembang dan telah digabungkan menjadi proyek CXF oleh Apache. Kami akan membicarakan hal ini nanti) tidak lagi diperlukan. Adapun cara mengimplementasikannya, kami tidak akan menyelidikinya secara mendalam di sini untuk saat ini, karena telah digabungkan menjadi CXF. Jika kita ingin belajar secara mendalam, akan lebih baik belajar CXF.
3) Setelah kami menyelesaikan antarmuka di atas dan tulisan JavaBean, banyak orang akan bertanya, saya melihat bahwa banyak layanan web akan memiliki file WSDL, jadi bagaimana Anda mendapatkannya? Sebelum membicarakan hal ini, mari kita bahas apa itu WSDL. Mungkin banyak perusahaan menyediakan antarmuka yang hanya alamat HTTP, mengembalikan format XML, dan begitu juga milik kita. Ini memiliki satu keunggulan dan satu kerugian. Keuntungannya adalah pengembangan kami kurang sulit, sementara kerugiannya adalah bahwa kami perlu memberi pengguna banyak file penjelasan. Apa arti tag XML yang dikembalikan? Ini bukan apa -apa, tapi itu hanya menjengkelkan. Sedangkan untuk layanan web, kerugiannya adalah bahwa kami telah mengembangkan sedikit lebih banyak hal, dan keuntungannya adalah bahwa kami tidak perlu menulis begitu banyak file penjelasan, karena ada penjelasan terpadu yang disebut WSDL. Ini adalah dokumen penjelasan dari layanan web, yang disatukan dan sama tidak peduli bahasa apa, jadi tidak ada masalah yang tidak ada yang bisa mengerti.
Dan di sini, ketika kami menggunakan XFIRE, itu dapat membantu kami menghasilkan file WSDL.
Masalahnya adalah bagaimana menggunakannya, ini sebenarnya sederhana. Kami membuat meta-inf folder baru di direktori src, dan kemudian membuat folder xfire di dalamnya, dan membuat file services.xml. Struktur selanjutnya adalah sebagai berikut:
Beberapa orang mungkin bertanya mengapa kita perlu membangunnya di direktori SRC. Faktanya, ini bukan build yang ditentukan di sini, tetapi karena kita perlu meminta alat pengembangan untuk membantu kita menggunakan file -file ini sendiri, jadi jika kita meletakkannya di sini, Eclipse dapat membantu kita menyebarkannya ke Tomcat atau wadah lain sendiri. Perhatikan bahwa level folder tempat file ini berada ditetapkan dan tidak dapat dimodifikasi.
Mari kita lihat layanan.xml secara langsung:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xfire.codehaus.org/config/1.0"> <service> <!-- The name of the webserviceq, you need to specify this when calling --> <name>readerService</name> <!-- This is usually the website address of your own company, and it doesn't make much sense -> <namespace> http: // test/helloService </namespace> <!-kelas antarmuka-> <serviceClass> com.xfire.servlet.ireaderService </sviceClass> <!-kelas implementasi-<plementationclass> com.xfire.servlet.readerService-> <pimplementasi <plementClass> com.xfire.servlet.readerservice
Umumnya tidak apa -apa untuk melihat komentarnya.
4) Banyak orang berpikir bahwa ini sudah cukup. Tidak, itu belum berhasil. Jika Anda menentukan ini, bagaimana orang lain bisa mengunjunginya? Cara meneruskan permintaan yang sesuai untuk XFIRE dan membiarkannya memprosesnya. Kita perlu memodifikasi web.xml lagi.
Setelah modifikasi, berikut ini adalah:
<? Xml Version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xmlns =" http://java.com/xmlns = "http://java.com/xmlns = xmlns: web = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <servlet-name>XFireServlet</servlet-name> <servlet-class> org.codehaus.xfire.transport.http.xfireconfigurableServlet </servlet-class> </servlet> <servlet-Mapping> <servlet-name> xfireServlet </servlet-name> <rerl-pola>/service/service/*</url-pola> </servlet-name>
Bahkan, itu hanya menambahkan servlet dan pemetaan yang sesuai. Selanjutnya, kami langsung memasukkannya di browser:
http: // localhost: 8080/xfirewebebservice/services/readerservice? wsdl
Kita bisa melihat:
Apa yang ditampilkan di sini adalah WSDL, yang akan menampilkan metode yang kami tentukan dan jenisnya dikembalikan. Ada penjelasan tentang WSDL nanti.
5) Setelah menyelesaikan empat langkah di atas, kami telah menyelesaikan penyebaran layanan web. Orang lain dapat menghubungi layanan web yang sesuai untuk mengakses metode kami. Mari kita gunakan klien yang disediakan oleh XFire untuk mengakses layanan situs web yang baru saja kami publikasikan:
Public Class ReaderClient {public static void main (String [] args) {// Berikut ini adalah untuk membuat layanan, dan kelas antarmuka perlu diteruskan, karena kita harus memanggil layanan metode antarmuka yang sesuai srcmodel = new ObjectServiceFactory (). Buat (ireaderService.class); // Pabrik Agen, di sini adalah untuk membuat kelas antarmuka yang sesuai nanti XFireProxyFactory factory = new XFireProxyFactory (xFireFactory.NewInstance (). GetXfire ()); // Alamat layanan web, tidak ada WSDL perlu ditambahkan string readerserviceUrl = "http: // localhost: 8080/xFirewebebservice/services/readerservice"; Coba {// Gunakan pabrik untuk mengembalikan kelas antarmuka yang sesuai IREADERService Readerservice = (IReaderService) factory.create (srcmodel, readerserviceurl); Pembaca pembaca = readerservice.getreader ("shun", "123"); System.out.println (pembaca); } catch (MalFormedurlexception e) {e.printstacktrace (); }}} Dengan cara ini, kita melihat bahwa outputnya adalah:
Analisis Struktur File WSDL
WSDL (Layanan Web Deskripsi Bahasa, Bahasa Deskripsi Layanan Web) adalah aplikasi XML yang mendefinisikan deskripsi layanan web sebagai satu set titik akses layanan di mana klien dapat mengakses layanan yang berisi informasi dokumen atau panggilan prosedur (mirip dengan panggilan prosedur jarak jauh). WSDL pertama -tama mengabstraksi operasi akses dan pesan permintaan/respons yang digunakan selama akses, dan kemudian mengikatnya ke protokol transportasi spesifik dan format pesan untuk akhirnya menentukan titik akses layanan spesifik yang digunakan. Titik akses layanan untuk penyebaran spesifik terkait menjadi layanan web abstrak melalui kombinasi. Artikel ini akan menjelaskan struktur dokumen WSDL secara rinci dan menganalisis peran masing -masing elemen.
1: Definisi WSDL
WSDL adalah dokumen yang digunakan untuk menggambarkan layanan web secara akurat, dan dokumen WSDL adalah dokumen XML yang mengikuti pola WSDL XML. Dokumen WSDL mendefinisikan layanan web sebagai kumpulan titik akses atau port layanan. Di WSDL, karena definisi abstrak titik akses layanan dan pesan telah dipisahkan dari penyebaran layanan tertentu atau pengikatan format data, definisi abstrak dapat digunakan lagi: pesan mengacu pada deskripsi abstrak dari data yang dipertukarkan; dan tipe port mengacu pada koleksi operasi abstrak. Protokol spesifik dan spesifikasi format data untuk jenis port tertentu merupakan ikatan yang dapat digunakan kembali. Mengaitkan alamat akses web dengan ikatan yang dapat digunakan kembali, port dapat ditentukan, dan kumpulan port didefinisikan sebagai layanan.
Dokumen WSDL biasanya berisi 7 elemen penting, yaitu jenis, impor, pesan, porttype, operasi, pengikatan, dan elemen layanan. Elemen -elemen ini bersarang dalam elemen definisi, yang merupakan elemen root dari dokumen WSDL. Bagian selanjutnya dari artikel ini akan memperkenalkan struktur dasar WSDL secara rinci.
2: Struktur Dasar WSDL-Tinjauan
Seperti yang dijelaskan pada akhir bagian pertama, dokumen WSDL dasar berisi 7 elemen penting. Berikut ini akan memperkenalkan elemen -elemen ini dan fungsinya.
Dokumen WSDL menggunakan elemen -elemen berikut dalam definisi layanan web:
・ Jenis - Wadah yang ditentukan oleh tipe data, yang menggunakan sistem tipe tertentu (biasanya sistem tipe dalam skema XML).
・ Pesan - Jenis abstrak Definisi struktur data untuk pesan komunikasi. Gunakan jenis yang ditentukan oleh jenis untuk menentukan struktur data dari seluruh pesan.
・ Operasi - Deskripsi abstrak operasi yang didukung dalam Layanan. Secara umum, satu operasi menjelaskan pasangan pesan permintaan/respons yang mengakses entri.
・ PortType - Kumpulan operasi abstrak yang didukung oleh jenis titik masuk akses tertentu, yang dapat didukung oleh satu atau lebih titik akses layanan.
・ Ikatan - Ikatan protokol spesifik dan spesifikasi format data untuk jenis port tertentu.
・ Port - Didefinisikan sebagai titik akses layanan tunggal yang menggabungkan pengikatan format protokol/data dengan alamat akses web tertentu.
・ Layanan- Kumpulan titik akses layanan terkait.
Skema XML WSDL dapat disebut sebagai URL berikut: http://schemas.xmlsoap.org/wsdl/
Tiga: Struktur Dasar WSDL-Deskripsi Detail
Bagian ini akan menjelaskan secara rinci peran setiap elemen dokumen WSDL melalui contoh. Contoh berikut adalah konten dari dokumen WSDL sederhana. Untuk generasi dokumen ini, silakan merujuk ke artikel saya yang lain: Contoh Pengembangan XFire-Helloworld.
Dokumen WSDL layanan web sederhana yang mendukung operasi unik yang disebut Sayhello, yang diimplementasikan dengan menjalankan protokol SOAP di HTTP. Permintaan menerima nama string dan mengembalikan string sederhana setelah diproses. Dokumasinya adalah sebagai berikut:
<? Xml Version = "1.0" encoding = "UTF-8"?> <WSDL: Definisi targetNeNespace = "http: //com.liuxiang.xfiredemo/helloservice" xmlns: tns = "http: //com.com.liuxiang.xfiredemo/ xmlns: wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns: soap12 = "http://www.w3.org/2003/05/soap-envelope" xmlns: xsd = "http://www.w3.org/2001/xmlschema" xmlns: soapenc11 = "http://schemas.xmlsoap.org/soap/encoding/" xmlns: soapenc12 = "http://www.w3.org/2003/05/soap-encoding" xmlns: soap11 = "http://schemas.xmlsoap.org/soap/envelope/" xmlns: wsdl = "http://schemas.xmlsoap.org/wsdl/"> <wsdl: type> <xsd: schema xmlns: xsd = "http://www.w3.org/2001/xmlschema" http: targetNeTespace = "http: //com.liuxiang.xfiredemo/helloService"> <xsd: name elemen = "sayhello"> <xsd: complextype> <xsd: quent> <xsd: elemen maxoccurs = "1" MINOCCURS = "1" name = "name =" name = "name =" name = "a name =" a name = "name =" name = "name =" name = "name =" name = "name =" name = "name =" name = "name =" name = "name =" 1 " </xsd: Sequence> </xsd: complextype> </xsd: element> <xsd: elemen nama = "sayhelloresponse"> <xsd: complextype> <xsd: quents> <xsd: elemen maxoccurs = "1" MinocCurs = "1" name = "out" noillable "noillable" noillable "noillable" noillable "noillable" noillable " </xsd: complextype> </xsd: element> </xsd: schema> </wsdl: type> <wsdl: name pesan = "sayhelloresponse"> <wsdl: name bagian = "Parameter" element = "tns: wseadhelloResponse"//</wsdl: pesan = "wseLll: wse (wsQUll: wspesponse"/wsdl. <wsdl: bagian nama = "parameter" element = "tns: sayhello" /> </wsdl: pesan> <wsdl: porttype name = "helloServicePortType"> <wsdl: name = "outpput"> <wsdl: input name = "wayhellorequest" outpput = "output:" wsdl: input name = "sayhellorequest" output = "output" output: wsdl: input name = "sayhellorequest" outpput = "Sayput:" wsdl: input name = "sayhellorequest" output = "Sayput" TEPUT: TEPUT: WSDL: INPUT NAME = "SayHelloreQuest" name="sayHelloResponse" message="tns:sayHelloResponse" /> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloServiceHttpBinding" type="tns:HelloServicePortType"> <wsdlsoap:binding style="document" Transport = "http://schemas.xmlsoap.org/soap/http"/> <wsdlsoap: nama operasi = "sayhello"> <wsdlsoap: operasi soapaction = ""/> <wsdlsoap: literon/""/"/<wsdlsoap: body User =" literloap/wella/""/" <wsdlsoap: body use = "literal"/> </wsdl: output> </wsdl: operasi> </wsdl: binding> <wsdl: name service = "helloService"> <wsdl: helloService "<wsloPHICH" <WSDOP: HelloService " Lokasi = "http: // localhost: 8080/xfire/services/helloService"/> </wsdl: port> </wsdl: service> </wsdl: definisi>
Elemen tipe menggunakan bahasa skema XML untuk mendeklarasikan tipe dan elemen data yang kompleks yang digunakan di tempat lain dalam dokumen WSDL;
Elemen impor mirip dengan elemen impor dalam dokumen skema XML dan digunakan untuk mengimpor definisi WSDL dari dokumen WSDL lainnya;
Elemen pesan menjelaskan muatan pesan menggunakan tipe bawaan, tipe kompleks, atau elemen skema XML yang ditentukan dalam elemen jenis dokumen WSDL atau didefinisikan dalam dokumen WSDL eksternal yang dirujuk oleh elemen impor;
Elemen porttype dan elemen operasi menjelaskan antarmuka layanan web dan menentukan metodenya. Elemen porttype dan elemen operasi mirip dengan deklarasi metode yang ditentukan dalam antarmuka Java. Elemen Operasi menggunakan satu atau lebih jenis pesan untuk menentukan muatan input dan outputnya;
Elemen pengikatan menetapkan elemen porttype dan elemen operasi ke protokol khusus dan gaya pengkodean;
Elemen layanan bertanggung jawab untuk menetapkan alamat internet ke ikatan tertentu;
1. Elemen Definisi
Elemen root dari semua dokumen WSDL adalah elemen definisi. Elemen ini merangkum seluruh dokumen sambil memberikan dokumen WSDL melalui namanya. Elemen ini tidak memiliki fungsi lain kecuali menyediakan namespace, sehingga tidak akan dijelaskan secara rinci.
Kode berikut adalah struktur elemen definisi:
<wsdl: definisi targetnamespace = "http: //com.liuxiang.xfiredemo/helloService" xmlns: tns = "http: //com.liuxiang.xfiredemo/helloService" xmlns: wsdlsoap = "http://schemas.xmlsoap.org/wsdl/soap/" xmlns: soap12 = "http://www.w3.org/2003/05/soap-envelope" xmlns: xsd = "http://www.w3.org/2001/xmlschema" xmlns: soapenc11 = "http://schemas.xmlsoap.org/soap/encoding/" xmlns: soapenc12 = "http://www.w3.org/2003/05/soap-encoding" xmlns: soap11 = "http://schemas.xmlsoap.org/soap/envelope/" xmlns: wsdl = "http://schemas.xmlsoap.org/wsdl/"> </wsdl: definisi>
2. Jenis elemen
WSDL mengadopsi tipe bawaan skema W3C XML sebagai sistem tipe dasarnya. Elemen tipe digunakan sebagai wadah untuk menentukan berbagai tipe data yang tidak dijelaskan dalam tipe bawaan skema XML. Saat mendeklarasikan muatan bagian pesan, definisi pesan menggunakan tipe dan elemen data yang ditentukan dalam elemen tipe. Jenis definisi dalam dokumen WSDL ini:
<WSD: TYPET> <xsd: skema xmlns: xsd = "http://www.w3.org/2001/xmlschema" attributeFormDefault = "elementFormaLeFault =" kualifikasi "targetnespace =" http: //com.lixiuxi. name="sayHello"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="1" minOccurs="1" name="name" nillable="true" type="xsd:string" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="sayHelloResponse"> <xsd: complextype> <xsd: sequence> <xsd: elemen maxoccurs = "1" minoccurs = "1" name = "out" nillable = "true" type = "xsd: string"/> </xsd: sequence> </xsd: complextype> </xsd: elemen> </quence> </xsd: complextype> </xsd: element> </sd
Di atas adalah bagian definisi data, yang mendefinisikan dua elemen, satu adalah Sayhello dan yang lainnya adalah Sayhelloresponse:
Sayshello: Menentukan tipe kompleks yang hanya berisi string sederhana, yang digunakan untuk menggambarkan bagian yang masuk dari operasi di masa depan;
Sayshelloresponse: mendefinisikan tipe kompleks yang hanya berisi string sederhana, dan nilai pengembalian yang digunakan untuk menggambarkan operasi di masa depan;
3. Elemen Impor
Elemen impor memungkinkan penggunaan elemen definisi dalam namespace yang ditentukan dalam dokumen WSDL lainnya dalam dokumen WSDL saat ini. Elemen impor tidak digunakan dalam contoh ini. Fungsi ini biasanya sangat efektif ketika pengguna ingin memodulasi dokumen WSDL.
Format impor adalah sebagai berikut:
<wsdl: import namespace = "http://xxx.xxx.xxx/xxx/xxx" lokasi = "http://xxx.xxx.xxx/xxx/xxx.wsdl"/>
Harus ada atribut namespace dan atribut lokasi:
Atribut namespace: Nilai harus cocok dengan targetNeNespace yang dinyatakan dalam dokumen WSDL yang diimpor;
Atribut Lokasi: Harus menunjuk ke dokumen WSDL yang sebenarnya, dan dokumen tidak dapat kosong.
4. Elemen pesan
Elemen pesan menjelaskan muatan layanan web menggunakan pesan. Elemen pesan dapat menggambarkan muatan output atau pesan menerima; Ini juga dapat menjelaskan isi header file SOAP dan elemen detail kesalahan. Cara elemen pesan didefinisikan tergantung pada penggunaan gaya RPC atau pesan gaya dokumen. Dalam definisi elemen pesan dalam artikel ini, dokumen ini menggunakan pesan gaya dokumen:
<wsdl: name pesan = "sayhelloresponse"> <wsdl: bagian nama = "parameter" element = "tns: sayhelloresponse" /> </wsdl: pesan> <wsdl: pesan = "SayhelloreQuest"> <wsdl: name bagian = "paramet" tns = "wsdl: wsdl: parts name =" Parameters "Tns =
Bagian ini adalah definisi abstrak dari format pesan: dua pesan Sayhelloresponse dan Sayhellorequest didefinisikan:
SayshelloreQuest: Format pesan permintaan dari operasi Sayhello, yang terdiri dari fragmen pesan, bernama parameter, dan elemen adalah elemen dalam jenis yang kami definisikan sebelumnya;
Sayshelloresponse: Format pesan respons dari operasi Sayhello terdiri dari fragmen pesan, bernama parameter, dan elemen adalah elemen dalam jenis yang kami definisikan sebelumnya;
Jika Anda menggunakan pesan bergaya RPC, Anda hanya perlu memodifikasi elemen elemen dalam dokumen untuk mengetik.
5. Elemen PortType
Elemen PortType mendefinisikan antarmuka abstrak dari layanan web. Antarmuka ini sedikit mirip dengan antarmuka Java, yang keduanya menentukan jenis dan metode abstrak, dan tidak ada implementasi yang didefinisikan. Di WSDL, elemen PortType diimplementasikan oleh elemen pengikatan dan layanan, yang digunakan untuk menggambarkan protokol internet, skema pengkodean dan alamat internet yang digunakan oleh implementasi layanan web.
Beberapa operasi dapat didefinisikan dalam porttype, dan satu operasi dapat dianggap sebagai metode. Definisi dokumen WSDL dalam artikel ini:
<wsdl: porttype name = "helloServicePortType"> <wsdl: name operasi = "sayhello"> <wsdl: input name = "sayhellorequest" pesan = "tns: sayhellorequest" /<wsdl: output name = "sayhelloresponse" operse = "wsdl: saypons loadspon =" saypons "wspons" wsdl: saypons "wspons" wsdl: saypons "tnspons" </wsdl: porttype>
PortType mendefinisikan jenis mode panggilan layanan. Ini berisi metode operasi Sayshello, yang berisi input dan output untuk menunjukkan bahwa operasi adalah mode permintaan/respons. Pesan permintaan adalah Sayhellorequest yang ditentukan sebelumnya, dan pesan responsnya adalah Sayhelloresponse yang ditentukan sebelumnya. Input mewakili muatan yang dikirim ke layanan web, dan pesan output mewakili muatan yang dikirimkan kepada klien.
6. mengikat
Elemen pengikat memetakan porttype abstrak ke satu set protokol spesifik (SOAO dan HTTP), gaya pesan, dan gaya pengkodean. Biasanya elemen pengikat digunakan bersama dengan elemen eksklusif protokol. Contoh dalam artikel ini:
<wsdl: name binding = "helloServiceHttpbinding" type = "tns: helloServicePortType"> <wsdlsoap: binding style = "dokumen" transport = "http://schemas.xmlsoap.org/soap/soap/htp" soapaction = "" /> <wsdl: input name = "sayhellorequest"> <wsdlsoap: body use = "literal" /> </wsdl: input> <wsdl: output name = "sayhelloresponse"> <wsdlsoap: body use = "literal" /< /wsdl: output ...