Guida eccezione ColdFusion: coldfusion.runtime.NoOperScope non può essere trasmesso a coldfusion.runtime.ApplicationScope
-
03-07-2019 - |
Domanda
Riscontro una causa di eccezione dalla riga CFINVOKEARGUMENT del seguente frammento:
<CFOUTPUT query="cfmx.Messages"><CFSILENT>
<CFINVOKE component="com_VUI_RemoveIllegalChars" method="formatString" returnvariable="cfmx.formattedMessage">
<CFINVOKEARGUMENT name="inString" value="#TTSText#">
</CFINVOKE>
</CFSILENT>
Il testo esatto dell'eccezione è:
Errore durante il cast di un oggetto di tipo coldfusion.runtime.NoOperScope impossibile essere scelto per coldfusion.runtime.ApplicationScope a un tipo incompatibile. Questo di solito indica un errore di programmazione in Java, anche se potrebbe anche significare che hai provato a usare un oggetto estraneo in a modo diverso da come è stato progettato. coldfusion.runtime.NoOperScope impossibile essere scelto per coldfusion.runtime.ApplicationScope
Note:
- cfmx.Messages è un oggetto restituito in un CFPROCRESULT e all'esame tramite CFDUMP contiene i dati previsti
- com_VUI_RemoveIllegalChars non è cambiato affatto
- TTSText è una colonna valida nel set di risultati
- Il mio sospetto è che questo potrebbe essere un problema di configurazione di ColdFusion
Grazie in anticipo a chiunque possa far luce su ciò che potrebbe causare questo problema.
EDIT: dump completo dal registro delle eccezioni:
" errore " " jrpp-11 " " 01 Senza / 06/09 " " 15: 11: 37 " ,, " coldfusion.runtime.NoOperScope non può essere assegnato a coldfusion.runtime.ApplicationScope La sequenza specifica di file incluso o elaborato è: C: \ Inetpub \ wwwroot \ ermsvui \ proc_playsitestatus.cfm, riga: 30 " java.lang.ClassCastException: coldfusion.runtime.NoOperScope impossibile essere scelto per coldfusion.runtime.ApplicationScope a coldfusion.runtime.RuntimeServiceImpl.getFullTagName (RuntimeServiceImpl.java:625) a coldfusion.runtime.TemplateProxyFactory.getFullName (TemplateProxyFactory.java:1082) a coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:184) a coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:157) a coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:1267) a coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:1218) a coldfusion.tagext.lang.InvokeTag.doEndTag (InvokeTag.java:358) a cfproc_playsitestatus2ecfm1824676963.runPage (C: \ Inetpub \ wwwroot \ ermsvui \ proc_playsitestatus.cfm: 30) a coldfusion.runtime.CfJspPage.invoke (CfJspPage.java:192) a coldfusion.tagext.lang.IncludeTag.doStartTag (IncludeTag.java:366) a coldfusion.filter.CfincludeFilter.invoke (CfincludeFilter.java:65) a coldfusion.filter.ApplicationFilter.invoke (ApplicationFilter.java:279) a coldfusion.filter.RequestMonitorFilter.invoke (RequestMonitorFilter.java:48) a coldfusion.filter.MonitoringFilter.invoke (MonitoringFilter.java:40) a coldfusion.filter.PathFilter.invoke (PathFilter.java:86) a coldfusion.filter.LicenseFilter.invoke (LicenseFilter.java:27) a coldfusion.filter.ExceptionFilter.invoke (ExceptionFilter.java:70) a coldfusion.filter.ClientScopePersistenceFilter.invoke (ClientScopePersistenceFilter.java:28) a coldfusion.filter.BrowserFilter.invoke (BrowserFilter.java:38) a coldfusion.filter.NoCacheFilter.invoke (NoCacheFilter.java:46) a coldfusion.filter.GlobalsFilter.invoke (GlobalsFilter.java:38) a coldfusion.filter.DatasourceFilter.invoke (DatasourceFilter.java:22) a coldfusion.CfmServlet.service (CfmServlet.java:175) a coldfusion.bootstrap.BootstrapServlet.service (BootstrapServlet.java:89) a jrun.servlet.FilterChain.doFilter (FilterChain.java:86) a coldfusion.monitor.event.MonitoringServletFilter.doFilter (MonitoringServletFilter.java:42) a coldfusion.bootstrap.BootstrapFilter.doFilter (BootstrapFilter.java:46) a jrun.servlet.FilterChain.doFilter (FilterChain.java:94) a jrun.servlet.FilterChain.service (FilterChain.java:101) a jrun.servlet.ServletInvoker.invoke (ServletInvoker.java:106) a jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42) a jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.java:284) a jrun.servlet.ServletEngineService.dispatch (ServletEngineService.java:543) a jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203) a jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) a jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) a jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266) a jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)
Lo snippet di codice sopra riportato contiene le righe 28 - 32 di proc_playsitestatus.cfm
EDIT:
Il valore del testo TTS in questo caso è " Il messaggio per il test è "
La fonte di com_VUI_RemoveIllegalChars:
<CFCOMPONENT displayname="Format a string for use in VoiceXML" hint="returns a string formatted for voiceXML" output="yes">
<CFFUNCTION name="formatString" access="public" returntype="string" displayname="Format String" hint="Formats String for VoiceXML">
<cfargument name="inString" type="string" required="true" displayname="input string" hint="pass in the string to be formatted">
<CFSET v.messageWithoutChars = replace(inString, "<", "", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, ">", "", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "&", "and", "all")>
<CFSET v.messageWithoutChars = REReplace(v.messageWithoutChars, "\.+", ".", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "!", ".", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "\", " ", "all")>
<CFSET v.messageWithoutChars = replace(v.messageWithoutChars, "/", " ", "all")>
<CFSET v.messageWithoutChars = REReplace(v.messageWithoutChars, "[[:punct:]]{2,}", " ", "all")>
<cfreturn v.messageWithoutChars>
</CFFUNCTION>
</CFCOMPONENT>
Soluzione 2
L'impostazione " Abilita variabili applicazione " non era abilitato nella configurazione di ColdFusion.
Altri suggerimenti
Sei sicuro di quella linea #? Sto pensando che l'errore sia nel metodo CFC stesso. Puoi verificarlo e, se ho ragione, pubblicare la riga dal metodo CFC?
Senza il contenuto del componente com_VUI_RemoveIllegalChars
e il valore della variabile TTSText
, qui non ci stai dando molto da fare. Potresti postare quelli? (Capisco che a volte non è possibile per motivi NDA / ecc.)