当2个事务处于打开状态时(使用FireDac组件和FireBird dbms),如何防止Delphi抛出异常?

时间:2014-10-02 17:54:02

标签: delphi firebird firedac

我使用FireDac和HTTPServer组件使用Delphi构建了一个Web API:该应用程序正在使用由firebird提供支持的dbms。

一切正常,直到我开始模拟对同一API端点的多个请求。这导致内部服务器异常报告在已经打开事务时打开第二个trasaction。

我知道所有连接在被使用后都被关闭,对象被破坏以防止内存泄漏但我无法理解为什么应用程序会触发异常。

任何有助于我解决问题的帮助或强硬措施?

1 个答案:

答案 0 :(得分:5)

HTTP服务器将同时处理多个请求。

因此,如果两个客户端同时尝试访问同一资源(URL),则服务器将需要两组数据库连接和数据访问组件。

如果您的应用程序使用不同的对象 - 每个客户端一组 - 并以线程安全的方式执行此操作,则两个连接都应该正常工作。

但是,如果仅使用一个数据模块来处理所有传入的HTTP请求,则需要进行正确的序列化。使用后关闭连接没有帮助,连接必须一次只能从一个线程使用。

因此,要了解错误的潜在原因,需要有关服务器实际设计的更多信息。