1

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

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

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

有什么帮助或困难可能促使我找到解决方案吗?

4

1 回答 1

5

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

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

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

但是,如果您只使用一个数据模块来处理所有传入的 HTTP 请求,则需要进行适当的序列化。使用后关闭连接无济于事,一次只能从一个线程使用连接。

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

于 2014-10-02T18:06:30.373 回答