繁体   English   中英

打开2个事务(使用FireDac组件和FireBird dbms)时,如何防止Delphi引发异常?

[英]How can I prevent Delphi from throwing exception when 2 transactions are open (using FireDac component and FireBird dbms)?

我使用FireDac和HTTPServer组件通过Delphi构建了一个Web API:该应用程序使用了由firebird驱动的dbms。

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

我知道所有连接在使用后都会关闭,并且为了防止内存泄漏也要销毁对象,但是我不明白为什么应用程序会触发异常。

有什么帮助或挑战可以促使我寻求解决方案吗?

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

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

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

但是,如果仅使用一个数据模块来满足所有传入的HTTP请求,则需要正确的序列化。 使用后关闭连接无济于事,一次只能在一个线程中使用连接。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM