Невозможно обновить CFC CF9 при использовании application.cfm

Мне было поручено внести некоторые изменения в старое приложение, и я создал новую страницу, которой был передан параметр URL-адреса page_name, который, как вы уже догадались, является именем страницы с добавленным .cfm. Итак, в спешке я продолжил использовать его, строил свой CFC и использовал page_name в качестве идентификатора для записи. Затем я понял, что это имя может дублироваться в таблице, и изменил этот параметр URL-адреса, чтобы использовать уникальный page_id. Я модифицировал свой CFC, чтобы использовать новый ключ, и ничего не сработало. Итак, я начал просматривать свой код и понял, что сделал опечатку, начал комментировать и, наконец, выгрузил свой объект CFC, и вуаля, ни одно из сделанных мной правок на самом деле не использовалось. Это было довольно очевидно, так как page_name было строкой, а page_id числом.

Итак, я начал гуглить, первое, что я увидел, как настроить вещи в CFAdmin. У меня нет к нему доступа, и перезапуск сервера невозможен, так как я использую RDS для работы с кодом. Следующее, что я попробовал, это добавить applicationStop(), onApplicationStart() к моему Application.cfc. Проблема в том, что Application.cfc на самом деле является Application.cfm. Итак, повозившись с тегом <cfapplication ... > и ничего не обновив, я обращаюсь за помощью.

Так есть ли быстрое решение для этого? Должен ли я продолжить и создать application.cfc? Надеюсь, я объяснил себя, и извините за весь текст.


person Rob M    schedule 19.11.2013    source источник
comment
вы должны иметь возможность изменить application.name на что-то новое, что обновит приложение   -  person Matt Busche    schedule 20.11.2013
comment
Похоже, создание Application.cfc заслуживает внимания. Затем вы можете легко вызвать onApplicationStart() из onRequestStart(), когда вам нужно обновить переменные приложения.   -  person Dan Bracuk    schedule 20.11.2013


Ответы (2)


Убедитесь, что ваш cfc привязан либо к сеансу, либо к области приложения.

Если это так, то вы можете переименовать приложение в application.cfm, и оно сбросит объект.

Если ваш cfc НЕ привязан к сеансу или области приложения, у вас проблема с кэшированием. Вам нужно перейти в админку CF -> Настройки сервера -> вкладка Кэш и снять галочку component cache и, возможно, некоторые другие.

Дополнительные рекомендации см. в разделе Компоненты ColdFusion, наследующие функции других.

person James A Mohler    schedule 19.11.2013
comment
Название приложения поменял, а кости нет. У меня нет доступа к CFADMIN, поэтому мне, вероятно, придется получить для этого разрешение. - person Rob M; 20.11.2013
comment
Вы разрабатываете это приложение на удаленном сервере? Вероятно, это не лучший способ разработки приложений. Вы должны разрабатывать локально и отправлять окончательный код на сервер, особенно если у вас нет доступа к администратору CF. - person Scott Stroz; 20.11.2013
comment
@ScottStroz Я знаю, но мне приходится работать в рамках своей работы. - person Rob M; 20.11.2013
comment
Ваша работа должна включать следующие передовые методы разработки. Кодирование на удаленном сервере, особенно если это «производственный» сервер, чревато опасностью. - person Scott Stroz; 20.11.2013

Похоже, вас загнали в угол. Последний вариант, ЕСЛИ у вас есть доступ к самому серверу и вы можете получить доступ к C:\ или любому другому диску, на котором был установлен ColdFusion, вы можете просто вручную удалить сгенерированные файлы классов Java, которые использует сервер, со старым кодом. Когда ColdFusion обнаружит, что файла класса нет, он перекомпилирует только что измененный файл, и вау, черт возьми, ваши изменения будут в работе.

Для получения дополнительной информации см. публикацию: http://kalyan-coldfusion.blogspot.com/2010/08/how-coldfusion-works-and-its-key.html

Ваше здоровье

person BDavis    schedule 19.11.2013