מרחוק באביב עם הסיאן ועם יוטה

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

במאמר הקודם שכותרתו "Intro to Spring Remoting with HTTP Invokers" ראינו כמה קל להקים יישום לקוח / שרת הממנף קריאה לשיטה מרחוק (RMI) באמצעות מרחוק באביב.

במאמר זה אנו נראה אֵיך מרחוק באביב תומך ביישום RMI באמצעות הסיאן ו אֲרִיג יוּטָה במקום זאת.

2. תלות Maven

שניהם הסיאן ו אֲרִיג יוּטָה מסופקים על ידי הספרייה הבאה שתצטרך לכלול במפורש בספריה שלך pom.xml קוֹבֶץ:

 com.caucho הסיאן 4.0.38 

תוכל למצוא את הגרסה האחרונה ב- Maven Central.

3. הסיאן

הסיאן הוא פרוטוקול בינארי קל משקל קאוצ'ו, יצרני ה שְׂרָף שרת יישומים. הסיאן יישומים קיימים למספר פלטפורמות ושפות, כולל Java.

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

3.1. חשיפת השירות

בואו נחשוף את השירות על ידי הגדרת תצורה של RemoteExporter מהסוג HessianServiceExportor, החלפת ה- HttpInvokerServiceExporter שימש בעבר:

@Bean (name = "/ booking") RemoteExporter bookingService () {HessianServiceExporter exporter = new HessianServiceExporter (); exporter.setService (CabBookingServiceImpl חדש ()); exporter.setServiceInterface (CabBookingService.class); יצואן החזרה; }

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

3.2. יישום לקוח

בואו ניישם את הלקוח. גם כאן השינויים פשוטים למדי - עלינו להחליף את ה- HttpInvokerProxyFactoryBean עם HessianProxyFactoryBean:

@Configuration public class HessianClient {@Bean public HessianProxyFactoryBean hessianInvoker () {HessianProxyFactoryBean invoker = HessianProxyFactoryBean חדש (); invoker.setServiceUrl ("// localhost: 8080 / booking"); invoker.setServiceInterface (CabBookingService.class); מזמין חוזר; } ראשי ריק סטטי ציבורי (String [] args) זורק BookingException {CabBookingService service = SpringApplication.run (HessianClient.class, args) .getBean (CabBookingService.class); out.println (service.bookRide ("13 Seagate Blvd, Key Largo, FL 33037")); }}

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

4. יוטה

אֲרִיג יוּטָה הוא פרוטוקול קל נוסף של קאוצ'ו, מבוסס על XML. קאוצ'ו הפסיק לתחזק אותו לפני זמן רב, ולשם כך תמיכתה הופסקה במהדורות האביב החדשות ביותר, למרות שהיא כבר קיימת.

לכן כדאי להמשיך להשתמש באופן סביר אֲרִיג יוּטָה רק אם יש לך יישומים שכבר מופצים ושלא ניתן להעביר אותם בקלות לאחרים מרחוק באביב יישום.

4.1. חשיפת השירות

אנחנו יכולים להשתמש אֲרִיג יוּטָה בדיוק באותו אופן שבו השתמשנו הסיאן עלינו רק לבחור את היישום הנכון:

@Bean (name = "/ booking") RemoteExporter burlapService () {BurlapServiceExporter exporter = new BurlapServiceExporter (); exporter.setService (CabBookingServiceImpl חדש ()); exporter.setServiceInterface (CabBookingService.class); יצואן החזרה; }

כפי שאתה יכול לראות, פשוט שינינו את סוג היצואן מ HessianServiceExportor ל BurlapServiceExportor. ניתן להשאיר את כל קוד ההתקנה ללא שינוי.

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

4.2. יישום לקוח

אנו יכולים גם להחליף הסיאן ל אֲרִיג יוּטָה בצד הלקוח, משתנה HessianProxyFactoryBean עם BurlapProxyFactoryBean:

@Bean BurlapProxyFactory הציבור שעועית burlapInvoker () {BurlapProxyFactoryBean invoker = BurlapProxyFactoryBean חדש (); invoker.setServiceUrl ("// localhost: 8080 / booking"); invoker.setServiceInterface (CabBookingService.class); מזמין חוזר; }

כעת אנו יכולים להריץ את הלקוח ולראות כיצד הוא מתחבר בהצלחה ליישום השרת באמצעות אֲרִיג יוּטָה.

5. מסקנה

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

כרגיל, תוכלו למצוא את המקורות ב- GitHub, עם לקוחות לשניהם הסיאן ו אֲרִיג יוּטָה וה JUnit מִבְחָן CabBookingServiceTest.java שיטפל בהפעלת השרת וגם הלקוחות.


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