ヘシアンと黄麻布による春のリモーティング
1. 概要
previous article titled “Intro to Spring Remoting with HTTP Invokers”では、Spring Remotingを介してリモートメソッド呼び出し(RMI)を活用するクライアント/サーバーアプリケーションをセットアップするのがいかに簡単であるかを確認しました。
この記事では、代わりにhow Spring Remoting supports the implementation of RMI using Hessian and Burlapを示します。
2. Mavenの依存関係
HessianとBurlapはどちらも、pom.xmlファイルに明示的に含める必要がある次のライブラリによって提供されます。
com.caucho
hessian
4.0.38
最新バージョンはMaven Centralにあります。
3. ヘシアン
Hessianは、ResinアプリケーションサーバーのメーカーであるCauchoの軽量バイナリプロトコルです。 Hessianの実装は、Javaを含め、いくつかのプラットフォームと言語に存在します。
次のサブセクションでは、前の記事で示した「タクシー予約」の例を変更して、クライアントとサーバーがSpring Remote HTTPベースのプロトコルではなくHessianを使用して通信できるようにします。
3.1. サービスの公開
以前に使用したHttpInvokerServiceExporterを置き換えて、タイプHessianServiceExporterのRemoteExporterを構成することにより、サービスを公開しましょう。
@Bean(name = "/booking")
RemoteExporter bookingService() {
HessianServiceExporter exporter = new HessianServiceExporter();
exporter.setService(new CabBookingServiceImpl());
exporter.setServiceInterface( CabBookingService.class );
return exporter;
}
これで、クライアントを準備している間、サーバーを起動してアクティブに保つことができます。
3.2. クライアントアプリケーション
クライアントを実装しましょう。 ここでも、変更は非常に簡単です。HttpInvokerProxyFactoryBeanをHessianProxyFactoryBeanに置き換える必要があります。
@Configuration
public class HessianClient {
@Bean
public HessianProxyFactoryBean hessianInvoker() {
HessianProxyFactoryBean invoker = new HessianProxyFactoryBean();
invoker.setServiceUrl("http://localhost:8080/booking");
invoker.setServiceInterface(CabBookingService.class);
return invoker;
}
public static void main(String[] args) throws BookingException {
CabBookingService service
= SpringApplication.run(HessianClient.class, args)
.getBean(CabBookingService.class);
out.println(
service.bookRide("13 Seagate Blvd, Key Largo, FL 33037"));
}
}
次に、クライアントを実行して、Hessianを使用してサーバーに接続します。
4. 黄麻布
Burlapは、XMLに基づくCauchoの別の軽量プロトコルです。 Cauchoはずっと前にそれを維持することをやめました、そしてそのために、それがすでに存在しているとしても、そのサポートは最新のSpringリリースで非推奨になりました。
したがって、すでに配布されており、別のSpring Remoting実装に簡単に移行できないアプリケーションがある場合にのみ、Burlapを合理的に使用し続ける必要があります。
4.1. サービスの公開
Hessianを使用したのとまったく同じ方法でBurlapを使用できます—適切な実装を選択する必要があります。
@Bean(name = "/booking")
RemoteExporter burlapService() {
BurlapServiceExporter exporter = new BurlapServiceExporter();
exporter.setService(new CabBookingServiceImpl());
exporter.setServiceInterface( CabBookingService.class );
return exporter;
}
ご覧のとおり、エクスポーターのタイプをHessianServiceExporterからBurlapServiceExporter.に変更しました。すべてのセットアップコードは変更しないでおくことができます。
繰り返しになりますが、サーバーを起動して、クライアントで作業している間、サーバーを実行し続けましょう。
4.2. クライアント実装
同様に、クライアント側でHessianをBurlapに交換し、HessianProxyFactoryBeanをBurlapProxyFactoryBeanに変更することができます。
@Bean
public BurlapProxyFactoryBean burlapInvoker() {
BurlapProxyFactoryBean invoker = new BurlapProxyFactoryBean();
invoker.setServiceUrl("http://localhost:8080/booking");
invoker.setServiceInterface(CabBookingService.class);
return invoker;
}
これで、クライアントを実行し、Burlapを使用してサーバーアプリケーションに正常に接続する方法を確認できます。
5. 結論
これらの簡単な例を使用して、Spring Remotingを使用して、リモートメソッド呼び出しを実装するためのさまざまなテクノロジから簡単に選択できること、およびリモートメソッドを表すために使用されるプロトコルの技術的な詳細をまったく知らないアプリケーションを開発する方法を示しました。呼び出し。
いつものように、ソースover on GitHubがあり、HessianとBurlapの両方のクライアントがあり、JUnitは両方の実行を処理するCabBookingServiceTest.javaをテストします。サーバーとクライアント。