2012-04-12 3 views
0

Ich habe etwas herumgestochert und habe versucht, Fehler zu finden, aber ich bin nicht auf der Suche nach einer Lösung für dieses Problem, das ich habe.Coldfusion CFC Zuordnung zu externen Verzeichnissen mit CFCs, die auf andere Ordner verweisen

Ich habe eine Ordnerstruktur wie folgt (Beispiel)

  • Application.cfc
  • Objekte \
    • Object.cfc
  • Utilities \
    • Util.cfc
  • API \
    • Resources \
      • index.cfm
    • Application.cfc

ich eine Website, die in der API-Ordner verweist (http://api.site.com) und ein anderer, der auf den gesamten Stamm verweist (http://site.com)

Von Api \ Resource \ index.cfm. Ich versuche CreateObject() auf Objects \ Object.cfc. Ich habe ein Mapping eingerichtet, entweder in CF Admin oder API \ Application.cfc mit this.mappings ["/ SiteRoot"] = "C: \ wwwroot". Innerhalb der index.cfm mache ich createObject ("component", "SiteRoot.Objects.Object"). Dies ermöglicht den korrekten Zugriff auf die Object.cfc.

Das Problem, das ich habe, ist, dass es fehlschlägt, weil Object.cfc die Utilities \ Util.cfc nur von createObject ("component", "Utilities.Util") instanziiert. Der Fehler ist, dass Utilities.Util nicht gefunden werden kann.

Es gibt andere Dateien im unteren Wurzelbereich, die Object.cfc offensichtlich problemlos aufrufen können, da sie natürlich nur in den Ordner "Dienstprogramme" gelangen.

Irgendwelche Vorschläge Oder muss ich wirklich den API-Ordner wirklich vollständig aus diesem Wurzel brechen?

Danke!

UPDATE Es lässt mich jetzt noch nicht meine eigene Frage beantworten, aber ich wollte hier, um vor anderen in läuteten.

Trotz der Anwendung reiniting und den Anwendungsserver neu zu starten, ein- oder zweimal war es nicht Arbeiten. Dann ging es plötzlich und funktionierte so, wie ich es erwartet hatte. Object.cfc konnte Util.cfc basierend auf seinem relativen Pfad korrekt finden.

Ich gab die Antworten an diejenigen, die reagierten, da sie vollkommen brauchbare Alternativen und Lösungen waren und mit einem von ihnen gegangen wären, hätte dies nicht gerade angefangen zu arbeiten. Dämonen, sage ich dir. Dämonen.

Danke!

Antwort

1

Ich denke, ich würde Ihren zweiten erstellen Objektaufruf (die Dienstprogramme) zu createObject ("SiteRoot.Utilities.Util") ändern?Sicherstellen, dass eine Zuordnung den Startpunkt für alle Objekte "regiert", unabhängig davon, wo sie instanziiert wurden.

1

Wenn Sie Ihren Code wirklich nicht ändern können, erstellen Sie einfach ein ColdFusion-Mapping namens Utilities, das auf den Ordner Utilities verweist.

Verwandte Themen