ភាសា wsdl ។ រួចរាល់ WSDL សម្រាប់សេវាកម្មគេហទំព័របញ្ជីសៀវភៅ។ នេះជាអ្វីដែលសំណើសេវាកម្មគេហទំព័រមើលទៅដូច

នៅក្នុងអត្ថបទនេះខ្ញុំនឹងនិយាយអំពីអ្វីដែលជាឯកសារ WSDL ហេតុអ្វីបានជាវាត្រូវការ និងរបៀបធ្វើការជាមួយវា។

ផែនទីអត្ថបទ

តើអ្វីទៅជា WSDL

WSDL គឺជាភាសាពិពណ៌នាសេវាកម្មគេហទំព័រដែលមានរចនាសម្ព័ន្ធ XML ។ គោលបំណងសំខាន់នៃឯកសារ WSDL គឺជាចំណុចប្រទាក់សម្រាប់ការចូលប្រើមុខងារសេវាកម្ម និងប្រភេទទិន្នន័យត្រឡប់មកវិញ។ ផ្លូវទៅកាន់សំណើដំណើរការម៉ាស៊ីនមេ។ល។

ផ្លូវទៅកាន់ឯកសារ wsdl ជាធម្មតាមើលទៅដូច http://host/services/wsdl/gbdar-v2-2.wsdl

មានឧបករណ៍ជាច្រើន បណ្ណាល័យត្រូវបានរចនាឡើងដើម្បីអានឯកសារ WSDL ។

សាប៊ូយូ

ឧបករណ៍មួយបែបនោះគឺ soapUi()។ តាមរយៈការដំឡើងការចែកចាយដែលបានរចនាឡើងសម្រាប់វេទិការបស់អ្នក អ្នកអាចបង្កើតបាន។ គម្រោងថ្មី។ដោយក្រុមគម្រោង File/New SoapUi ។ នៅក្នុងប្រអប់សម្រាប់បង្កើតគម្រោងថ្មី ទុកប្រអប់ធីក បង្កើតសំណើគំរូ

ការអនុវត្តសំណួរ

នៅក្នុងគម្រោងថ្មី គំរូសំណើនឹងត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិសម្រាប់សេវាកម្ម ការពិពណ៌នាដែលមាននៅក្នុងឯកសារ wsdl ។ នៅខាងឆ្វេងក្នុងមែកធាងអ្នកនឹងឃើញបញ្ជីមុខងារដែលមាននៅក្នុងឯកសារ WSDL ។ ខ្ញុំនឹងបង្ហាញមុខងារចម្លង។ នៅខាងក្នុងវាមានសំណើរ Request1 ដោយចុចពីរដងលើដែលយើងនឹងឃើញប្រអប់ដែលមានគំរូសំណើជំនួសឱ្យប៉ារ៉ាម៉ែត្រលំនាំដើមវានឹងមានសញ្ញាសួរ។ ដើម្បីឱ្យមុខងារប្រតិបត្តិបានត្រឹមត្រូវ អ្នកត្រូវតែបំពេញប៉ារ៉ាម៉ែត្រទាំងអស់ដែលមិនត្រូវបានសម្គាល់ដោយស្លាកជម្រើស ហើយបន្ទាប់មកចុចលើត្រីកោណពណ៌បៃតងនៅជ្រុងខាងឆ្វេងខាងលើនៃប្រអប់។

ប្រសិនបើប៉ារ៉ាម៉ែត្រទាំងអស់ត្រូវបានបញ្ជាក់ត្រឹមត្រូវ ការឆ្លើយតបរបស់សេវាកម្មចំពោះសំណើនឹងបង្ហាញនៅខាងស្តាំ។

SoapUi ផ្តល់នូវសមត្ថភាពក្នុងការមើលប៉ារ៉ាម៉ែត្រនៃឯកសារ WSDL ដើម្បីធ្វើដូច្នេះអ្នកត្រូវចុចពីរដងលើឈ្មោះចំណុចប្រទាក់ (សម្គាល់ដោយរូបតំណាងពណ៌បៃតងនៅក្នុងមែកធាងឯកសារ WSDL សម្រាប់ខ្ញុំ - gdbar-v2-2SOAP) ។ នៅក្នុងប្រអប់ អ្នកអាចរកឃើញ៖

  • ផ្ទាំង OverView - ការពិពណ៌នា ប៉ារ៉ាម៉ែត្រទូទៅ WSDL បញ្ជីមុខងារ និងសកម្មភាពម៉ាស៊ីនមេដែលពាក់ព័ន្ធ
  • ផ្ទាំងសេវាកម្មបញ្ចប់ - ផ្លូវទៅកាន់ម៉ាស៊ីនមេ និងប៉ារ៉ាម៉ែត្រផ្សេងទៀត។
  • មាតិកា WSDL - មែកធាងរុករកឯកសារ
  • ការអនុលោមតាម WS-I — នៅទីនេះអ្នកអាចបង្កើតរបាយការណ៍ WS-I នៅលើចំណុចប្រទាក់

ការបង្កើតឯកសារ

SoapUi អនុញ្ញាតឱ្យយើងបង្កើតឯកសារមុខងារ WSDL ។ ដើម្បីធ្វើដូចនេះចុច ចុចកណ្ដុរស្ដាំតាមរយៈចំណុចប្រទាក់ ហើយហៅពាក្យបញ្ជា បង្កើតឯកសារ។ជាលទ្ធផល យើងនឹងទទួលបានសៀវភៅណែនាំលម្អិតជាទម្រង់ html ។

នោះហើយជាទាំងអស់, ជាវការបង្ហោះថ្មី, ទុកមតិយោបល់, ផ្តល់យោបល់សម្រាប់ការកែលម្អអត្ថបទ។

សេវាគេហទំព័រនីមួយៗផ្តល់ឯកសារ WSDL (ភាសាពិពណ៌នាសេវាកម្មគេហទំព័រ) ដែលពិពណ៌នាអំពីអ្វីគ្រប់យ៉ាងដែលអតិថិជនត្រូវការដើម្បីធ្វើការជាមួយសេវាកម្មនេះ។ ឯកសារ WSDL ផ្តល់នូវវិធីសាមញ្ញ និងស្របសម្រាប់អ្នកអភិវឌ្ឍន៍ដើម្បីបញ្ជាក់វាក្យសម្ព័ន្ធសម្រាប់ការហៅវិធីសាស្ត្រគេហទំព័រណាមួយ។ ជាងនេះទៅទៀត ឯកសារនេះអនុញ្ញាតឱ្យប្រើឧបករណ៍បង្កើតថ្នាក់ប្រូកស៊ីដោយស្វ័យប្រវត្តិ ដែលស្រដៀងទៅនឹងអ្វីដែលរួមបញ្ចូលក្នុងក្របខ័ណ្ឌ ស្ទូឌីយោ Visual.NET និង .NET Framework ។ សូមអរគុណចំពោះឧបករណ៍ទាំងនេះ ការប្រើប្រាស់សេវាកម្មគេហទំព័រគឺងាយស្រួលដូចការប្រើប្រាស់ថ្នាក់មូលដ្ឋានដែរ។

ឯកសារ WSDL គឺផ្អែកលើ ទ្រង់ទ្រាយ XMLយោងតាមព័ត៌មានដែលត្រូវបានបែងចែកជា 5 ក្រុម។ ក្រុមបីដំបូងគឺជានិយមន័យអរូបីដែលឯករាជ្យនៃវេទិកា បណ្តាញ ឬភាសាជាក់លាក់ ខណៈដែលក្រុមពីរដែលនៅសល់រួមមានការពិពណ៌នាជាក់លាក់។

ពិធីការសាប៊ូ

ការទំនាក់ទំនងរវាងសេវាកម្មគេហទំព័រ និងអតិថិជនរបស់ពួកគេត្រូវបានអនុវត្តតាមរយៈសារក្នុងទម្រង់ XML ។

SOAP (Simple Object Access Protocol) គឺជាពិធីសារសម្រាប់ជ្រើសរើសសេវាកម្មគេហទំព័រ។

គំនិតចម្បងនៃស្តង់ដារ SOAP គឺថាសារគួរតែត្រូវបានអ៊ិនកូដក្នុងទម្រង់ XML ស្តង់ដារ។

បន្ថែមពីលើសារ SOAP អ្នកអាចប្រើ GET និង ពិធីការប្រកាស HTTP

អត្ថប្រយោជន៍នៃការប្រើប្រាស់ទម្រង់ SOAP លើទម្រង់ផ្សេងទៀតសម្រាប់ការផ្ទេរទិន្នន័យ៖

និង POST នៃពិធីការ HTTP អ្នកច្បាស់ជាត្រូវបង្កើតខ្សែអក្សរសំណួរដោយខ្លួនឯង ហើយបន្ទាប់មកញែកការឆ្លើយតប។

ស្តង់ដារឌីស្កូ

ស្តង់ដារ DISCO ផ្តល់នូវវិធីសាមញ្ញបំផុតក្នុងការចូលប្រើឯកសារ manifest ដែលអនុញ្ញាតឱ្យអ្នកដាក់ឯកសារយោងជាក្រុមទៅកាន់សេវាកម្មគេហទំព័រ។ ឯកសារ DISCO អាចរួមបញ្ចូលឯកសារពីម៉ាស៊ីនមេគេហទំព័រផ្សេងៗគ្នា និងគាំទ្រ "ការស្វែងរកថាមវន្ត" -ការស្វែងរកដោយស្វ័យប្រវត្តិ

ឯកសារ Manifest មានប្រយោជន៍ព្រោះវារួមបញ្ចូលគ្នានូវសេវាកម្មគេហទំព័រជាច្រើនទៅក្នុងបញ្ជីតែមួយ ប៉ុន្តែពួកគេមិនអនុញ្ញាតឱ្យអតិថិជនស្វែងរកប្រភេទជាក់លាក់នៃសេវាកម្មគេហទំព័រដោយមិនបញ្ជាក់ឈ្មោះរបស់ក្រុមហ៊ុនដែលបានបង្កើតវានោះទេ។

ការបញ្ជាក់ uddi

ការបញ្ជាក់របស់ UDDI (Universal Description, Discovery, and Integration) ជៀសវាងបញ្ហាទាំងនេះដោយប្រើកន្លែងផ្ទុកពិសេស (ឃ្លាំង) ដែលសហគ្រាស និងអង្គការអាចដាក់ទិន្នន័យអំពីសេវាកម្មដែលពួកគេផ្តល់។ ក្រុមហ៊ុនជាង 100 បានត្រួសត្រាយផ្លូវបង្កើតបច្ចេកវិទ្យា UDDI (បញ្ជីពេញលេញអាចរកបាននៅ http://www.uddi.org/community.html) រួមទាំង Sun និង Microsoft ។ រួមគ្នា ក្រុមហ៊ុនទាំងនេះបានបង្កើតសេចក្តីព្រាងការបញ្ជាក់ UDDI ដែលត្រូវបានធ្វើស្តង់ដារបន្ទាប់ពី 18 ខែ។

ព័ត៌មាននៅក្នុងឃ្លាំងនេះត្រូវតែធ្វើបច្ចុប្បន្នភាពដោយដៃ។ ដល់ទីបញ្ចប់នេះ "ប្រតិបត្តិករថ្នាំង" មួយចំនួនរក្សាច្បាប់ចម្លងដូចគ្នាបេះបិទនៃឃ្លាំង UDDI ។ ក្រុមហ៊ុនទាំងនេះផ្តល់នូវការផ្ទុកនៃឃ្លាំងដែលបានបញ្ជាក់ និងការចូលប្រើដោយឥតគិតថ្លៃទៅកាន់វាដើម្បីធ្វើឱ្យសេវាកម្មគេហទំព័រពេញនិយម។ លើសពីនេះ Microsoft បានបញ្ចូលកំណែ UDDI នៅក្នុងកម្មវិធី ម៉ាស៊ីនមេវីនដូ.NET សម្រាប់ប្រើលើអ៊ីនធឺណេតសាជីវកម្ម។

ហាង UDDI មានព័ត៌មានអំពីសហគ្រាសដែលផ្តល់សេវាកម្មគេហទំព័រ ប្រភេទនៃសេវាកម្មនីមួយៗ និងទំនាក់ទំនងទៅនឹងព័ត៌មាន និងលក្ខណៈជាក់លាក់ដែលទាក់ទងនឹងសេវាកម្មទាំងនោះ។ ចំណុចប្រទាក់ UDDI ខ្លួនវាគឺជាសេវាកម្មបណ្តាញ។ ដើម្បីចុះឈ្មោះ ឬស្វែងរកសេវាកម្ម អ្នកត្រូវតែផ្ញើសារ SOAP ។

គុណវិបត្តិចម្បងនៃសេវាកម្មគេហទំព័រគឺដំណើរការទាបជាង និងទំហំធំជាង ចរាចរណ៍បណ្តាញបើប្រៀបធៀបទៅនឹងបច្ចេកវិទ្យាដូចជា RMI, CORBA, DCOM ដោយសារតែការប្រើប្រាស់សារ XML ។

ចំណងជើងប្រធានបទពិតជាសំណួរមួយ ពីព្រោះ... ខ្លួនខ្ញុំផ្ទាល់មិនដឹងថាវាជាអ្វីទេ ហើយជាលើកដំបូងដែលខ្ញុំនឹងព្យាយាមធ្វើការជាមួយវានៅក្នុងក្របខ័ណ្ឌនៃអត្ថបទនេះ។ រឿងតែមួយគត់ដែលខ្ញុំអាចធានាបាននោះគឺថា កូដដែលបានបង្ហាញខាងក្រោមនឹងដំណើរការ ប៉ុន្តែឃ្លារបស់ខ្ញុំគ្រាន់តែជាការសន្មត់ និងការស្មានអំពីរបៀបដែលខ្ញុំយល់អំពីទាំងអស់នេះប៉ុណ្ណោះ។ អញ្ចឹងតោះទៅ...

សេចក្តីផ្តើម

យើងត្រូវចាប់ផ្តើមជាមួយនឹងមូលហេតុដែលគំនិតនៃសេវាកម្មគេហទំព័រត្រូវបានបង្កើតឡើង។ នៅពេលដែលគំនិតនេះបានបង្ហាញខ្លួននៅក្នុងពិភពលោក បច្ចេកវិទ្យាមានរួចហើយដែលអនុញ្ញាតឱ្យកម្មវិធីធ្វើអន្តរកម្មពីចម្ងាយ ដែលកម្មវិធីមួយអាចហៅវិធីសាស្ត្រមួយចំនួននៅក្នុងកម្មវិធីមួយផ្សេងទៀត ដែលអាចដាក់ឱ្យដំណើរការនៅលើកុំព្យូទ័រដែលមានទីតាំងនៅទីក្រុង ឬប្រទេសមួយផ្សេងទៀត។ ទាំងអស់នេះត្រូវបានអក្សរកាត់ជា RPC (ការហៅតាមនីតិវិធីពីចម្ងាយ)។ ឧទាហរណ៍រួមមាន បច្ចេកវិទ្យា CORBAនិងសម្រាប់ Java - RMI (Remote Method Invoking)។ ហើយអ្វីគ្រប់យ៉ាងហាក់ដូចជាល្អនៅក្នុងពួកគេជាពិសេសនៅក្នុង CORBA ដោយសារតែ ... អ្នកអាចធ្វើការជាមួយវានៅក្នុងភាសាសរសេរកម្មវិធីណាមួយ ប៉ុន្តែអ្វីមួយនៅតែបាត់។ ខ្ញុំជឿថាគុណវិបត្តិនៃ CORBA គឺថាវាដំណើរការតាមរយៈមួយចំនួនរបស់វា។ ពិធីការបណ្តាញជំនួសឱ្យ HTTP សាមញ្ញដែលនឹងសមនឹងជញ្ជាំងភ្លើងណាមួយ។ គំនិតនៃសេវាកម្មបណ្តាញគឺដើម្បីបង្កើត RPC ដែលនឹងត្រូវបានបញ្ចូលទៅក្នុងកញ្ចប់ HTTP ។ ដូច្នេះ​បាន​ចាប់​ផ្តើ​ម​ការ​អភិវឌ្ឍ​នៃ​ស្តង់ដារ​។ តើអ្វីជាគោលគំនិតជាមូលដ្ឋាននៃស្តង់ដារនេះ៖
  1. សាប៊ូ. មុននឹងហៅទៅនីតិវិធីពីចម្ងាយ អ្នកត្រូវពណ៌នាការហៅនេះចូល ឯកសារ XML e ទម្រង់ SOAP ។ សាប៊ូគឺគ្រាន់តែជារបស់មួយក្នុងចំណោមមនុស្សជាច្រើន ការសម្គាល់ XMLដែលត្រូវបានប្រើប្រាស់ក្នុងសេវាកម្មគេហទំព័រ។ អ្វីគ្រប់យ៉ាងដែលយើងចង់ផ្ញើទៅកន្លែងណាមួយតាមរយៈ HTTP ត្រូវបានប្រែក្លាយជាលើកដំបូង ការពិពណ៌នា XML SOAP បន្ទាប់មកបញ្ចូលទៅក្នុងកញ្ចប់ HTTP ហើយផ្ញើទៅកុំព្យូទ័រផ្សេងទៀតនៅលើបណ្តាញតាមរយៈ TCP/IP ។
  2. WSDL. មានសេវាបណ្តាញ, i.e. កម្មវិធីដែលវិធីសាស្រ្តអាចហៅពីចម្ងាយ។ ប៉ុន្តែ​ស្តង់ដារ​តម្រូវ​ឱ្យ​កម្មវិធី​នេះ​អម​ដោយ​ការ​ពិពណ៌នា​ដែល​និយាយ​ថា "បាទ អ្នក​ត្រូវ - នេះ​គឺ​ពិត​ជា​សេវាកម្ម​បណ្ដាញ ហើយ​អ្នក​អាច​ហៅ​វិធី​បែប​នេះ​ពី​វា"។ ការពិពណ៌នានេះត្រូវបានតំណាងដោយឯកសារ XML ផ្សេងទៀតដែលមានទម្រង់ផ្សេងគ្នាគឺ WSDL ។ ទាំងនោះ។ WSDL គ្រាន់តែជាឯកសារ XML ដែលពណ៌នាអំពីសេវាកម្មគេហទំព័រ ហើយគ្មានអ្វីទៀតទេ។
ហេតុអ្វីបានជាអ្នកសួរយ៉ាងខ្លី? តើអ្នកមិនអាចជាក់លាក់ជាងនេះបានទេ? វា​ប្រហែល​ជា​អាច​ធ្វើ​ទៅ​បាន ប៉ុន្តែ​ដើម្បី​ធ្វើ​បែប​នេះ អ្នក​នឹង​ត្រូវ​ងាក​ទៅ​រក​សៀវភៅ​ដូចជា T. Mashnin “Java Web Services”។ នៅទីនោះពេញ 200 ទំព័រដំបូងមាន ការពិពណ៌នាលម្អិតស្លាកនីមួយៗនៃស្តង់ដារ SOAP និង WSDL ។ តើវាសមនឹងធ្វើទេ? តាម​គំនិត​ខ្ញុំ​អត់​ទេ​ព្រោះ... ទាំងអស់នេះត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិនៅក្នុង Java ហើយអ្នកគ្រាន់តែត្រូវការសរសេរមាតិកានៃវិធីសាស្រ្តដែលត្រូវបានគេសន្មត់ថាត្រូវបានហៅពីចម្ងាយ។ ដូច្នេះ API ដូចជា JAX-RPC បានបង្ហាញខ្លួននៅក្នុង Java ។ ប្រសិនបើអ្នកណាម្នាក់មិនដឹង នៅពេលដែលពួកគេនិយាយថា Java មាន API បែបនេះ វាមានន័យថាមានកញ្ចប់មួយដែលមានថ្នាក់ដែលដាក់បញ្ចូលបច្ចេកវិទ្យានៅក្នុងសំណួរ។ JAX-RPC បានវិវត្តន៍តាមពេលវេលាពីកំណែមួយទៅកំណែមួយ ហើយទីបំផុតបានក្លាយជា JAX-WS ។ WS ច្បាស់ជាតំណាងឱ្យ WebService ហើយមនុស្សម្នាក់អាចគិតថានេះគ្រាន់តែជាការប្តូរឈ្មោះ RPC ជាពាក្យ buzzword ដ៏ពេញនិយមនាពេលបច្ចុប្បន្ននេះ។ នេះមិនមែនជាការពិតទេ ពីព្រោះ ឥឡូវនេះសេវាគេហទំព័របានផ្លាស់ប្តូរឆ្ងាយពីគំនិតដើម ហើយអនុញ្ញាតឱ្យអ្នកមិនត្រឹមតែហៅវិធីសាស្ត្រពីចម្ងាយប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងផ្ញើសារឯកសារក្នុងទម្រង់ SOAP ផងដែរ។ ខ្ញុំ​មិន​ដឹង​ថា​ហេតុ​អ្វី​បាន​ជា​វា​ត្រូវ​ការ​នៅ​ឡើយ​ទេ វា​ទំនង​ជា​ថា​ចម្លើយ​នៅ​ទី​នេះ​នឹង​មាន “គ្រាន់​តែ​ក្នុង​ករណី​ដែល​វា​ត្រូវ​ការ”។ ខ្លួនខ្ញុំផ្ទាល់ចង់រៀនពីសមមិត្តដែលមានបទពិសោធន៍បន្ថែមទៀត។ ហើយចុងក្រោយ JAX-RS បានបង្ហាញខ្លួនសម្រាប់សេវាកម្មគេហទំព័រ RESTful ដែលគេហៅថា ប៉ុន្តែនេះគឺជាប្រធានបទនៃអត្ថបទដាច់ដោយឡែកមួយ។ ការណែនាំអាចបញ្ចប់នៅទីនេះ ពីព្រោះ... បន្ទាប់យើងនឹងរៀនធ្វើការជាមួយ JAX-WS ។

វិធីសាស្រ្តទូទៅ

នៅក្នុងសេវាកម្មគេហទំព័រ តែងតែមានម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេ។ ម៉ាស៊ីនមេ គឺជាសេវាកម្មគេហទំព័ររបស់យើង ហើយពេលខ្លះត្រូវបានគេហៅថា ចំណុចបញ្ចប់ (ដូចនៅក្នុង ចំណុចបញ្ចប់ ដែលសារ SOAP ពីអតិថិជនទៅដល់)។ យើងត្រូវធ្វើដូចខាងក្រោមៈ
  1. ពិពណ៌នាអំពីចំណុចប្រទាក់នៃសេវាកម្មគេហទំព័ររបស់យើង។
  2. អនុវត្តចំណុចប្រទាក់នេះ។
  3. បើកដំណើរការសេវាកម្មគេហទំព័ររបស់យើង។
  4. សរសេរអតិថិជន ហើយហៅពីចម្ងាយ វិធីសាស្រ្តដែលចង់បានសេវាគេហទំព័រ
សេវាកម្មបណ្តាញអាចត្រូវបានបើកដំណើរការ នៅក្នុងវិធីផ្សេងគ្នា៖ ទាំងពណ៌នាអំពីថ្នាក់ជាមួយនឹងវិធីសាស្ត្រចម្បង ហើយដំណើរការសេវាកម្មគេហទំព័រដោយផ្ទាល់ជាម៉ាស៊ីនមេ ឬដាក់ពង្រាយវាទៅម៉ាស៊ីនមេដូចជា Tomcat ឬផ្សេងទៀត។ ក្នុងករណីទី 2 យើងមិនចាប់ផ្តើមខ្លួនឯងទេ។ ម៉ាស៊ីនមេថ្មី។ហើយយើងមិនបើកច្រកផ្សេងទៀតនៅលើកុំព្យូទ័រនោះទេ ប៉ុន្តែគ្រាន់តែប្រាប់កុងតឺន័រ servlet Tomcat ថា "យើងបានសរសេរថ្នាក់សេវាកម្មគេហទំព័រនៅទីនេះ សូមបោះពុម្ពវាដើម្បីឱ្យអ្នកគ្រប់គ្នាដែលទាក់ទងអ្នកអាចប្រើសេវាកម្មគេហទំព័ររបស់យើង។" ដោយមិនគិតពីវិធីសាស្រ្តនៃការបើកដំណើរការសេវាកម្មបណ្តាញយើងនឹងមានអតិថិជនដូចគ្នា។

ម៉ាស៊ីនមេ

តោះចាប់ផ្តើម IDEA ហើយបង្កើតគម្រោងថ្មីមួយ បង្កើតគម្រោងថ្មី។. ចូរបង្ហាញឈ្មោះ HelloWebServiceហើយចុចប៊ូតុង បន្ទាប់បន្ទាប់មកចុចប៊ូតុង បញ្ចប់. នៅក្នុងថតឯកសារ srcតោះបង្កើតកញ្ចប់ ru.javarush.ws. នៅក្នុងកញ្ចប់នេះ យើងនឹងបង្កើតចំណុចប្រទាក់ HelloWebService: package ru ។ javarush ។ ws; // ទាំងនេះគឺជាចំណារពន្យល់, i.e. វិធីដើម្បីសម្គាល់ថ្នាក់ និងវិធីសាស្រ្តរបស់យើង // ទាក់ទងនឹងបច្ចេកវិទ្យាសេវាកម្មគេហទំព័រនាំចូល javax ។ jws. វិធីសាស្រ្តគេហទំព័រ; នាំចូល javax ។ jws. សេវាគេហទំព័រ;នាំចូល javax ។ jws. សាប៊ូ។ SOAPbinding; // យើងនិយាយថាចំណុចប្រទាក់របស់យើងនឹងដំណើរការជាសេវាកម្មគេហទំព័រ@សេវាកម្មគេហទំព័រ // យើងនិយាយថាសេវាកម្មបណ្តាញនឹងត្រូវបានប្រើដើម្បីហៅវិធីសាស្ត្រ@SOAPBinding (រចនាប័ទ្ម = SOAPBinding ។ រចនាប័ទ្ម។ RPC) ចំណុចប្រទាក់សាធារណៈ HelloWebService ( // យើងនិយាយថាវិធីសាស្ត្រនេះអាចត្រូវបានគេហៅថាពីចម្ងាយ@WebMethod ខ្សែអក្សរសាធារណៈ getHelloString(ឈ្មោះខ្សែអក្សរ); ) នៅក្នុងកូដនេះ ថ្នាក់ WebService និង WebMethod ត្រូវបានគេហៅថា ចំណារពន្យល់ និងមិនធ្វើអ្វីទាំងអស់ លើកលែងតែសម្គាល់ចំណុចប្រទាក់របស់យើង និងវិធីសាស្ត្ររបស់វាជាសេវាកម្មគេហទំព័រ។ ដូចគ្នានេះដែរអនុវត្តចំពោះថ្នាក់ SOAPBinding ។ ភាពខុសគ្នាតែមួយគត់គឺថា SOAPBinding គឺជាចំណារពន្យល់ដែលមានប៉ារ៉ាម៉ែត្រ។ INក្នុងករណីនេះ ប៉ារ៉ាម៉ែត្ររចនាប័ទ្មត្រូវបានប្រើជាមួយនឹងតម្លៃដែលបង្ហាញថាសេវាបណ្តាញនឹងមិនដំណើរការតាមរយៈសារឯកសារនោះទេប៉ុន្តែជា RPC បុរាណពោលគឺឧ។ ដើម្បីហៅវិធីសាស្រ្តមួយ។ ចូរយើងអនុវត្តតក្កវិជ្ជាចំណុចប្រទាក់របស់យើង ហើយបង្កើតថ្នាក់ HelloWebServiceImpl នៅក្នុងកញ្ចប់របស់យើង។ និយាយអីញ្ចឹងខ្ញុំកត់សម្គាល់ថាការបញ្ចប់ថ្នាក់ជាមួយ Impl គឺជាអនុសញ្ញាមួយនៅក្នុង Java ដែលយោងទៅតាមការអនុវត្តនៃចំណុចប្រទាក់ត្រូវបានកំណត់ដូច្នេះ (Impl - ពីការអនុវត្តពាក្យពោលគឺការអនុវត្ត) ។ នេះ​មិន​មែន​ជា​តម្រូវ​ការ​ទេ ហើយ​អ្នក​មាន​សេរីភាព​ក្នុង​ការ​ដាក់​ឈ្មោះ​ថ្នាក់​តាម​អ្វី​ដែល​អ្នក​ចង់​បាន ប៉ុន្តែ​សុជីវធម៌​ទាមទារ​វា៖ កញ្ចប់ ru ។ javarush ។ ws; // ចំណារពន្យល់ដូចគ្នានឹងពេលពិពណ៌នាចំណុចប្រទាក់ នាំចូល javax ។ jws. សេវាគេហទំព័រ;// ប៉ុន្តែនៅទីនេះវាត្រូវបានប្រើជាមួយប៉ារ៉ាម៉ែត្រ endpointInterface,// ចង្អុលបង្ហាញ ឈ្មោះពេញថ្នាក់ចំណុចប្រទាក់នៃសេវាកម្មគេហទំព័ររបស់យើង។ @WebService(endpointInterface="ru.javarush.ws.HelloWebService" ) ថ្នាក់សាធារណៈ HelloWebServiceImpl អនុវត្ត HelloWebService ( @Override public String getHelloString (ឈ្មោះខ្សែអក្សរ) (// គ្រាន់តែត្រឡប់ការស្វាគមន៍ srcត្រឡប់ "សួស្តី" + ឈ្មោះ + "!" ; )) សូមចាប់ផ្តើមសេវាកម្មគេហទំព័ររបស់យើងជាម៉ាស៊ីនមេឯករាជ្យ , i.e. ដោយគ្មានការចូលរួមពី Tomcat និងម៉ាស៊ីនមេកម្មវិធីណាមួយ (នេះគឺជាប្រធានបទសម្រាប់ការពិភាក្សាដាច់ដោយឡែក)។ ដើម្បីធ្វើដូចនេះនៅក្នុងរចនាសម្ព័ន្ធគម្រោងនៅក្នុងថតតោះបង្កើតកញ្ចប់ ru.javarush.endpoint ហើយនៅក្នុងនោះ យើងនឹងបង្កើតថ្នាក់ HelloWebServicePublisher ជាមួយនឹងវិធីសាស្ត្រចម្បង៖ package ru ។ javarush ។ ចំណុចបញ្ចប់; // class សម្រាប់ដំណើរការ web server ជាមួយនឹង web services នាំចូល javax ។ xml ws ចំណុចបញ្ចប់; // ថ្នាក់នៃសេវាកម្មគេហទំព័ររបស់យើង។នាំចូល ru ។ javarush ។ ws HelloWebServiceImpl; "http://localhost:1986/wss/hello"ថ្មី HelloWebServiceImpl () ); )) ឥឡូវ​យើង​រត់​ថ្នាក់​នេះ​ដោយ​ចុចប្ដូរ (Shift) + F10

. គ្មានអ្វីនឹងបង្ហាញនៅក្នុងកុងសូលទេ ប៉ុន្តែម៉ាស៊ីនមេកំពុងដំណើរការ។ អ្នកអាចផ្ទៀងផ្ទាត់វាដោយវាយបន្ទាត់ http://localhost:1986/wss/hello?wsdl នៅក្នុងកម្មវិធីរុករករបស់អ្នក។ មួយវិញទៀត ទំព័រដែលបើក បង្ហាញថាយើងមានម៉ាស៊ីនមេគេហទំព័រ (http://) ដែលកំពុងដំណើរការនៅលើច្រក 1986 នៅលើកុំព្យូទ័ររបស់យើង (localhost) ហើយម្យ៉ាងវិញទៀត បង្ហាញការពិពណ៌នា WSDL នៃសេវាកម្មគេហទំព័ររបស់យើង។ ប្រសិនបើអ្នកបញ្ឈប់កម្មវិធី នោះការពណ៌នានឹងលែងមាន ដូចសេវាកម្មគេហទំព័រខ្លួនឯងដែរ ដូច្នេះយើងនឹងមិនធ្វើបែបនេះទេ ប៉ុន្តែបន្តទៅការសរសេរអតិថិជន។

អតិថិជន srcនៅក្នុងថតគម្រោង តោះបង្កើតកញ្ចប់ ru.javarush.client ហើយនៅក្នុងនោះ ថ្នាក់ HelloWebServiceClient ជាមួយនឹងវិធីសាស្ត្រចម្បង៖ កញ្ចប់ ru ។ javarush អតិថិជន; // ត្រូវការដើម្បីទទួលបានការពិពណ៌នា wsdl និងតាមរយៈវា។// ឈានដល់សេវាកម្មគេហទំព័រដោយខ្លួនឯង។ នាំចូល java ។ សុទ្ធ។ URL// ករណីលើកលែងនេះនឹងកើតឡើងនៅពេលធ្វើការជាមួយវត្ថុ URL នាំចូល java ។ សុទ្ធ។ MalformedURLException; // ថ្នាក់ដើម្បីញែក xml ជាមួយនឹងការពិពណ៌នា wsdl// ហើយឈានដល់ស្លាកសេវាកម្មនៅក្នុងវា។ នាំចូល javax ។ xml ចន្លោះឈ្មោះ។ QName;នាំចូល javax ។ xml ws សេវាកម្ម; // ចំណុចប្រទាក់នៃសេវាកម្មគេហទំព័ររបស់យើង (យើងត្រូវការបន្ថែមទៀត) នាំចូល ru ។ javarush ។ ws HelloWebService;ថ្នាក់សាធារណៈ HelloWebServiceClient ( public static void main (String args) បោះ MalformedURLException ( // បង្កើតតំណភ្ជាប់ទៅការពិពណ៌នា wsdl) ; អាសយដ្ឋាន url = URL ថ្មី ( "http://localhost:1986/wss/hello?wsdl"// យើងមើលប៉ារ៉ាម៉ែត្រនៃ constructor បន្ទាប់នៅក្នុងស្លាកដំបូងបំផុតនៃការពិពណ៌នា WSDL - និយមន័យ // រកមើលនៅអាគុយម៉ង់ទី 1 នៅក្នុងគុណលក្ខណៈ targetNamespace // មើលអាគុយម៉ង់ទី 2 ក្នុងគុណលក្ខណៈឈ្មោះ, QName qname = ថ្មី QName ("http://ws.site/", "HelloWebServiceImplService" );// ឥឡូវនេះយើងអាចទៅដល់ស្លាកសេវាកម្មនៅក្នុង ការពិពណ៌នា wsdl សេវាកម្ម= សេវាកម្ម។ បង្កើត (url, qname); // ហើយ​បន្ទាប់​មក​រហូត​ដល់​ស្លាក​ច្រក​ដែល​ដាក់​នៅ​ក្នុង​វា ដូច្នេះ // ទទួលបានតំណភ្ជាប់ទៅវត្ថុសេវាកម្មគេហទំព័រពីចម្ងាយពីយើង HelloWebService ជំរាបសួរ = សេវាកម្ម។ getPort(HelloWebService.class);

// ហ៊ឺយ! ឥឡូវនេះអ្នកអាចហៅបាន។

វិធីសាស្រ្តពីចម្ងាយ ប្រព័ន្ធ។ ចេញ។ println (ជំរាបសួរ. getHelloString ( "JavaRush" ) );ទៅកាន់សេវាកម្មបណ្តាញ។ ជា​ថ្មី​ម្តង​ទៀត ខ្ញុំ​នឹង​និយាយ​ថា​អ្វី​ដែល​ខ្ញុំ​សរសេរ​ច្រើន​គឺ​ជា​ការ​ស្មាន​របស់​ខ្ញុំ​អំពី​របៀប​ដែល​វា​ដំណើរការ ដូច្នេះ​ហើយ​អ្នក​មិន​គួរ​ទុក​ចិត្ត​ខ្ញុំ​ខ្លាំង​ពេក​ទេ។ ខ្ញុំនឹងដឹងគុណប្រសិនបើ មនុស្សដែលមានចំណេះដឹងគេ​នឹង​កែ​ខ្ញុំ ព្រោះ​ពេល​នោះ​ខ្ញុំ​នឹង​រៀន​អ្វី​មួយ។ UPD

នៅក្នុងជំពូកទី 2 យើងបានពិភាក្សាថាបន្ទាប់ពីបង្កើតសេវាកម្មបណ្តាញនៅលើម៉ាស៊ីនមេជា servlet ទំព័រ JSP ឯកសារ JWS EJB ឬវត្ថុផ្សេងទៀត អ្នកគួរតែពណ៌នាអំពីសមាសភាព និងសមត្ថភាពនៃសេវាកម្មគេហទំព័រជាភាសាឯករាជ្យនៃវេទិកា។ ប្រព័ន្ធប្រតិបត្តិការប្រព័ន្ធសរសេរកម្មវិធីដែលប្រើដើម្បីបង្កើតសេវាកម្មបណ្តាញ។ ការពិពណ៌នានេះត្រូវបានចុះឈ្មោះនៅក្នុងទីតាំងដែលអាចចូលប្រើបានជាសាធារណៈនៅលើអ៊ីនធឺណិត ដូចជាបញ្ជីឈ្មោះ UDDI ឬ ebXML ឬរក្សាទុកនៅលើម៉ាស៊ីនបម្រើសេវាកម្មបណ្តាញ។ ការពិពណ៌នាត្រូវតែមានពេញលេញ និង ព័ត៌មានត្រឹមត្រូវ។អំពីសេវាកម្មទាំងអស់ដែលផ្តល់ដោយសេវាកម្មបណ្តាញ វិធីសាស្រ្តសម្រាប់ការទទួលបានសេវាកម្ម ខ្លឹមសារនៃសំណើសម្រាប់សេវាកម្ម ទម្រង់នៃព័ត៌មានដែលបានផ្តល់។

មធ្យោបាយមួយក្នុងចំណោមមធ្យោបាយនៃការពិពណ៌នាអំពីសេវាកម្មគេហទំព័រយ៉ាងត្រឹមត្រូវ និងស្មើភាពគ្នាគឺភាសា WSDL ដែលបង្កើតឡើងដោយសម្ព័ន្ធ W3C ។ ភាសានេះគឺជាការអនុវត្តមួយផ្សេងទៀតនៃ XML ។ ការបញ្ជាក់ដែលបានណែនាំចុងក្រោយបំផុតរបស់វាតែងតែត្រូវបានបោះពុម្ពនៅលើទំព័រ http://www.w3.org/TR/wsdI. នៅពេលសរសេរសៀវភៅ WSDL កំណែគឺ 1.2 ដែលយើងនឹងពិពណ៌នានៅក្នុងជំពូកនេះ។

សមាសភាពនៃឯកសារ WSDL

ធាតុដើមនៃឯកសារ XML - ការពិពណ៌នា WSDL - គឺជាធាតុ . ក្នុង​ធាតុ​នេះ អ្នក​អាច​ប្រើ​គុណលក្ខណៈ​ឈ្មោះ​ជា​ជម្រើស​ដើម្បី​ផ្តល់​ការ​ពិពណ៌នា​ឈ្មោះ។ វា​ក៏​ជា​កន្លែង​ដ៏​ងាយ​ស្រួល​ក្នុង​ការ​ណែនាំ​ចន្លោះ​ឈ្មោះ​ដែល​បាន​ប្រើ​ក្នុង​ការ​ពិពណ៌នា។

និយមន័យ WSDL ប្រើយ៉ាងទូលំទូលាយនៃ namespaces ផ្សេងៗ។ បន្ថែមពីលើឈ្មោះត្រឹមត្រូវ WSDL ជារឿយៗប្រើឈ្មោះធាតុភាសាប្រភេទ និងការប្រកាស គ្រោងការណ៍ XSD(សូមមើលជំពូកទី១) និងឈ្មោះភាសា ពិធីការ SOAP. ចន្លោះឈ្មោះ WSDL ត្រូវបានពិពណ៌នាជាញឹកញាប់ថាជា namespace លំនាំដើម។ ការកំណត់អត្តសញ្ញាណ namespace នៃកំណែ WSDL 1.2 ចុងក្រោយបំផុតនៅពេលសរសេរគឺស្មើនឹង http://www.w3.org/2002/07/wsdl. ចន្លោះឈ្មោះគោលដៅដែលឧបករណ៍កំណត់អត្តសញ្ញាណត្រូវបានបញ្ជាក់ដោយគុណលក្ខណៈជាធម្មតាត្រូវបានបុព្វបទជាមួយ tns (ទំហំឈ្មោះគោលដៅ) ។

ទៅធាតុដើម ធាតុនៃមូលដ្ឋានប្រាំមួយនិងពីរ ប្រភេទបន្ថែម. ធាតុទាំងអស់គឺស្រេចចិត្ត វាអាចមានចំនួនណាមួយនៃពួកវា លើកលែងតែធាតុ ដែលអាចបង្ហាញម្តងក្នុងឯកសារ។ ធាតុនីមួយៗមានឈ្មោះ កំណត់ដោយគុណលក្ខណៈឈ្មោះដែលត្រូវការ។ ធាតុសំដៅលើគ្នាទៅវិញទៅមកដោយប្រើឈ្មោះទាំងនេះ។ នេះគឺជាធាតុដែលដាក់នៅក្នុងធាតុឫស

? - កំណត់ប្រភេទស្មុគស្មាញដែលប្រើដោយសេវាកម្មគេហទំព័រដោយប្រើ XSD ឬភាសានិយមន័យប្រភេទផ្សេងទៀត។ ធាតុនេះមិនត្រូវការទេ ប្រសិនបើសេវាកម្មគេហទំព័រប្រើតែប៉ុណ្ណោះ ប្រភេទសាមញ្ញដែលត្រូវបានពិពណ៌នាជាភាសា XSD ។

? - ពិពណ៌នាអំពីសារ SOAP នីមួយៗ៖ សំណើ ការឆ្លើយតប ការផ្ទេរឯកសារ។ ធាតុនេះមានធាតុ ការពិពណ៌នាអំពីផ្នែកនៃសារដែលមិនអាចបំបែកចេញពីទស្សនៈនៃ WSDL ។ សម្រាប់សារប្រភេទនីតិវិធី ធាតុនីមួយៗ អាចពិពណ៌នាអំពីឈ្មោះ និងប្រភេទនៃអាគុយម៉ង់សំណើតែមួយ ឬប្រភេទនៃតម្លៃត្រឡប់មកវិញ។ សម្រាប់សារ ប្រភេទឯកសារធាតុ អាចពណ៌នាផ្នែកនីមួយៗនៃសារ "ពហុផ្នែក/ទាក់ទង"។ ការពណ៌នាអរូបីនេះ ត្រូវបានបញ្ចូលដោយធាតុ .

? ពិពណ៌នាអំពីចំណុចប្រទាក់នៃសេវាកម្មគេហទំព័រ ដែលហៅថា ចំណុចបញ្ចប់ ឬច្រកនៃការមកដល់នៃសារនៅក្នុង WSDL ។ វាត្រូវបានពិពណ៌នាថាជាសំណុំនៃសេវាកម្មគេហទំព័រហៅថា ប្រតិបត្តិការ WSDL. ការបកប្រែការពិពណ៌នានេះទៅជាភាសាសរសេរកម្មវិធី អ្នកអាចមើលឃើញថាច្រកធ្វើផែនទីយ៉ាងល្អទៅនឹងចំណុចប្រទាក់ Java ហើយប្រតិបត្តិការនីមួយៗធ្វើផែនទីយ៉ាងល្អទៅនឹងវិធីសាស្ត្រនៅក្នុងចំណុចប្រទាក់នេះ។ ប្រតិបត្តិការត្រូវបានពិពណ៌នាដោយធាតុដែលបានដាក់ ពិពណ៌នាអំពីនីមួយៗ សេវាកម្មដាច់ដោយឡែក. សេវាកម្មត្រូវបានពិពណ៌នាដោយសកម្មភាពដែលត្រូវបានបែងចែកជា 4 ប្រភេទ។ នោះជាពីរ ជំហានសាមញ្ញ៖ "ទទួលសារ" "ផ្ញើការឆ្លើយតប" និងសកម្មភាពរួមបញ្ចូលគ្នាពីរ៖ "ផ្ញើសារ - ទទួលការឆ្លើយតប" ឬ "ការទទួលសារ - ផ្ញើការឆ្លើយតប" ។ ការទទួល និងបញ្ជូនត្រូវបានពិពណ៌នាដោយធាតុដែលជាប់ និង ហើយសារកំហុសគឺជាធាតុ . សារដែលបានទទួល និងផ្ញើត្រូវតែត្រូវបានពិពណ៌នាដោយធាតុរួចហើយ , ធាតុ , និង យោងទៅពួកគេជាមួយនឹងគុណលក្ខណៈសាររបស់ពួកគេ។

? - រាយបញ្ជីធាតុដែលជាប់ សំណុំច្រកដែលភ្ជាប់ជាមួយសេវាកម្មបណ្តាញតែមួយ។ ច្រកដូចគ្នាអាចត្រូវបានភ្ជាប់ជាមួយសេវាកម្មជាច្រើន។

? - ពិពណ៌នាអំពីទម្រង់ជាក់លាក់សម្រាប់ការផ្ញើសារ៖ ពិធីការដូចជា SOAP ឬ HTTP វិធីសាស្រ្តនៃការវេចខ្ចប់សារ ប្រភេទនៃខ្លឹមសាររបស់វា៖ HTML, XML ឬប្រភេទសារ MIME ផ្សេងទៀត។ ធាតុនីមួយៗអាចត្រូវបានភ្ជាប់ជាមួយធាតុបែបនេះជាច្រើន ដែលមួយសម្រាប់វិធីសាស្ត្របញ្ជូនបន្តនីមួយៗ។ ធាតុនេះមានធាតុដែលបានកំណត់នៅក្នុងគ្រោងការណ៍ពិធីការដែលបានជ្រើសរើស។

? < service >- បញ្ជាក់ទីតាំងនៃសេវាកម្មគេហទំព័រជាច្រកមួយ ឬច្រើន។ ច្រកនីមួយៗត្រូវបានពិពណ៌នាដោយធាតុដែលជាប់ មានអាសយដ្ឋាននៃចំណុចប្រទាក់សេវាកម្មបណ្តាញដែលបានបញ្ជាក់ដោយយោងទៅតាមច្បាប់ដែលបានជ្រើសរើសនៅក្នុងធាតុ វិធីសាស្រ្តដឹកជញ្ជូន។

បន្ថែមពីលើធាតុសំខាន់ៗទាំងប្រាំមួយនេះមានធាតុជំនួយពីរបន្ថែមទៀត។

? - រួមបញ្ចូលឯកសារ XSD ការពិពណ៌នា WSDL ឬឯកសារ WSDL ផ្សេងទៀត។

មតិយោបល់។ វាអាចត្រូវបានរួមបញ្ចូលនៅក្នុងធាតុណាមួយ។

ការពិពណ៌នា WSDL ។

យើងអាចនិយាយបានថាធាតុ , និង ពួកគេបង្ហាញពីអ្វីដែលសេវាកម្មគេហទំព័រដែលបានពិពណ៌នាមាន សេវាកម្មអ្វីដែលវាផ្តល់ របៀបដែលសេវាកម្មត្រូវបានរៀបចំ និងប្រភេទទិន្នន័យអ្វីដែលសេវាកម្មទាំងនេះមាន។

ធាតុ ពន្យល់ពីរបៀបដែលសេវាកម្មបណ្តាញត្រូវបានអនុវត្ត ពិធីការបញ្ជូនសារគឺអ្វី៖ HTTP, SMTP ឬមួយចំនួនផ្សេងទៀត ហើយក៏បញ្ជាក់ផងដែរ។ លក្ខណៈបច្ចេកទេសការផ្ទេរទិន្នន័យ។

ទីបំផុតធាតុ បង្ហាញកន្លែងដែលសេវាកម្មបណ្តាញមានទីតាំងនៅដោយភ្ជាប់ការពិពណ៌នា ជាមួយនឹងអាសយដ្ឋានសេវាកម្មគេហទំព័រជាក់លាក់។

រចនាសម្ព័ន្ធនៃឯកសារ WSDL ត្រូវបានបង្ហាញនៅក្នុងបញ្ជី 4.1 ។ តួអក្សរនៅក្នុងតង្កៀបការ៉េមិនមាននៅក្នុងឯកសារទេ។ ពួកគេបង្ហាញពាក្យដដែលៗនៃធាតុ ឬគុណលក្ខណៈនៅក្នុងការពិពណ៌នាអំពីសេវាកម្មគេហទំព័រ៖

តួអក្សរ [?] មានន័យថាធាតុ ឬគុណលក្ខណៈអាចបង្ហាញសូន្យ ឬម្តងក្នុងឯកសារ។

និមិត្តសញ្ញា [*] មានន័យថាធាតុអាចលេចឡើងសូន្យ ឬច្រើនដង។

និមិត្តសញ្ញា [+] មានន័យថាធាតុអាចលេចឡើងមួយដង ឬច្រើនដង។

អវត្ដមាននៃតួអក្សរក្នុងតង្កៀបការ៉េមានន័យថា គុណលក្ខណៈត្រូវតែបង្ហាញម្ដង។

j ការចុះបញ្ជី 4.1 ។ គ្រោងការណ៍ឯកសារ WSDL

targetNamespace="nfleH l ra «iij

ទីតាំង = "URI-aflpec" /> [*]

មតិយោបល់ដោយឥតគិតថ្លៃ

ការពិពណ៌នាអំពីប្រភេទស្មុគស្មាញ និងមិនមានស្តង់ដារ។

[*]

[*]

[? ]

ការពិពណ៌នាអរូបីនៃសារ SOAP ជាសំណុំនៃផ្នែកធាតុផ្សំរបស់វា។

[*]

ការពិពណ៌នាអរូបីនៃសេវាកម្មបណ្តាញជាសំណុំនៃប្រតិបត្តិការ (សេវាកម្ម)។

[*]

ការពិពណ៌នាអំពីសេវាកម្មដូចជាការទទួល (បញ្ចូល) និងផ្ញើ (លទ្ធផល, កំហុស) សារ។

[?]

បានទទួលសារ។

[?] [?]

បានផ្ញើ

message="nMH ធាតុដែលត្រូវគ្នា។ "> [*] [?]

សារកំហុសដែលត្រូវផ្ញើ។

[*]

[+]

type="MMH នៃធាតុដែលត្រូវគ្នា។ "> [*]

[?]

ព័ត៌មានលម្អិតអំពីពិធីការជាក់លាក់។ ពួកគេត្រូវបានកំណត់នៅក្នុងគ្រោងការណ៍

ពិធីការនេះ។ ->

[*]

[?]

ធាតុពណ៌នាលម្អិតត្រូវបានសរសេរនៅទីនេះ

ប្រតិបត្តិការជាក់លាក់។ ->

[?]

ធាតុដែលពណ៌នា

ព័ត៌មានលម្អិតនៃសារជាក់លាក់ដែលបានទទួល។ ->

[?]

[?]

ធាតុដែលពណ៌នា

ព័ត៌មានលម្អិតនៃសារជាក់លាក់ដែលត្រូវបានផ្ញើ។ ->

[*]

[?]

ធាតុដែលពណ៌នា

ព័ត៌មានលម្អិតនៃសារកំហុសជាក់លាក់។ ->

serviceType="MMH នៃធាតុដែលត្រូវគ្នា។ "> [*]

ការពិពណ៌នាអំពីចំណុចប្រទាក់សេវាបណ្តាញជាសំណុំនៃច្រក។

binding="nMH នៃធាតុដែលត្រូវគ្នា។ "> [*]

[?]

អាសយដ្ឋានចាំបាច់ និងតែមួយគត់នៃចំណុចប្រទាក់សេវាកម្មគេហទំព័រត្រូវបានសរសេរនៅទីនេះ សរសេរដោយយោងទៅតាមច្បាប់

ពិធីការដែលបានបញ្ជាក់នៅក្នុងធាតុ . ->

ពិធីការផ្ទេរសារជាក់លាក់នីមួយៗ - SOAP, HTTP, FTP, SMTP - បន្ថែមធាតុបន្ថែមរបស់វាទៅធាតុជំនួយសំខាន់ប្រាំមួយ និងពីរនៃភាសា WSDL ដោយពណ៌នាអំពីលក្ខណៈពិសេសនៃពិធីការនេះ។

ចូរយើងផ្តល់ឧទាហរណ៍ដ៏សាមញ្ញមួយ។ នៅក្នុងការចុះបញ្ជី 3.14 យើងបានសរសេរសេវាបណ្តាញសាមញ្ញជាថ្នាក់ Java ដែលត្រឡប់សំណើដែលបានផ្ញើដោយមិនចាំបាច់ដំណើរការណាមួយឡើយ៖

ថ្នាក់សាធារណៈ EchoService (

ខ្សែអក្សរសាធារណៈ getEcho (ខ្សែអក្សរ req) ( ត្រឡប់ req;

ការចុះបញ្ជី 4.2 ពិពណ៌នាអំពីសេវាកម្មគេហទំព័រនេះនៅក្នុង WSDL ដោយប្រើពិធីការ SOAP ។

ការចុះបញ្ជី 4.2 ។ ការពិពណ៌នាអំពីសេវាគេហទំព័រ EchoService

កំណែ = "1.0" ការអ៊ិនកូដ = "UTF-8" ?>

targetNamespace="http://echoservice.com/echoservice.wsdl" xmlns="http://www.w3.org/2002/07/wsdl" xmlns:tns="http://echoservice.com/echoservice.wsdl " xmlns:soap="http://www.w3.org/2002/07/wsdl/soapl2" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

transport="http://schemas.xmlsoap.org/soap/http" />

"http://schemas.xmlsoap.org/soap/encoding/"

namespace= "http://echoservice.ccm/echcservice.wsdl" use="encoded" />

^oapKbocy enccdingStyle=

"http://schemas .xmlsoap. org/soap/encoding/" namespace= "http://echoservice. c^/ech^service .wsdl" use="encoded" />

name="EchoServService">

Binding="tns:EchoServiceSoapBinding" name="EchoService"> ទីតាំង=

"http://localhost:8080/axis/EchoService.jws" />

នៅក្នុងបញ្ជី 4.2 យើងស្ថិតនៅក្នុងធាតុ យើងបានកំណត់បុព្វបទនៃ namespaces ទាំងអស់ដែលយើងត្រូវការ។ បន្ទាប់​មក យើង​បាន​ពិពណ៌នា​សំណើ និង​ការ​ឆ្លើយ​តប​ជា​ពីរ​ធាតុ . យើងបានឱ្យឈ្មោះពួកគេថា "getEchoRequest" និង "getEchoResponse" ។ សំណើមានអាគុយម៉ង់មួយនៃប្រភេទ xsd៖ ខ្សែអក្សរ។ ប្រភេទនេះត្រូវបានកំណត់ជាភាសា XSD ។ យើងបានផ្តល់អាគុយម៉ង់ឈ្មោះ req ដែលដូចគ្នានឹងឈ្មោះអាគុយម៉ង់នៃវិធីសាស្ត្រ getEcho() ។ យើងដាក់ឈ្មោះតម្លៃដែលត្រឡប់ដោយ method return ប្រភេទរបស់វាក៏ xsd: string ។

ឈ្មោះ "getEchoRequest" និង "getEchoResponse" ត្រូវបានប្រើនៅក្នុងធាតុបន្ទាប់ ដើម្បីបញ្ជាក់ប៉ារ៉ាម៉ែត្របញ្ចូល និងលទ្ធផលនៃសេវាកម្មបណ្តាញ។ វាមានធាតុមួយ។ . នេះមានន័យថា សេវាបណ្តាញផ្តល់សេវាមួយ ដែលឈ្មោះ "getEcho" គឺដូចគ្នានឹងឈ្មោះវិធីសាស្ត្រដែលប្រតិបត្តិសេវាកម្មនោះ។ ធាតុបញ្ជាក់ការបញ្ចូល និងថ្ងៃឈប់សម្រាក ប៉ារ៉ាម៉ែត្រសេវាកម្ម។ បន្ទាប់មកធាតុ យើងបានចង្អុលបង្ហាញវិធីមួយដើម្បីផ្ញើសារ - សារ SOAP ទៅ រចនាប័ទ្មនីតិវិធីផ្ញើដោយ ពិធីការ HTTPអ្វី​ដែល​ធាតុ​ចង្អុល​ទៅ

txarspcrt^=^"ht:tp^://?chepas^.>plscap^.c^rc^/?cap^/ht:tp^" />

ប្រសិនបើរចនាប័ទ្មឯកសារ SOAP ត្រូវបានប្រើ នោះគុណលក្ខណៈរចនាប័ទ្មត្រូវបានកំណត់ទៅជា "ឯកសារ" ។

ទីបំផុតនៅក្នុងធាតុ ធាតុដែលជាប់ ការភ្ជាប់ធាតុ ជាមួយធាតុ

បង្ហាញអាសយដ្ឋានដែលសេវាគេហទំព័រស្ថិតនៅ។

នៅក្នុងការចុះបញ្ជីលេខ 4.2 ឈ្មោះដែលមានបុព្វបទជាមួយសាប៊ូបានបញ្ជាក់ពីការពិពណ៌នានៃសារ និងរបៀបដែលវាត្រូវបានផ្ញើ។ តោះមើលថាតើពិធីការជាក់លាក់អ្វីខ្លះដែល WSDL 1.2 ផ្តល់ជូន។

អក្សរសិល្ប៍៖

Khabibullin I. Sh. ការអភិវឌ្ឍន៍សេវាកម្មគេហទំព័រដោយប្រើ Java ។ - សាំងពេទឺប៊ឺគៈ BHV-Petersburg, 2003. - 400 p.: ill.

ចំណងជើងប្រធានបទពិតជាសំណួរមួយ ពីព្រោះ... ខ្លួនខ្ញុំផ្ទាល់មិនដឹងថាវាជាអ្វីទេ ហើយជាលើកដំបូងដែលខ្ញុំនឹងព្យាយាមធ្វើការជាមួយវានៅក្នុងក្របខ័ណ្ឌនៃអត្ថបទនេះ។ រឿងតែមួយគត់ដែលខ្ញុំអាចធានាបាននោះគឺថា កូដដែលបានបង្ហាញខាងក្រោមនឹងដំណើរការ ប៉ុន្តែឃ្លារបស់ខ្ញុំគ្រាន់តែជាការសន្មត់ និងការស្មានអំពីរបៀបដែលខ្ញុំយល់អំពីទាំងអស់នេះប៉ុណ្ណោះ។ អញ្ចឹងតោះទៅ...

សេចក្តីផ្តើម

យើងត្រូវចាប់ផ្តើមជាមួយនឹងមូលហេតុដែលគំនិតនៃសេវាកម្មគេហទំព័រត្រូវបានបង្កើតឡើង។ នៅពេលដែលគំនិតនេះបានបង្ហាញខ្លួននៅក្នុងពិភពលោក បច្ចេកវិទ្យាមានរួចហើយដែលអនុញ្ញាតឱ្យកម្មវិធីធ្វើអន្តរកម្មពីចម្ងាយ ដែលកម្មវិធីមួយអាចហៅវិធីសាស្ត្រមួយចំនួននៅក្នុងកម្មវិធីមួយផ្សេងទៀត ដែលអាចដាក់ឱ្យដំណើរការនៅលើកុំព្យូទ័រដែលមានទីតាំងនៅទីក្រុង ឬប្រទេសមួយផ្សេងទៀត។ ទាំងអស់នេះត្រូវបានអក្សរកាត់ជា RPC (ការហៅតាមនីតិវិធីពីចម្ងាយ)។ ឧទាហរណ៍រួមមានបច្ចេកវិទ្យា CORBA និងសម្រាប់ Java - RMI (Remote Method Invoking)។ ហើយអ្វីគ្រប់យ៉ាងហាក់ដូចជាល្អនៅក្នុងពួកគេជាពិសេសនៅក្នុង CORBA ដោយសារតែ ... អ្នកអាចធ្វើការជាមួយវានៅក្នុងភាសាសរសេរកម្មវិធីណាមួយ ប៉ុន្តែអ្វីមួយនៅតែបាត់។ ខ្ញុំជឿថាគុណវិបត្តិនៃ CORBA គឺថាវាដំណើរការតាមរយៈពិធីការបណ្តាញផ្ទាល់ខ្លួនមួយចំនួនជំនួសឱ្យ HTTP សាមញ្ញដែលនឹងសមនឹងជញ្ជាំងភ្លើងណាមួយ។ គំនិតនៃសេវាកម្មបណ្តាញគឺដើម្បីបង្កើត RPC ដែលនឹងត្រូវបានបញ្ចូលទៅក្នុងកញ្ចប់ HTTP ។ ដូច្នេះ​បាន​ចាប់​ផ្តើ​ម​ការ​អភិវឌ្ឍ​នៃ​ស្តង់ដារ​។ តើអ្វីជាគោលគំនិតជាមូលដ្ឋាននៃស្តង់ដារនេះ៖
  1. សាប៊ូ. មុនពេលហៅដំណើរការពីចម្ងាយ អ្នកត្រូវពណ៌នាការហៅនេះក្នុងឯកសារ XML ក្នុងទម្រង់ SOAP។ SOAP គឺគ្រាន់តែជាការសម្គាល់ XML ជាច្រើនដែលត្រូវបានប្រើនៅក្នុងសេវាកម្មគេហទំព័រ។ អ្វីគ្រប់យ៉ាងដែលយើងចង់ផ្ញើទៅកន្លែងណាមួយតាមរយៈ HTTP ត្រូវបានបំប្លែងដំបូងទៅជាការពិពណ៌នា XML SOAP បន្ទាប់មកបញ្ចូលទៅក្នុងកញ្ចប់ HTTP ហើយផ្ញើទៅកាន់កុំព្យូទ័រផ្សេងទៀតនៅលើបណ្តាញតាមរយៈ TCP/IP ។
  2. WSDL. មានសេវាបណ្តាញ, i.e. កម្មវិធីដែលវិធីសាស្រ្តអាចហៅពីចម្ងាយ។ ប៉ុន្តែ​ស្តង់ដារ​តម្រូវ​ឱ្យ​កម្មវិធី​នេះ​អម​ដោយ​ការ​ពិពណ៌នា​ដែល​និយាយ​ថា "បាទ អ្នក​ត្រូវ - នេះ​គឺ​ពិត​ជា​សេវាកម្ម​បណ្ដាញ ហើយ​អ្នក​អាច​ហៅ​វិធី​បែប​នេះ​ពី​វា"។ ការពិពណ៌នានេះត្រូវបានតំណាងដោយឯកសារ XML ផ្សេងទៀតដែលមានទម្រង់ផ្សេងគ្នាគឺ WSDL ។ ទាំងនោះ។ WSDL គ្រាន់តែជាឯកសារ XML ដែលពណ៌នាអំពីសេវាកម្មគេហទំព័រ ហើយគ្មានអ្វីទៀតទេ។
ហេតុអ្វីបានជាអ្នកសួរយ៉ាងខ្លី? តើអ្នកមិនអាចជាក់លាក់ជាងនេះបានទេ? វា​ប្រហែល​ជា​អាច​ធ្វើ​ទៅ​បាន ប៉ុន្តែ​ដើម្បី​ធ្វើ​បែប​នេះ អ្នក​នឹង​ត្រូវ​ងាក​ទៅ​រក​សៀវភៅ​ដូចជា T. Mashnin “Java Web Services”។ នៅទីនោះ ជាង 200 ទំព័រដំបូង មានការពិពណ៌នាលម្អិតនៃស្លាកនីមួយៗនៃស្តង់ដារ SOAP និង WSDL ។ តើវាសមនឹងធ្វើទេ? តាម​គំនិត​ខ្ញុំ​អត់​ទេ​ព្រោះ... ទាំងអស់នេះត្រូវបានបង្កើតដោយស្វ័យប្រវត្តិនៅក្នុង Java ហើយអ្នកគ្រាន់តែត្រូវការសរសេរមាតិកានៃវិធីសាស្រ្តដែលត្រូវបានគេសន្មត់ថាត្រូវបានហៅពីចម្ងាយ។ ដូច្នេះ API ដូចជា JAX-RPC បានបង្ហាញខ្លួននៅក្នុង Java ។ ប្រសិនបើអ្នកណាម្នាក់មិនដឹង នៅពេលដែលពួកគេនិយាយថា Java មាន API បែបនេះ វាមានន័យថាមានកញ្ចប់មួយដែលមានថ្នាក់ដែលដាក់បញ្ចូលបច្ចេកវិទ្យានៅក្នុងសំណួរ។ JAX-RPC បានវិវត្តន៍តាមពេលវេលាពីកំណែមួយទៅកំណែមួយ ហើយទីបំផុតបានក្លាយជា JAX-WS ។ WS ច្បាស់ជាតំណាងឱ្យ WebService ហើយមនុស្សម្នាក់អាចគិតថានេះគ្រាន់តែជាការប្តូរឈ្មោះ RPC ជាពាក្យ buzzword ដ៏ពេញនិយមនាពេលបច្ចុប្បន្ននេះ។ នេះមិនមែនជាការពិតទេ ពីព្រោះ ឥឡូវនេះសេវាគេហទំព័របានផ្លាស់ប្តូរឆ្ងាយពីគំនិតដើម ហើយអនុញ្ញាតឱ្យអ្នកមិនត្រឹមតែហៅវិធីសាស្ត្រពីចម្ងាយប៉ុណ្ណោះទេ ប៉ុន្តែថែមទាំងផ្ញើសារឯកសារក្នុងទម្រង់ SOAP ផងដែរ។ ខ្ញុំ​មិន​ដឹង​ថា​ហេតុ​អ្វី​បាន​ជា​វា​ត្រូវ​ការ​នៅ​ឡើយ​ទេ វា​ទំនង​ជា​ថា​ចម្លើយ​នៅ​ទី​នេះ​នឹង​មាន “គ្រាន់​តែ​ក្នុង​ករណី​ដែល​វា​ត្រូវ​ការ”។ ខ្លួនខ្ញុំផ្ទាល់ចង់រៀនពីសមមិត្តដែលមានបទពិសោធន៍បន្ថែមទៀត។ ហើយចុងក្រោយ JAX-RS បានបង្ហាញខ្លួនសម្រាប់សេវាកម្មគេហទំព័រ RESTful ដែលគេហៅថា ប៉ុន្តែនេះគឺជាប្រធានបទនៃអត្ថបទដាច់ដោយឡែកមួយ។ ការណែនាំអាចបញ្ចប់នៅទីនេះ ពីព្រោះ... បន្ទាប់យើងនឹងរៀនធ្វើការជាមួយ JAX-WS ។

វិធីសាស្រ្តទូទៅ

នៅក្នុងសេវាកម្មគេហទំព័រ តែងតែមានម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេ។ ម៉ាស៊ីនមេ គឺជាសេវាកម្មគេហទំព័ររបស់យើង ហើយពេលខ្លះត្រូវបានគេហៅថា ចំណុចបញ្ចប់ (ដូចនៅក្នុង ចំណុចបញ្ចប់ ដែលសារ SOAP ពីអតិថិជនទៅដល់)។ យើងត្រូវធ្វើដូចខាងក្រោមៈ
  1. ពិពណ៌នាអំពីចំណុចប្រទាក់នៃសេវាកម្មគេហទំព័ររបស់យើង។
  2. អនុវត្តចំណុចប្រទាក់នេះ។
  3. បើកដំណើរការសេវាកម្មគេហទំព័ររបស់យើង។
  4. សរសេរម៉ាស៊ីនភ្ញៀវ ហើយហៅពីចម្ងាយពីវិធីសាស្ត្រសេវាកម្មគេហទំព័រដែលចង់បាន
អ្នកអាចបើកដំណើរការសេវាកម្មគេហទំព័រតាមវិធីផ្សេងៗគ្នា៖ ទាំងពណ៌នាអំពីថ្នាក់មួយជាមួយនឹងវិធីសាស្ត្រចម្បង ហើយបើកដំណើរការសេវាកម្មគេហទំព័រដោយផ្ទាល់ជាម៉ាស៊ីនមេ ឬដាក់ពង្រាយវាទៅម៉ាស៊ីនមេដូចជា Tomcat ឬផ្សេងទៀត។ ក្នុងករណីទីពីរ យើងខ្លួនយើងផ្ទាល់មិនបើកដំណើរការម៉ាស៊ីនមេថ្មី ហើយមិនបើកច្រកផ្សេងទៀតនៅលើកុំព្យូទ័រនោះទេ ប៉ុន្តែគ្រាន់តែប្រាប់កុងតឺន័រ servlet Tomcat ថា "យើងបានសរសេរថ្នាក់សេវាកម្មគេហទំព័រនៅទីនេះ សូមផ្សព្វផ្សាយវា ដូច្នេះអ្នកគ្រប់គ្នាដែលទាក់ទងអ្នកអាច ប្រើប្រាស់សេវាកម្មគេហទំព័ររបស់យើង។" ដោយមិនគិតពីវិធីសាស្រ្តនៃការបើកដំណើរការសេវាកម្មបណ្តាញយើងនឹងមានអតិថិជនដូចគ្នា។

ម៉ាស៊ីនមេ

តោះចាប់ផ្តើម IDEA ហើយបង្កើតគម្រោងថ្មីមួយ បង្កើតគម្រោងថ្មី។. ចូរបង្ហាញឈ្មោះ HelloWebServiceហើយចុចប៊ូតុង បន្ទាប់បន្ទាប់មកចុចប៊ូតុង បញ្ចប់. នៅក្នុងថតឯកសារ srcតោះបង្កើតកញ្ចប់ ru.javarush.ws. នៅក្នុងកញ្ចប់នេះ យើងនឹងបង្កើតចំណុចប្រទាក់ HelloWebService: package ru ។ javarush ។ ws; // ទាំងនេះគឺជាចំណារពន្យល់, i.e. វិធីដើម្បីសម្គាល់ថ្នាក់ និងវិធីសាស្រ្តរបស់យើង // ទាក់ទងនឹងបច្ចេកវិទ្យាសេវាកម្មគេហទំព័រនាំចូល javax ។ jws. វិធីសាស្រ្តគេហទំព័រ; នាំចូល javax ។ jws. សេវាគេហទំព័រ;នាំចូល javax ។ jws. សាប៊ូ។ SOAPbinding; // យើងនិយាយថាចំណុចប្រទាក់របស់យើងនឹងដំណើរការជាសេវាកម្មគេហទំព័រ@សេវាកម្មគេហទំព័រ // យើងនិយាយថាសេវាកម្មបណ្តាញនឹងត្រូវបានប្រើដើម្បីហៅវិធីសាស្ត្រ@WebMethod ខ្សែអក្សរសាធារណៈ getHelloString(ឈ្មោះខ្សែអក្សរ); ) នៅក្នុងកូដនេះ ថ្នាក់ WebService និង WebMethod ត្រូវបានគេហៅថា ចំណារពន្យល់ និងមិនធ្វើអ្វីទាំងអស់ លើកលែងតែសម្គាល់ចំណុចប្រទាក់របស់យើង និងវិធីសាស្ត្ររបស់វាជាសេវាកម្មគេហទំព័រ។ ដូចគ្នានេះដែរអនុវត្តចំពោះថ្នាក់ SOAPBinding ។ ភាពខុសគ្នាតែមួយគត់គឺថា SOAPBinding គឺជាចំណារពន្យល់ដែលមានប៉ារ៉ាម៉ែត្រ។ INក្នុងករណីនេះ ប៉ារ៉ាម៉ែត្ររចនាប័ទ្មត្រូវបានប្រើជាមួយនឹងតម្លៃដែលបង្ហាញថាសេវាបណ្តាញនឹងមិនដំណើរការតាមរយៈសារឯកសារនោះទេប៉ុន្តែជា RPC បុរាណពោលគឺឧ។ ដើម្បីហៅវិធីសាស្រ្តមួយ។ ចូរយើងអនុវត្តតក្កវិជ្ជាចំណុចប្រទាក់របស់យើង ហើយបង្កើតថ្នាក់ HelloWebServiceImpl នៅក្នុងកញ្ចប់របស់យើង។ និយាយអីញ្ចឹងខ្ញុំកត់សម្គាល់ថាការបញ្ចប់ថ្នាក់ជាមួយ Impl គឺជាអនុសញ្ញាមួយនៅក្នុង Java ដែលយោងទៅតាមការអនុវត្តនៃចំណុចប្រទាក់ត្រូវបានកំណត់ដូច្នេះ (Impl - ពីការអនុវត្តពាក្យពោលគឺការអនុវត្ត) ។ នេះ​មិន​មែន​ជា​តម្រូវ​ការ​ទេ ហើយ​អ្នក​មាន​សេរីភាព​ក្នុង​ការ​ដាក់​ឈ្មោះ​ថ្នាក់​តាម​អ្វី​ដែល​អ្នក​ចង់​បាន ប៉ុន្តែ​សុជីវធម៌​ទាមទារ​វា៖ កញ្ចប់ ru ។ javarush ។ ws; ) នៅក្នុងកូដនេះ ថ្នាក់ WebService និង WebMethod ត្រូវបានគេហៅថា ចំណារពន្យល់ និងមិនធ្វើអ្វីទាំងអស់ លើកលែងតែសម្គាល់ចំណុចប្រទាក់របស់យើង និងវិធីសាស្ត្ររបស់វាជាសេវាកម្មគេហទំព័រ។ ដូចគ្នានេះដែរអនុវត្តចំពោះថ្នាក់ SOAPBinding ។ ភាពខុសគ្នាតែមួយគត់គឺថា SOAPBinding គឺជាចំណារពន្យល់ដែលមានប៉ារ៉ាម៉ែត្រ។ ក្នុងករណីនេះ ប៉ារ៉ាម៉ែត្ររចនាប័ទ្មត្រូវបានប្រើជាមួយនឹងតម្លៃដែលបង្ហាញថាសេវាបណ្តាញនឹងដំណើរការមិនមែនតាមរយៈសារឯកសារនោះទេប៉ុន្តែជា RPC បុរាណពោលគឺឧ។ ដើម្បីហៅវិធីសាស្រ្តមួយ។ ចូរយើងអនុវត្តតក្កវិជ្ជាចំណុចប្រទាក់របស់យើង ហើយបង្កើតថ្នាក់ HelloWebServiceImpl នៅក្នុងកញ្ចប់របស់យើង។ និយាយអីញ្ចឹងខ្ញុំកត់សម្គាល់ថាការបញ្ចប់ថ្នាក់ជាមួយ Impl គឺជាអនុសញ្ញាមួយនៅក្នុង Java ដែលយោងទៅតាមការអនុវត្តនៃចំណុចប្រទាក់ត្រូវបានកំណត់ដូច្នេះ (Impl - ពីការអនុវត្តពាក្យពោលគឺការអនុវត្ត) ។ នេះ​មិន​មែន​ជា​តម្រូវ​ការ​ទេ ហើយ​អ្នក​មាន​សេរីភាព​ក្នុង​ការ​ដាក់​ឈ្មោះ​ថ្នាក់​តាម​អ្វី​ដែល​អ្នក​ចង់​បាន ប៉ុន្តែ​សុជីវធម៌​ទាមទារ​វា៖ កញ្ចប់ ru ។ javarush ។ ws;// ចង្អុលបង្ហាញ ឈ្មោះពេញថ្នាក់ចំណុចប្រទាក់នៃសេវាកម្មគេហទំព័ររបស់យើង។ @WebService(endpointInterface=// បង្ហាញឈ្មោះពេញនៃថ្នាក់ចំណុចប្រទាក់នៃសេវាកម្មគេហទំព័ររបស់យើង។ srcត្រឡប់ "សួស្តី" + ឈ្មោះ + "!" ; )) សូមចាប់ផ្តើមសេវាកម្មគេហទំព័ររបស់យើងជាម៉ាស៊ីនមេឯករាជ្យ , i.e. ដោយគ្មានការចូលរួមពី Tomcat និងម៉ាស៊ីនមេកម្មវិធីណាមួយ (នេះគឺជាប្រធានបទសម្រាប់ការពិភាក្សាដាច់ដោយឡែក)។ ដើម្បីធ្វើដូចនេះនៅក្នុងរចនាសម្ព័ន្ធគម្រោងនៅក្នុងថតតោះបង្កើតកញ្ចប់ ru.javarush.endpoint ហើយនៅក្នុងនោះ យើងនឹងបង្កើតថ្នាក់ HelloWebServicePublisher ជាមួយនឹងវិធីសាស្ត្រចម្បង៖ package ru ។ javarush ។ ចំណុចបញ្ចប់; // class សម្រាប់ដំណើរការ web server ជាមួយនឹង web services នាំចូល javax ។ xml ws ចំណុចបញ្ចប់; // ថ្នាក់នៃសេវាកម្មគេហទំព័ររបស់យើង។នាំចូល ru ។ javarush ។ ws HelloWebServiceImpl; "http://localhost:1986/wss/hello"ថ្មី HelloWebServiceImpl () ); )) ឥឡូវ​យើង​រត់​ថ្នាក់​នេះ​ដោយ​ចុចប្ដូរ (Shift) + F10

. គ្មានអ្វីនឹងបង្ហាញនៅក្នុងកុងសូលទេ ប៉ុន្តែម៉ាស៊ីនមេកំពុងដំណើរការ។ អ្នកអាចផ្ទៀងផ្ទាត់វាដោយវាយបន្ទាត់ http://localhost:1986/wss/hello?wsdl នៅក្នុងកម្មវិធីរុករករបស់អ្នក។ មួយវិញទៀត ទំព័រដែលបើក បង្ហាញថាយើងមានម៉ាស៊ីនមេគេហទំព័រ (http://) ដែលកំពុងដំណើរការនៅលើច្រក 1986 នៅលើកុំព្យូទ័ររបស់យើង (localhost) ហើយម្យ៉ាងវិញទៀត បង្ហាញការពិពណ៌នា WSDL នៃសេវាកម្មគេហទំព័ររបស់យើង។ ប្រសិនបើអ្នកបញ្ឈប់កម្មវិធី នោះការពណ៌នានឹងលែងមាន ដូចសេវាកម្មគេហទំព័រខ្លួនឯងដែរ ដូច្នេះយើងនឹងមិនធ្វើបែបនេះទេ ប៉ុន្តែបន្តទៅការសរសេរអតិថិជន។

អតិថិជន srcនៅក្នុងថតគម្រោង តោះបង្កើតកញ្ចប់ ru.javarush.client ហើយនៅក្នុងនោះ ថ្នាក់ HelloWebServiceClient ជាមួយនឹងវិធីសាស្ត្រចម្បង៖ កញ្ចប់ ru ។ javarush អតិថិជន; // ត្រូវការដើម្បីទទួលបានការពិពណ៌នា wsdl និងតាមរយៈវា។// ឈានដល់សេវាកម្មគេហទំព័រដោយខ្លួនឯង។ នាំចូល java ។ សុទ្ធ។ URL// ករណីលើកលែងនេះនឹងកើតឡើងនៅពេលធ្វើការជាមួយវត្ថុ URL នាំចូល java ។ សុទ្ធ។ MalformedURLException; // ថ្នាក់ដើម្បីញែក xml ជាមួយនឹងការពិពណ៌នា wsdl// ហើយឈានដល់ស្លាកសេវាកម្មនៅក្នុងវា។ នាំចូល javax ។ xml ចន្លោះឈ្មោះ។ QName;នាំចូល javax ។ xml ws សេវាកម្ម; // ចំណុចប្រទាក់នៃសេវាកម្មគេហទំព័ររបស់យើង (យើងត្រូវការបន្ថែមទៀត)ត្រឡប់ "សួស្តី" + ឈ្មោះ + "!" ; // បង្កើតតំណភ្ជាប់ទៅការពិពណ៌នា wsdl) ; អាសយដ្ឋាន url = URL ថ្មី ( "http://localhost:1986/wss/hello?wsdl") ) សូមចាប់ផ្តើមសេវាកម្មគេហទំព័ររបស់យើងជាម៉ាស៊ីនមេឯករាជ្យ ឧ. ដោយគ្មានការចូលរួមពី Tomcat និងម៉ាស៊ីនមេកម្មវិធីណាមួយ (នេះគឺជាប្រធានបទសម្រាប់ការពិភាក្សាដាច់ដោយឡែក)។ ដើម្បីធ្វើដូចនេះនៅក្នុងរចនាសម្ព័ន្ធគម្រោងនៅក្នុងថត URL url = URL ថ្មី ( QName qname = ថ្មី QName ("http://ws.javarush.ru/", "HelloWebServiceImplService" ); ការពិពណ៌នា wsdl សេវាកម្ម= សេវាកម្ម។ បង្កើត (url, qname); // ឥឡូវនេះយើងអាចទៅដល់ស្លាកសេវាកម្មនៅក្នុងការពិពណ៌នា wsdl, HelloWebService ជំរាបសួរ = សេវាកម្ម។ getPort(HelloWebService.class);

// ហ៊ឺយ! ឥឡូវនេះអ្នកអាចហៅបាន។

សេវាកម្ម = សេវាកម្ម។ បង្កើត (url, qname); UPD