2009-04-07 7 views
1

私は、以下のように、私がそれを理解するために必要なシステムを持っています。 Tomcatが提供するサーブレットが起動し、多数の共有(分散)フィールドを持つスレッドを生成します。 Ergo、私はスレッドをrootとして設定し、サーブレットのコンストラクタからスレッドを正常に生成しようとします。しかし、ログは、私が共有するコンストラクタを実行しようとしているRunnableが決して終了しないことを示しています。何が原因でしょうか?テラコッタとサーブレット/共有スレッドについて

私のサーブレットでは、ルートとして共有しようとするスレッドのインスタンスがあり、ロギングはrunnableを実装しているクラス(UpdaterThread)のコンストラクタの終わりまですべて正常であることを示します。

私は次があります。

サーブレット:

印刷 "新しいスレッドを作成します"。 updaterThread =新しいUpdaterThread(args); print "起動中のスレッド"; 新しいスレッド(updaterThread).start();

ここでは、Tomcatのコンソール出力に「Launching Thread」と表示されることはありませんが、UpdaterThreadコンストラクタの最後まですべてのprint文を見ることができます。 UpdaterThreadは、マップ(サーブレットによって共有される)、文字列、SQL接続、ステートメント、ReentrantReadWriteLock、Long、および一時的なブール値、および共有されないLongへの参照を保持します。

UpdaterThreadのコンストラクタでは、共有マップへの参照とStringの値を渡します。テラコッタを有効にしなければ、私はこの点を超えることができます。 tomcatとterracottaが何のエラーメッセージも出さずにハングアップする原因は何ですか? rrwlロックは、後のメソッドが呼び出されるまで使用されませんが、プログラムの実行にはそれほど時間がかかりません。助けて?

答えて

2

解決済み。私はTerracottaサーバーを再起動しなければなりませんでした。それはStatementとConnectionが一過性にする必要のある移植不可能なクラスであることを示すエラーを表示させました。

関連する問題