2012-07-06 63 views
2

我不知所措。爲什麼我在生產環境中不能在ColdFusion CFC中調用函數?

我通過Ajax發佈到Coldfusion8 cfc,雖然它在本地計算機上正常工作,但在實時服務器上,我無法調用此CFC中的任何函數或擴展CFC。

我想這樣做:

<cfset LOCAL.response = THIS.commit() /> 

如果我傾倒:

<cfdump output="e:\path\to\dump.txt" label="catch" var="committing"> 
<cfdump output="e:\path\to\dump.txt" label="catch" var="#THIS#"> 
<cfset dickhead = THIS.Commit() > 
<cfdump output="e:\path\to\dump.txt" label="catch" var="out"> 

我越來越:

committing 
**************************************************************** 

catch - component services.form_service_user 
    extends controllers.form_switch 

Methods: 
    DEFAULTS 
     [function] 
      Arguments: none 
      ReturnType: struct 
      Roles: 
      Access: public 
      Output: false 
      DisplayName: 
      Description: 
PROCESS 
     [function] 
      Arguments: none 
      ReturnType: struct 
      Roles: 
      Access: remote 
      Output: true 
      DisplayName: 
      Description: 
COMMIT 
     [function] 
      Arguments: none 
      ReturnType: struct 
      Roles: 
      Access: public 
      Output: false 
    Description: 
      ... 

所以方法/函數有。但我沒有去。除了單獨的返回值和轉儲外,我還清除了提交函數。我既沒有獲得轉儲也沒有獲得回報價值。

問題
如果我在裏面的過程,爲什麼我不能叫活的服務器上COMMIT當它適用於製作精細?這是一種緩存或任何設置?另外,我無法使用CFadmin,所以我或多或少猜測盲目?

感謝您的任何信息!

編輯
的委託調用是在try/catch裏面:

<cftry>  
    <cfdump output="e:\dump.txt" label="catch" var="a"> 
    <cfdump output="e:\dump.txt" label="catch" var="#THIS#"> 
    <cfset LOCAL.Response = THIS.Commit() > 
    <cfdump output="e:\dump.txt" label="catch" var="b"> 

    <!--- COMMIT ERRORS ---> 
    <cfcatch> 
      <cfdump output="e:\dump.txt" label="catch" var="ERROR"> 
      <cfset LOCAL.Response.Success = false /> 
      <cfset LOCAL.Response.Errors = [["server_error","commit error"]] />  
    </cfcatch> 
</cftry> 

我得到了 「犯的錯誤」,由AJAX

+0

既然你使用了這個,我假設你在cfc裏面呢?什麼是引發的錯誤? – Busches 2012-07-06 18:31:47

+0

我沒有得到一個。那就是問題所在。我DUMP「a」THIS.COMMIT DUMP「B」,我只在轉儲文件中得到「a」。在THIS.COMMIT裏面,我只有DUMP「c」,它也沒有顯示出來......無知 – frequent 2012-07-06 18:35:49

+0

你有沒有放棄或者提交了什麼東西? – Busches 2012-07-06 18:38:03

回答

3

返回檢查訪問屬性上你的方法。

如果您正在使用同一組件中的其他方法調用組件中的方法(或從父組件繼承),則訪問必須是私有的,公共的或包的。它不能遙控。

確保您的ColdFusion映射對於活動服務器是正確的。

確保您已將所有應用程序文件部署到正確位置的實時服務器。

+0

似乎我錯過了一個javaloader文件....不知怎的,沒有讓它成爲活服務器的方式。我手動添加它,但爲了查看它是否工作,我將需要重新啓動服務器,對嗎? – frequent 2012-07-06 18:57:41

+0

如果你在談論馬克曼德爾的javaloader,你不應該需要重新啓動,但你永遠不知道jrun是否會對你很好。 – 2012-07-06 19:04:59

+0

這是一個。並且...我停止計算重新啓動我的本地服務器,直到我有映射和一切與Javaloader :-)但我遵循所有其他技巧(訪問=私人作爲繼承)映射輸出是正確的,缺少文件添加...和它仍然不運行。所以我最後的選擇是重新啓動jrun和CF8 ....星期一:-( – frequent 2012-07-06 19:08:36