- PR -

JavaとCのプロセス間通信について

投稿者投稿内容
のりすけ
会議室デビュー日: 2006/05/10
投稿数: 9
投稿日時: 2006-06-03 13:27
お世話になります。

WebLogicのようなAPサーバ(Java)でリクエストを受け、結果返却後、後続の処理(C)のアプリケーションに処理依頼をすることを検討しています。
リアルタイムにやりとりを行いたいため、JavaとCでプロセス間通信をすることになると思うのですが、一般的にはどういうやり方がありますか?
MQなどのミドルウェアなどを用いたパターンも可です。
参考リンクとかあれば併せて教えていただけると幸いです。


[ メッセージ編集済み 編集者: のりすけ 編集日時 2006-06-03 13:56 ]
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2006-06-03 14:31
Cのアプリのつくりによると思いますが、JNIでブリッジするのがよいのではないでしょうか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-06-03 23:07
WebLogic であれば C から JMS API にアクセスするためのインターフェースが用意されていますね。
http://edocs.beasys.co.jp/e-docs/wls/docs91/jms/C_api.html
のりすけ
会議室デビュー日: 2006/05/10
投稿数: 9
投稿日時: 2006-06-03 23:36
mogeさん、インギさん、ありがとうございます!
JNIって詳しくは知らないのですが、Cで記述された関数をJavaからアクセスするものだと思っていたのですが。
UNIXのメッセージ・キューにメッセージを入れるCのAPを用意して、Javaからそれを呼び出して連携させるようなイメージですか?

あと、WebLogicのJMS APIにアクセスするものって、確かに検索していて出てきたのですが、イマイチよくわかんなかったんですよね。
何か海外のサイトの英文をそのまま和訳したみたいで(>_<)
要はCのAPからJMSのキューやトピックにアクセスして、待ち受けるってことができるってことなのでしょうか?

[ メッセージ編集済み 編集者: のりすけ 編集日時 2006-06-03 23:39 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-06-04 00:24
>JNIって詳しくは知らないのですが、Cで記述された関数をJavaからアクセスするものだと思っていたのですが。
そうですね。Java が動いているプロセス内からCのコードを呼び出す仕組みです。

>要はCのAPからJMSのキューやトピックにアクセスして、待ち受けるってことができるってことなのでしょうか?
です。Java アプリケーションからJMSにアクセスするのと同じくキューやトピックに接続してメッセージを送信したり、受信したりできます。
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2006-06-04 10:08
JNI実験ページ
http://www.ki.rim.or.jp/~kuro/Java/JNI/index.html
のりすけ
会議室デビュー日: 2006/05/10
投稿数: 9
投稿日時: 2006-06-04 19:42
みなさんありがとうございます!
JNIを使うやり方でも、WebLogicの、JMS C APIを使うやり方でもどちらでもできそうですね
ただ、どちらもJNIを使うと思うのですが、やはり性能は落ちますか?作り方にもよるとは思うのですが。。。注意点など、ご存知の方がいらっしゃったら教えてください。

あと、Java-C間でプロセス間通信をする方式って、他にどんなものがありますか?
私は、ソケットくらいしか思いつきませんでした。。。
a-san
ベテラン
会議室デビュー日: 2004/06/01
投稿数: 53
投稿日時: 2006-06-06 01:27
C言語側のやりたい処理により、作り方は変わる思います。
単純なライブラリ的な処理なら、JNIで十分でしょう。
初期処理、終了処理が重く、レスポンスが要求されるなら、常時動いていて、ソケットでやり取りする方がよいでしょう。
別サーバで動き、キューイングや通信の信頼性を高めたいなら、MQなどミドルウェアを使った方がよいかもしれません。

スキルアップ/キャリアアップ(JOB@IT)