- PR -

Apache2を入れるとCで作ったDLLがJNIで動きません(不安定?)

1
投稿者投稿内容
すてぃーぶ
会議室デビュー日: 2003/05/20
投稿数: 13
投稿日時: 2005-10-27 19:09
件名の日本語が変ですみません。
Cで作られたアプリをJavaからJNIを使って呼び出しています。
Tomcat4.1.31で実行すると快適に動作しているのですが、HTTPにApache2.0.49を組み込んで実行すると、最初は動作するのですが、ブラウザを閉じて再度ブラウザを起動、実行、とすると動作しなくなります。動作しなくなると、サーバーPC自体を再起動しなくてはなりません。
JNIを使わない他のページ機能は問題なく動作していますので、JNIのみが何らかの影響を受けているものと推測されるのですが、わかりません。
このような現象、体験された方がありましたら、何かヒントいただけないでしょうか?
以下、環境などです。
サーバー:
windows2000Professional
Tomcat4.1.31
JDK1.4.2.08
Apache2.0.49+Openssl0.9.7d+mod_jk2
SSLは仮なのでダミーです。
クライアント:
windows2000Professional+IE6.0



[ メッセージ編集済み 編集者: すてぃーぶ 編集日時 2005-10-27 19:11 ]
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-10-27 19:18
手前にApacheがあろうとなかろうと Tomcat 内部の JNI 呼び出しは独立して行われておりますので妙な話ですね。
動作しなくなる、とはその JNI を使っているページだけ反応がなくなるのでしょうか?それとも Tomcat のプロセス丸ごと落ちてしまうのでしょうか?
サーバPCを再起動しないといけない、というのはマシン全体が固まってしまうのでしょうか?
Tomcat や Apache の再起動すらできないということですか?
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-10-27 19:20
JVM が落ちてしまうようなケースだと以下のドキュメントが参考になるかもしれません。
・BEAトラブルシューティング ガイド サポート診断パターン > バイナリ コア ファイルの分析
http://www.beasys.co.jp/cs/support_news/product_troubleshooting/System_Core_Pattern.html
・BEAトラブルシューティング ガイド サポート診断パターン > コア ダンプが作成されない JVM クラッシュの調査
http://www.beasys.co.jp/cs/support_news/product_troubleshooting/JVM_Crash_wout_Dump_Pattern.html
すてぃーぶ
会議室デビュー日: 2003/05/20
投稿数: 13
投稿日時: 2005-10-27 19:25
ありがとうございます。
「動作しなくなる」とは、JNI呼び出しを含むページのみのことです。
具体的には、呼び出しているCのDLLは、ファイルを読み込んでPDF化するモジュールで、このモジュールを呼び出してブラウザにPDFファイルを表示させています。
不具合時には、PDFが表示されるべきフレーム枠が開き、acrobatが起動するのですが、PDFファイルが取得できずに、acrobatもフレームに埋め込みされず、そのまま白い画面のままになっている、という状態です。
画面を戻って、他の関係ない画面遷移は普通に動きます。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-10-27 19:35
OS を再起動しないといけない、ということは Tomcat や Apache を再起動しても現象が続くということでしょうか?
Tomcat のログに何かメッセージは記録されていませんか?
すてぃーぶ
会議室デビュー日: 2003/05/20
投稿数: 13
投稿日時: 2005-10-27 21:55
PC再起動が必ずしも必要、というわけではなさそうです。
何度かTOMCAT/Apacheの再起動を繰り返していると、正常動作することもあります。
一定時間が経過すると正常に戻るのかな?という疑いもややあります。
すてぃーぶ
会議室デビュー日: 2003/05/20
投稿数: 13
投稿日時: 2005-11-08 18:14
解決と報告。すべてが明確に判ったわけではありませんが...。
原因は、現象面だけから推測ですが、一応解決しましたのでご報告を。
@.ページ要求のバグ
WEBからのページ要求にBUGがあり、1回の画面遷移で2〜3回のページ要求が発効されていました。
A.TOMCAT/Apacheのビヘビア
これに対し、TOMCAT単体では2回目以降の要求を捨てているように見られますが、Apacheが入ると、すべての要求を受け付けてしまっているようです。
B.DLLの仕様
JNIで呼び出しているDLLが、実はマルチスレッドに対応していないらしく、複数の要求が集中すると自爆してしまう、というオチ。
C.対処
DLLの呼び出しを行うクラスをsyncronizedにして、順次処理するように変更。@のバグ対応は当然です。

関心を持ってくださった皆様、特に相手をしてくださったインギさま、ありがとうございました。
なお、Aの現象についてはログを見た上での推測です。正確なところが判る方があれば、解説してくださるとありがたいです。


@.
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-11-08 18:58
なかなか奇妙な現象だったのでちょっと気に掛けておりました。
解析お疲れ様です。なかなか複雑に条件が絡んでいて厄介でしたね。
1

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