Когда я вызываю URL-адрес http://192.168.2.26:8080/rest/RestSample/season/1.json
, я получаю сообщение об ошибке:
«Ошибка», «ajp-bio-8012-exec-4», «01.03.13», «16:51:58», «RestSample», «объект не является экземпляром объявляющего класса Конкретная последовательность файлов включено или обработано: C:\path_to\api\service.cfc'' "
Это файл /api/service.cfc
:
<cfscript>
component restpath="season" rest="true"
{
remote query function getSeasonsByUserId(numeric userid restargsource="Path") httpmethod="GET" restpath="{userid}"
{
var response = "";
var qry = new Query();
var userQry = "";
qry.setSQl("select * from mytable where userID = :userid");
qry.addParam(name="userid", value="#arguments.userid#", cfsqltype="cf_sql_numeric");
userQry = qry.execute().getResult();
if(userQry.recordcount == 0)
{
response = userQry;
} else {
throw(type="Restsample.SeasonsNotFoundError", errorCode='404', detail='Seasons not found');
}
return response;
}
}
</cfscript>
Редактировать №1: в соответствии с этим руководством: http://www.anujgakhar.com/2012/02/20/using-rest-services-in-coldfusion-10/
Редактировать №2: мой application.cfc
<cfscript>
component output="false"
{
this.name = "RestSample";
this.applicationTimeout = createTimespan(0,0,0,0);
this.datasource = "mydsn";
this.username = "";
this.password = "";
//this.restsettings.skipCFCWithError = true;
public boolean function onRequestStart()
{
restInitApplication(getDirectoryFromPath(getCurrentTemplatePath()), this.name);
return true;
}
}
</cfscript>
Также хотел бы отметить, что обновление служб REST в админке ВСЕГДА дает мне следующее сообщение:
Unable to refresh REST service.
Application RestSample could not be initialized.
Reason: The application does not contain any rest enabled CFCs.
The application does not contain any rest enabled CFCs.
Однако я могу без проблем удалить их и добавить через onRequestStart().
Изменить №3
Моя текущая структура
/api/main/service.cfc /api/application.cfc /api/index.cfm
приложение.cfc
<cfscript>
component output="false"
{
this.name = "RestSample";
this.applicationTimeout = createTimespan(0,0,0,0);
this.datasource = "mydsn";
this.username = "";
this.password = "";
this.restsettings.skipCFCWithError = true;
public boolean function onRequestStart()
{
restInitApplication(getDirectoryFromPath(getCurrentTemplatePath()).concat("main\"), this.name);
return true;
}
}
</cfscript>
сервис.cfc
<cfscript>
component restpath="season" rest="true"
{
remote Query function getSeasonsByUserId(numeric userid restargsource="Path") httpmethod="GET" restpath="{userid}"
{
var response = "";
var qry = new Query();
var userQry = "";
qry.setSQl("select * from mytable where userID = :userid");
qry.addParam(name="userid", value="#arguments.userid#", cfsqltype="cf_sql_numeric");
userQry = qry.execute().getResult();
return userQry;
}
}
</cfscript>
Я все еще получаю следующую ошибку:
'object is not an instance of declaring class
return userQry;
, чтобы увидеть, где ошибка вообще. (p.s.== 0
задом наперёд и в любом случае не нужен.) - person Peter Boughton   schedule 02.03.2013restInitApplication
вне каких-либо функций (в учебнике это есть в onRequestStart, поэтому, если у вас есть то же самое, то, вероятно, это что-то другое). - person Peter Boughton   schedule 02.03.2013/* comments */
в REST CFC:/ bugbase .adobe.com/index.cfm?event=bug&id=3119366 - person Peter Boughton   schedule 02.03.2013