0

Web アプリケーションと jar アプリケーションがあります。Web アプリケーションで接続オブジェクトを作成し、それをメソッド引数として jar のクラスに渡し、jar で渡された接続に基づいてストアド プロシージャを実行しようとしています。

しかし、callStmt.executeUpdate() になると、ストアド プロシージャの実行が停止します。

私が間違いを犯している場所に光を当ててもらえますか?

ありがとう

さらに追加 --

  1. 例外は発生していません。停止するだけです。

  2. Webアプリで私はこれをやっています- jar_common_class().deductMoney(Id,paidAmt,vle,cardno,pin,username,Service ,connection ,"");

  3. それからjarで私はこれをやっています - public String[] deductMoney(String ID, double amount, String uni, String cardNo, String pin, String username, String service, Connection externalCon, String aff)

4

1 に答える 1

0

私は超能力を感じているので、質問に情報がなくても、経験に頼るつもりです...

私の推測では、ストアド プロシージャは Web アプリが使用しているのと同じデータを更新しており、ストアド プロシージャはターゲット データをロックしようとしていますが、Web アプリがデータに何らかのロックを保持しているため、できません。そして決して手放さない。そのため、ストアド プロシージャは、Web アプリがロックを解除するのを (正しく) 待機しています。

これをテストするには、ストアド プロシージャ Java アプリをコマンド ラインから直接呼び出します。その後、停止し、Web アプリを強制終了します。ストアド プロシージャが続行して完了するかどうかを確認します。

この場合、各アプリ要求しているロックの種類を調べたり (たとえば、Web アプリの分離レベルが「反復可能な読み取り」である可能性があり、これは通常は適切な選択ではありません)、および/またはロックがいつ解放されるかを調べます。

于 2012-04-06T13:37:52.450 に答える