הפעלת שירות אינטרנט SOAP באביב

1. סקירה כללית

בעבר ראינו כיצד ליצור שירות אינטרנט SOAP עם Spring.

במדריך זה נלמד כיצד ליצור לקוח מבוסס אביב שיצרוך שירות אינטרנט זה.

בהפעלת שירות אינטרנט SOAP בג'אווה, עשינו את אותו הדבר באמצעות JAX-WS RI.

2. שירות האינטרנט של SOAP Spring - סיכום מהיר

מוקדם יותר יצרנו שירות אינטרנט באביב כדי להביא את נתוני המדינה, בהתחשב בשמה. לפני שנעמיק ביישום הלקוח, בואו נערוך סיכום מהיר של האופן בו עשינו זאת.

בעקבות הגישה הראשונה לחוזה, כתבנו לראשונה קובץ סכמת XML המגדיר את התחום. לאחר מכן השתמשנו ב- XSD זה כדי ליצור מחלקות לבקשה, לתגובה ולמודל הנתונים באמצעות ה- תוסף jaxb2-maven.

לאחר מכן קידדנו ארבע כיתות:

  • CountryEndpoint - נקודת הסיום העונה לבקשה
  • מאגר מדינה - המאגר בחלק האחורי למסירת נתוני מדינות
  • WebServiceConfig - התצורה המגדירה את השעועית הנדרשת
  • יישום - אפליקציית אתחול האביב כדי להפוך את השירות שלנו לזמין לצריכה

לבסוף, בדקנו את זה באמצעות cURL על ידי שליחת בקשת SOAP.

עכשיו בואו נתחיל את השרת על ידי הפעלת אפליקציית האתחול לעיל ונמשיך לשלב הבא.

3. הלקוח

הנה, אנחנו הולכים בנה לקוח Spring כדי להפעיל ולבדוק את שירות האינטרנט הנ"ל.

עכשיו, בואו נראה שלב אחר שלב מה אנחנו צריכים לעשות על מנת ליצור לקוח.

3.1. צור קוד לקוח

ראשית, ניצור כמה שיעורים באמצעות WSDL הזמין ב //localhost:8080/ws/countries.wsdl. אנו נוריד ונשמור זאת ב src / main / resources תיקיה.

כדי ליצור קוד באמצעות Maven, נוסיף את תוסף maven-jaxb2 שלנו pom.xml:

 org.jvnet.jaxb2.maven2 maven-jaxb2-plugin 0.14.0 ליצור WSDL $ {project.basedir} / src / main / java com.baeldung.springsoap.client.gen $ {project.basedir} / src / main / resources מדינות. wsdl 

יש לציין, בתצורת התוסף שהגדרנו:

  • createDirectory - התיקיה שבה יישמרו החפצים שנוצרו
  • createPackage - שם החבילה בו החפצים ישתמשו
  • schemaDirectory ו schema כולל - הספריה ושם הקובץ עבור ה- WSDL

כדי לבצע את תהליך ייצור ה- JAXB, נבצע את התוסף הזה פשוט על ידי בניית הפרויקט:

לקמפל mvn

מעניין, החפצים שנוצרו כאן זהים לאלו שנוצרו עבור השירות.

בואו לרשום את אלה שנשתמש בהם:

  • מדינה.java ו Currency.java - POJO המייצגים את מודל הנתונים
  • GetCountryRequest.java - סוג הבקשה
  • GetCountryResponse.java - סוג התגובה

השירות עשוי להיות פרוס בכל מקום בעולם, ועם ה- WSDL שלו בלבד הצלחנו לייצר את אותם מחלקות בקצה הלקוח כמו השרת!

3.2. CountryClient

לאחר מכן, עלינו להאריך את האביב WebServiceGatewaySupport ליצור אינטראקציה עם שירות האינטרנט.

אנחנו נקרא לשיעור הזה CountryClient:

class class CountryClient מרחיב את WebServiceGatewaySupport {public GetCountryResponse getCountry (מדינה מחרוזת) {GetCountryRequest בקשה = GetCountryRequest חדש (); request.setName (מדינה); תגובה GetCountryResponse = (GetCountryResponse) getWebServiceTemplate () .marshalSendAndReceive (בקשה); תגובה חזרה; }}

כאן הגדרנו שיטה אחת getCountry, המקביל לפעולה שחשף שירות האינטרנט. בשיטה יצרנו א GetCountryRequest מופע והפעיל את שירות האינטרנט כדי להשיג GetCountryResponse. במילים אחרות, כאן ביצענו את החלפת ה- SOAP.

כפי שאנו רואים, אביב הפך את הקריאה למדי לפשוטה בה WebServiceTemplate. השתמשנו בשיטת התבנית marshalSendAndReceive לביצוע חילופי SOAP.

המרות ה- XML ​​מטופלות כאן באמצעות תקע מרשלר.

עכשיו בואו נסתכל על התצורה שבה זה מרשלר מגיע מ.

3.3. CountryClientConfig

כל מה שאנחנו צריכים כדי להגדיר את לקוח ה- Spring WS שלנו הם שני שעועית.

ראשית, א Jaxb2Marshaller להמיר הודעות מ- XML ​​וממנו, ושנית, שלנו CountryClient, שיחבר את ה- מרשלר אפונה:

@Configuration class class CountryClientConfig {@Bean public Jaxb2Marshaller marshaller () {Jaxb2Marshaller marshaller = Jaxb2Marshaller חדש (); marshaller.setContextPath ("com.baeldung.springsoap.client.gen"); להחזיר מרשל; } @Bean CountryClient ציבורי countryClient (Jaxb2Marshaller marshaller) {לקוח CountryClient = CountryClient חדש (); client.setDefaultUri ("// localhost: 8080 / ws"); client.setMarshaller (marshaller); client.setUnmarshaller (marshaller); לקוח חוזר; }} 

כאן, עלינו לדאוג שה- מרשלרמסלול ההקשר זהה ל createPackage שצוין בתצורת התוסף של שלנו pom.xml.

אנא שימו לב גם ל- URI המוגדר כברירת מחדל עבור הלקוח כאן. זה מוגדר כ- סבון: כתובת המיקום שצוין ב- WSDL.

4. בדיקת הלקוח

לאחר מכן נכתוב בדיקת JUnit כדי לוודא שהלקוח שלנו מתפקד כצפוי:

@RunWith (SpringJUnit4ClassRunner.class) @ContextConfiguration (classes = CountryClientConfig.class, loader = AnnotationConfigContextLoader.class) מחלקה ציבורית ClientLiveTest {@Autowired CountryClient client; @Test הציבור בטל givenCountryService_whenCountryPoland_thenCapitalIsWarsaw () {GetCountryResponse תגובה = client.getCountry ("פולין"); assertEquals ("ורשה", response.getCountry (). getCapital ()); } @Test הציבור בטל givenCountryService_whenCountrySpain_thenCurrencyEUR () {GetCountryResponse תגובה = client.getCountry ("ספרד"); assertEquals (Currency.EUR, response.getCountry (). getCurrency ()); }} 

כפי שאנו רואים, התחברנו לחשמל CountryClient שעועית מוגדרת אצלנו CountryClientConfig. ואז, השתמשנו בו getCountry להפעיל את השירות המרוחק כמתואר קודם.

יתר על כן, הצלחנו לחלץ את המידע הדרוש לנו לצורך קביעותינו באמצעות מודל הנתונים שנוצר POJOs, מדינה, ו מַטְבֵּעַ.

5. מסקנה

במדריך זה, ראינו את היסודות כיצד להפעיל שירות SOAP באמצעות Spring WS.

רק גירדנו את פני השטח של מה שיש לספרינג להציע באזור שירותי האינטרנט של SOAP; יש הרבה מה לחקור.

כמו תמיד, קוד המקור זמין ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found