Coldfusion - метод не найден в компоненте после перезапуска служб

Я продолжаю сталкиваться с ошибкой «Метод не найден в компоненте» при перезапуске служб CF. После остановки и повторного запуска этот метод будет в порядке.

Ненайденный метод оказался самой последней добавленной функцией в CFC, которая производилась в течение многих лет. Ни одна из других функций в этом CFC не выдает ошибки, только эта. Я пытался очищать кэши и т. д. Все CFC определены в Application.cfm.

Кто-нибудь сталкивался с этой проблемой или есть какие-либо советы или решения?

Спасибо.


person AShoes    schedule 20.08.2020    source источник
comment
этот веб-сервис вообще связан?   -  person Dan Roberts    schedule 20.08.2020
comment
Вы говорите, что перезапуск службы CF во второй раз исправляет это, или последующий перезапуск является просто перезапуском вашего приложения CF с использованием определенного URL-адреса без перезапуска всей службы CF? Если первое, перезапуск службы CF в третий раз снова ломает ее, а перезапуск в четвертый раз снова исправляет? Если второе, можете ли вы рассказать что-нибудь еще о том, как вы создаете экземпляры CFC в application.cfm, и о недавно добавленном методе, и есть ли какой-либо код, который пытается вызвать этот метод во время запуска приложения?   -  person Sev Roberts    schedule 24.08.2020
comment
Задавая эти вопросы, потому что единственный раз, когда я когда-либо видел похожие симптомы, это было связано с зависимостями между различными компонентами с экземплярами, сохраняющимися в области приложения, где кто-то небрежно относился к порядку инициализации. Например, когда метод i() в later.cfc был вызван во время инициализации earlier.cfc - или при попытке установить значение внутри области variables. cfc (таким образом, за пределами init), где значение зависит от вызова метода в экземпляре области приложения компонент, который еще не существует во время компиляции.   -  person Sev Roberts    schedule 24.08.2020
comment
@SevRoberts Если кажется, что перезапуск вызывает проблему больше, чем остановка службы, ожидание минуты и затем запуск. Я обычно так исправляю ошибку. Мы инициируем CFC в приложении, используя: ‹cfset application.partCFC = createObject(component,assets/cfc/part)› например. Связи между этой функцией и любыми другими нет. Он просто вызывается в верхней части страницы и используется внутри для возврата значений из запроса.   -  person AShoes    schedule 25.08.2020


Ответы (1)


Не найденный метод оказался самой последней добавленной функцией

  • Метод помечен access="private"?
  • Метод отмечен access="package"?
  • Метод правильно написан?
  • Правильно ли написана ссылка на метод?
  • Могут ли быть вызваны другие методы в том же CFC?
  • Вы уверены, что развернули это изменение файла в рабочей среде?
  • Вы проверили фактический файл на сервере, чтобы убедиться, что метод существует?
  • Вы убедились, что ваш администратор CF указывает правильный путь сопоставления?
  • Это тот путь, где на самом деле находится этот CFC?
  • В админке CF не отмечен ли кеш компонентов?
person Adrian J. Moreno    schedule 20.08.2020
comment
Первый абзац вопроса, особенно второе предложение, делает многие из этих вопросов спорными. - person Dan Bracuk; 21.08.2020
comment
Спасибо за ответ Адриан. Я думаю, что большая часть этого не применима, как упомянул Дэн. Эта функция работает большую часть времени, эта проблема возникает только при перезагрузке или перезапуске служб и только для этой единственной функции в пределах одного и того же CFC. - person AShoes; 21.08.2020