2012-04-22 4 views
1

Когда я пытаюсь создать экземпляр одного CFC из двух разных CFC, ColdFusion возвращает 500 ошибок. Я попытался сделать один из CFC другим, но это не решило проблему. Возможно ли это, или я просто делаю что-то неправильно?Выполнение одного CFC дважды

<!--- one.cfc ---> 
<cfcomponent name="FirstCFC"> 
    <cfset this.Tools = createObject('component', 'toolbox').init()> 
.... 
</cfcomponent> 

<!--- two.cfc ---> 
<cfcomponent name="SecondFC"> 
    <cfset this.Tools = createObject('component', 'toolbox').init()> 
.... 
</cfcomponent> 

<!--- toolbox.cfc ---> 
<cfcomponent name="Toolbox"> 
    <cffunction name="init" access="public"> 
     <cfreturn this> 
    </cffunction> 

    <cffunction name="someFunc" access="public"> 
    </cffunction> 
</cfcomponent> 

Вот скриншот 500 ошибок

enter image description here

Вот образец

http://pastebin.com/zJ1zpHYy

+1

Ошибка 500 обычно указывает на проблему с настройкой вашего веб-сервера. Я не вижу ничего плохого в вашем коде. –

+0

Предполагая, что все три CFC находятся в одной и той же папке –

+0

500 сообщений msg, вероятно, также говорит «включите надежную обработку исключений, чтобы увидеть лучшую ошибку» (или что-то в этом настроении). Сделайте это, чтобы получить правильную ошибку. Или, возможно, включить «дружественные сообщения об ошибках», если вы используете IE. Вероятно, это станет более очевидным, какова ваша проблема. –

ответ

3

стек Java след вы включили более "полный" код является индикатором ошибки бесконечной ошибки рекурсии. Будьте осторожны при создании объектов типа A, которые имеют новый объект типа B в своем псевдоконструкторе. Если объект B сам создает объект типа A в его псевдо-конструкторе, у вас есть бесконечная рекурсия создаваемых объектов, заканчивающаяся уродливой трассировкой стека java.

+1

Да - Я вижу, что это вызывает ошибку, но ничто в коде не показывает это. Хотелось бы, чтобы он отправил больше кода. –

+0

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

1

Shawn is right. Он разместил больше кода, и вы можете видеть, что two.cfc делает tools.cfc и tools.cfc делает two.cfc.

Вам нужно перейти к настройке стиля инъекций (например, ala ColdSpring).

Смежные вопросы