0

Moqui フレームワーク (1.4.1) でアプリケーションを開発しているときに、bitronix トランザクション タイムアウトに関するイライラする問題が発生します。これが発生する理由を理解できません。これに対する唯一の解決策は、システムを再起動することです。

この問題をどのように修正できるかを本当に知りたいです。

例外はこのようなものです

例外のスクリーンショット

4

2 に答える 2

0

トランザクション タイムアウトの設定は、トランザクションが開始される場所で行われます。これは、サービスや画面などの Moqui ツールを使用して記述されたコード、または Moqui TransactionFacade または JTA インターフェイスを直接使用する Java/Groovy/etc コードにあります。

screen.@begin-transaction 属性を設定しない限り、デフォルトでは Moqui 画面はトランザクションで実行されません。問題は長時間実行されるサービスにある可能性があり、デフォルトでは Moqui サービスはトランザクションで実行されます。トランザクションであるサービスの service.@transaction-timeout 属性を使用してタイムアウトを設定します。デフォルトでは、サービスはトランザクションがあればそれを使用するため、これはトランザクションが実際に開始される最も外側のサービスにある必要があります。

サービスとトランザクション管理の詳細については、moqui.org からダウンロードできる Making Apps with Moqui book を参照してください。

コードに別の問題がある可能性があります。それは、ブラウザ リクエストのソケット タイムアウトです (スクリーンショットのログにも表示されます)。これを回避する方法はいくつかありますが、ブラウザがタイムアウトしたときなど、簡単に制御できないものもあります。優れた UI を実現するためには、このようなタイムアウトが発生し始める一般的な 30 ~ 60 秒以上ユーザーを座って待たせないことも最善です。コードをバックグラウンドで実行するように変更し、必要に応じて画面に何かを追加して、ジョブのステータスや進行状況を監視します。

于 2014-09-17T14:18:16.447 に答える