Vårfjernkontroll med Hessian og Burlap

1. Oversikt

I forrige artikkel med tittelen “Intro to Spring Remoting with HTTP Invokers” så vi hvor enkelt det er å sette opp en klient / serverapplikasjon som utnytter ekstern metodeinnkalling (RMI) gjennom Vårfjernkontroll.

I denne artikkelen vil vi vise hvordan Vårfjernkontroll støtter implementeringen av RMI ved hjelp av Hessian og Burlap i stedet.

2. Maven-avhengigheter

Både Hessian og Burlap leveres av følgende bibliotek som du må inkludere eksplisitt i pom.xml fil:

 com.caucho hessian 4.0.38 

Du finner den nyeste versjonen på Maven Central.

3. Hessian

Hessian er en lett binær protokoll fra Caucho, skaperne av Harpiks applikasjonsserver. Hessian implementeringer finnes for flere plattformer og språk, inkludert Java.

I de følgende underavsnittene vil vi endre eksemplet på "drosje-booking" presentert i forrige artikkel for å få klienten og serveren til å kommunisere ved hjelp av Hessian i stedet for Fjær ekstern HTTP basert protokoll.

3.1. Å eksponere tjenesten

La oss avsløre tjenesten ved å konfigurere en RemoteExporter av typen HessianServiceExporter, erstatter HttpInvokerServiceExporter tidligere brukt:

@Bean (name = "/ booking") RemoteExporter bookingService () {HessianServiceExporter eksportør = ny HessianServiceExporter (); eksportør.setService (ny CabBookingServiceImpl ()); eksportør.setServiceInterface (CabBookingService.class); retur eksportør; }

Vi kan nå starte serveren og holde den aktiv mens vi forbereder klienten.

3.2. Kundesøknad

La oss implementere klienten. Også her er endringene ganske enkle - vi må erstatte HttpInvokerProxyFactoryBean med en HessianProxyFactoryBean:

@Configuration public class HessianClient {@Bean public HessianProxyFactoryBean hessianInvoker () {HessianProxyFactoryBean invoker = new HessianProxyFactoryBean (); invoker.setServiceUrl ("// localhost: 8080 / booking"); invoker.setServiceInterface (CabBookingService.class); returinnkaller; } offentlig statisk ugyldig hoved (String [] args) kaster BookingException {CabBookingService service = SpringApplication.run (HessianClient.class, args) .getBean (CabBookingService.class); out.println (service.bookRide ("13 Seagate Blvd, Key Largo, FL 33037")); }}

La oss nå kjøre klienten for å få den til å koble til serveren ved hjelp av Hessian.

4. Burlap

Burlap er en annen lettvektsprotokoll fra Caucho, basert på XML. Caucho sluttet å vedlikeholde den for lenge siden, og for det er støtten avskaffet i de nyeste vårutgivelsene, selv om den allerede er til stede.

Derfor bør du med rimelighet fortsette å bruke Burlap bare hvis du har applikasjoner som allerede er distribuert, og som ikke lett kan overføres til en annen Vårfjernkontroll gjennomføring.

4.1. Å eksponere tjenesten

Vi kan bruke Burlap akkurat på samme måte som vi brukte Hessian - vi må bare velge riktig implementering:

@Bean (name = "/ booking") RemoteExporter burlapService () {BurlapServiceExporter eksportør = ny BurlapServiceExporter (); eksportør.setService (ny CabBookingServiceImpl ()); eksportør.setServiceInterface (CabBookingService.class); retur eksportør; }

Som du ser, endret vi nettopp typen eksportør fra HessianServiceExporter til BurlapServiceExporter. All oppsettkoden kan være uendret.

Igjen, la oss starte serveren og la den fortsette å gå mens vi jobber med klienten.

4.2. Klientimplementering

Vi kan også bytte Hessian til Burlap på klientsiden, skifter ut HessianProxyFactoryBean med BurlapProxyFactoryBean:

@Bean public BurlapProxyFactoryBean burlapInvoker () {BurlapProxyFactoryBean invoker = new BurlapProxyFactoryBean (); invoker.setServiceUrl ("// localhost: 8080 / booking"); invoker.setServiceInterface (CabBookingService.class); returinnkaller; }

Vi kan nå kjøre klienten og se hvordan den kobles til serverapplikasjonen ved hjelp av Burlap.

5. Konklusjon

Med disse raske eksemplene viste vi hvordan det er enkelt med Vårfjernkontroll å velge mellom forskjellige teknologier for å implementere ekstern metodeinnkalling og hvordan du kan utvikle et program som er helt uvitende om de tekniske detaljene i protokollen som brukes til å representere den eksterne metoden påkalling.

Som vanlig finner du kildene på GitHub, med klienter for begge Hessian og Burlap og JUnit test CabBookingServiceTest.java som vil ta seg av å kjøre både serveren og klientene.


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