有一个Web应用程序和一个jar应用程序。我在Web应用程序中创建一个连接对象,并将其作为方法参数传递给jar的类,并尝试根据jar中传递的连接执行存储过程。 / p>
但是当执行调用Stmt.executeUpdate()
时,存储过程的执行会停止如果我犯错误,请你点亮一下吗?
由于
更多补充 -
我没有得到任何例外。它只是暂停。
我这样做 -
jar_common_class().deductMoney(Id,paidAmt,vle,cardno,pin,username,Service ,connection ,"");
然后在jar中我这样做 -
public String[] deductMoney(String ID, double amount, String uni, String cardNo, String pin, String username, String service, Connection externalCon, String aff)
答案 0 :(得分:0)
我感觉很精神,所以没有任何信息我会依赖经验......
我的猜测是存储过程正在更新Web应用程序正在使用的相同数据,并且存储过程试图锁定目标数据,但不能因为Web应用程序正在持有某种锁定关于数据,永远不要放手。因此,存储过程只是(正确地)等待Web应用程序释放其锁定。
要对此进行测试,请直接从命令行调用存储的proc java应用程序,然后它应该暂停,然后终止您的Web应用程序 - 查看存储的proc是否继续并完成。
如果 ,请查看每个应用程序请求的锁类型(例如,Web应用程序的隔离级别可能是“可重复读取”,这通常是一个糟糕的选择)和/或检查何时释放锁等