2012-02-27 13 views
4

私はリモートメソッドを使ってそれぞれのメソッドにアクセスするために必要ないくつかのサービスをビルドします。 私は現在SpringのRmiServiceExporterを使用していますが、Javaクラス、シリアル番号などに依存しないフレームワークがあるのだろうかと思います。 つまり、servies間でjavaコード/クラスを共有したくありません。RPC Framework for Java

答えて

1

RMIを使用すると、常にJavaクラスにコミットされます。 RESTful Webサービスのアプローチを見てみることをお勧めしますか?

5

あなたのオプションが含まれます:

特にRESTはRPCではありません。豊富な一連のメソッド(動詞)ではなく、豊富なリソース(名詞)を定義することに重点を置く、異なるスタイルの思考が必要です。

他のものは、より伝統的なRPCを提供することができますが、Javaとの密結合性が低く、プログラミング言語に依存しません。

SOAPでは、インタフェースをWSDLに記述するか、注釈付きJavaクラスからインタフェースを生成することができます。

Thriftでは、インタフェースをThrift IDLに書き込み、それからJavaクラスを生成します。

0

Protocol Buffersは、シリアル化/バージョンの問題を回避し、言語に依存しないようにするのに適しています。

0

別のオプションはVersile Javaです(私は開発者の一人です)。開発中ですが、すでにかなり安定していますので、あなたのプロジェクトにGNU Affero GPLライセンスが有効かどうか試してみてください。

Versile Javaはオブジェクトレベルの対話を処理します。オブジェクトとメソッドを公開するには、適切な基本クラスを継承し、注釈を使用することで簡単です。以下に、簡単なクラスの例を示します。あなたもVersile Pythonクライアントまたはサービスと対話するためにそれを使用することができますボーナスとして

import org.versile.orb.external.*; 
@Doc(doc="Provides an echo service") 
public class Echoer extends VExternal { 
    @Publish(show=true, ctx=false) 
    @Doc(doc="Echo service, returns the provided argument.") 
    public Object echo(Object obj) { 
     return obj; 
    } 
} 

+0

ありがとうございました。私は見てみましょう – Mikhas

+0

@Mikhasあなたのニーズに合っていることを願っています。ご不明な点がございましたら、[フォーラム](https://versile.com/forum/)をお気軽にご利用ください – Versile