- - PR -
JavaとCのプロセス間通信について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-06-03 13:27
お世話になります。
WebLogicのようなAPサーバ(Java)でリクエストを受け、結果返却後、後続の処理(C)のアプリケーションに処理依頼をすることを検討しています。 リアルタイムにやりとりを行いたいため、JavaとCでプロセス間通信をすることになると思うのですが、一般的にはどういうやり方がありますか? MQなどのミドルウェアなどを用いたパターンも可です。 参考リンクとかあれば併せて教えていただけると幸いです。 [ メッセージ編集済み 編集者: のりすけ 編集日時 2006-06-03 13:56 ] |
|
投稿日時: 2006-06-03 14:31
Cのアプリのつくりによると思いますが、JNIでブリッジするのがよいのではないでしょうか?
|
|
投稿日時: 2006-06-03 23:07
WebLogic であれば C から JMS API にアクセスするためのインターフェースが用意されていますね。
http://edocs.beasys.co.jp/e-docs/wls/docs91/jms/C_api.html |
|
投稿日時: 2006-06-03 23:36
mogeさん、インギさん、ありがとうございます!
JNIって詳しくは知らないのですが、Cで記述された関数をJavaからアクセスするものだと思っていたのですが。 UNIXのメッセージ・キューにメッセージを入れるCのAPを用意して、Javaからそれを呼び出して連携させるようなイメージですか? あと、WebLogicのJMS APIにアクセスするものって、確かに検索していて出てきたのですが、イマイチよくわかんなかったんですよね。 何か海外のサイトの英文をそのまま和訳したみたいで(>_<) 要はCのAPからJMSのキューやトピックにアクセスして、待ち受けるってことができるってことなのでしょうか? [ メッセージ編集済み 編集者: のりすけ 編集日時 2006-06-03 23:39 ] |
|
投稿日時: 2006-06-04 00:24
>JNIって詳しくは知らないのですが、Cで記述された関数をJavaからアクセスするものだと思っていたのですが。
そうですね。Java が動いているプロセス内からCのコードを呼び出す仕組みです。 >要はCのAPからJMSのキューやトピックにアクセスして、待ち受けるってことができるってことなのでしょうか? です。Java アプリケーションからJMSにアクセスするのと同じくキューやトピックに接続してメッセージを送信したり、受信したりできます。 |
|
投稿日時: 2006-06-04 10:08
JNI実験ページ
http://www.ki.rim.or.jp/~kuro/Java/JNI/index.html |
|
投稿日時: 2006-06-04 19:42
みなさんありがとうございます!
JNIを使うやり方でも、WebLogicの、JMS C APIを使うやり方でもどちらでもできそうですね ただ、どちらもJNIを使うと思うのですが、やはり性能は落ちますか?作り方にもよるとは思うのですが。。。注意点など、ご存知の方がいらっしゃったら教えてください。 あと、Java-C間でプロセス間通信をする方式って、他にどんなものがありますか? 私は、ソケットくらいしか思いつきませんでした。。。 |
|
投稿日時: 2006-06-06 01:27
C言語側のやりたい処理により、作り方は変わる思います。
単純なライブラリ的な処理なら、JNIで十分でしょう。 初期処理、終了処理が重く、レスポンスが要求されるなら、常時動いていて、ソケットでやり取りする方がよいでしょう。 別サーバで動き、キューイングや通信の信頼性を高めたいなら、MQなどミドルウェアを使った方がよいかもしれません。 |