并发 coldfusion ORM 数据库请求失败
Concurrent coldfusion ORM database requests fail
我是 coldfusion 的新手,正在尝试 ORM(我相信是 Hibernate,我根本不知道)
我在尝试快速连续调用两个 CF 页面时遇到了问题。两个页面的代码超级简单:
getAppointments.cfm:
<cfscript>
ORMReload();
appointments = serializeJSON(EntityLoad("Appointment"));
</cfscript>
<cfoutput>#appointments#</cfoutput>
getRooms.cfm:
<cfscript>
ORMReload();
rooms = serializeJSON(EntityLoad("Room"));
</cfscript>
<cfoutput>#rooms#</cfoutput>
我用来调用它们的代码是 jQuery/AJAX:
var appointments;
var rooms;
$(document).ready(function () {
loadAppointments();
loadRooms();
});
function loadAppointments() {
$.ajax({
type: 'get',
url: 'getAppointments.cfm'
}).done(function (response) {
appointments = JSON.parse(response);
}).fail(function (response) {
var message = response.status + " - " + response.statusText;
alert("Failed to load appointments: " + message);
});
}
function loadRooms() {
$.ajax({
type: 'get',
url: 'getRooms.cfm'
}).done(function (jsonString) {
rooms = JSON.parse(jsonString);
}).fail(function (response) {
var message = response.status + " - " + response.statusText;
alert("Failed to load rooms: " + message);
})
}
如果我在 loadRooms()
被调用之前设置一个断点来暂停执行,一切都很好。如果我让代码 运行 直接通过,我会得到一个 500 错误,所以很明显,由于 AJAX 来电。
我在 IIS(本地主机)上 运行ning CF,有一个 SQL 服务器数据库。
None 我看过的关于 CF 的教程都涵盖了这种情况。我知道我可以在 JS 函数中延迟执行,但这只会掩盖潜在的问题。
任何人都可以指出我的解决方案吗? CF 中有类似 C# 锁的东西吗?
您在每次调用时应用 ORMReload(),这会导致重新加载所有实体、清除 orm 缓存等。
请阅读有关 ORMReload() 的信息,只要您在实体 CFC 中进行更改,就应该只使用一次。
我是 coldfusion 的新手,正在尝试 ORM(我相信是 Hibernate,我根本不知道)
我在尝试快速连续调用两个 CF 页面时遇到了问题。两个页面的代码超级简单:
getAppointments.cfm:
<cfscript>
ORMReload();
appointments = serializeJSON(EntityLoad("Appointment"));
</cfscript>
<cfoutput>#appointments#</cfoutput>
getRooms.cfm:
<cfscript>
ORMReload();
rooms = serializeJSON(EntityLoad("Room"));
</cfscript>
<cfoutput>#rooms#</cfoutput>
我用来调用它们的代码是 jQuery/AJAX:
var appointments;
var rooms;
$(document).ready(function () {
loadAppointments();
loadRooms();
});
function loadAppointments() {
$.ajax({
type: 'get',
url: 'getAppointments.cfm'
}).done(function (response) {
appointments = JSON.parse(response);
}).fail(function (response) {
var message = response.status + " - " + response.statusText;
alert("Failed to load appointments: " + message);
});
}
function loadRooms() {
$.ajax({
type: 'get',
url: 'getRooms.cfm'
}).done(function (jsonString) {
rooms = JSON.parse(jsonString);
}).fail(function (response) {
var message = response.status + " - " + response.statusText;
alert("Failed to load rooms: " + message);
})
}
如果我在 loadRooms()
被调用之前设置一个断点来暂停执行,一切都很好。如果我让代码 运行 直接通过,我会得到一个 500 错误,所以很明显,由于 AJAX 来电。
我在 IIS(本地主机)上 运行ning CF,有一个 SQL 服务器数据库。
None 我看过的关于 CF 的教程都涵盖了这种情况。我知道我可以在 JS 函数中延迟执行,但这只会掩盖潜在的问题。
任何人都可以指出我的解决方案吗? CF 中有类似 C# 锁的东西吗?
您在每次调用时应用 ORMReload(),这会导致重新加载所有实体、清除 orm 缓存等。
请阅读有关 ORMReload() 的信息,只要您在实体 CFC 中进行更改,就应该只使用一次。