Сопоставление CFC Coldfusion с внешними каталогами с CFC, которые ссылаются на другие папки

Я немного поковырялся, методом проб и ошибок, но я не нашел решения этой проблемы, которая у меня есть.

У меня есть такая структура папок (пример)

  • Приложение.cfc
  • Objects\
    • Object.cfc
  • Utilities\
    • Util.cfc
  • API\
    • Resources\
      • index.cfm
    • Приложение.cfc

У меня есть один сайт, который указывает на папку API (http://api.site.com), а другой — на общий корень (http://site.com).

Из Api\Resource\index.cfm. Я пытаюсь создать объект() в Objects\Object.cfc. Я настроил сопоставление либо в CF Admin, либо в API\Application.cfc с помощью this.mappings["/SiteRoot"] = "C:\wwwroot". Внутри index.cfm я делаю createObject("component","SiteRoot.Objects.Object"). Это правильный доступ к Object.cfc.

Проблема, с которой я столкнулся, заключается в том, что он терпит неудачу, потому что Object.cfc создает экземпляр Utilities\Util.cfc только с помощью createObject("component","Utilities.Util"). Ошибка в том, что не удается найти Utilities.Util.

В самом нижнем корне есть другие файлы, которые, очевидно, могут вызывать Object.cfc без проблем, поскольку он просто естественным образом попадает в папку «Утилиты».

Любые предложения Или мне действительно нужно просто полностью вырвать папку API из этого корня?

Спасибо!

ОБНОВЛЕНИЕ Пока что я не могу ответить на свой вопрос, но я хотел опубликовать его здесь до того, как вмешаются другие.

Несмотря на перезапуск приложения и перезапуск сервера приложений, один или два раза оно не работало. Затем внезапно все пошло и заработало, как я и ожидал. Object.cfc может правильно найти Util.cfc на основе его относительного пути.

Я проголосовал за тех, кто ответил, поскольку они были вполне жизнеспособными альтернативами и решениями, и я бы согласился с одним из них, если бы это не только начало работать. Демоны, говорю вам. Демоны.

Спасибо!


person Danomite    schedule 12.04.2012    source источник


Ответы (2)


Я думаю, что я бы изменил ваш второй вызов создания объекта (утилиты) на createObject("SiteRoot.Utilities.Util") ? Убедитесь, что одно сопоставление «управляет» начальной точкой для всех объектов, независимо от того, где они созданы.

person Mark A Kruger    schedule 12.04.2012

Если вы действительно не можете изменить свой код, просто создайте сопоставление ColdFusion под названием «Утилиты», указав на папку «Утилиты».

person baynezy    schedule 12.04.2012