2012-02-06 10 views
8

GlassFishサーバーでホストされているJava Webインターフェイスと、Linuxデーモンとして実装されているCカーネルを持つアプリケーションに取り組んでいます。Java <-> Cブリッジ

今私の最大の問題は、リモートプロシージャコールの作成方法です。私は関数とメソッドを両方向で呼び出す必要があります。これらは考えられる解決策です:

  1. RPCを実装するためにJavaネイティブインターフェイスとネットワークソケットを使用します。
  2. Dバス - 私の知る限りではDバスは、JavaとC

間のRPCのために使用することができますが、私は外部のライブラリやフレームワークを使用せずに、最も基本的な方法を使用します。 ソケットだけを使ってJavaとCの間で直接関数/メソッドを呼び出すことは可能ですか?私が使用するOSはCentosです。

2つの言語を接続するよりエレガントな方法はありますか?

答えて

8

外部ライブラリがないと、ソケットのみが残ります。しかし、私はDBusを外部ライブラリとして分類するでしょうか?

Cプログラムでソケットを使用できる場合は、Javaネイティブインターフェイスは必要ありません。 Javaコードはopen sockets from Javaで、Cコードがリッスンするソケットを呼び出すことができます。

DBusを許可すれば、多分、CとJavaの両方のライブラリを持つネットワーキングとRPCプロトコルの膨大な部分を考慮する必要があります。 (また、JNIを使​​用する必要はありません)

DBusの方法では、Java documentationtutorialを見てください。

+0

これをどのように実装することができるでしょうか? –

+2

@ user1103606これはかなり進んだ話題なので、これに簡単な答えを与えるのは難しいです。 –

+0

私はCネットワークサーバとクライアントプログラムを書く方法を知っています。ソケットだけを使ってjavaからCメソッドを呼び出す方法を説明しますか?反射とは何ですか? –

関連する問題