Я обнаружил причину исключения в строке CFINVOKEARGUMENT следующего фрагмента:
<CFOUTPUT query="cfmx.Messages"><CFSILENT>
<CFINVOKE component="com_VUI_RemoveIllegalChars" method="formatString" returnvariable="cfmx.formattedMessage">
<CFINVOKEARGUMENT name="inString" value="#TTSText#">
</CFINVOKE>
</CFSILENT>
Точный текст исключения:
Ошибка приведения объекта типа
coldfusion.runtime.NoOperScope не может
быть брошенным на
coldfusion.runtime.ApplicationScope to
несовместимый тип. Это обычно
указывает на ошибку программирования в Java,
хотя это также может означать, что у вас есть
пытался использовать посторонний объект в
иначе, чем это было задумано.
coldfusion.runtime.NoOperScope не может
быть брошенным на
coldfusion.runtime.ApplicationScope
Примечания:
- cfmx.Messages - это объект, возвращаемый в CFPROCRESULT, и при проверке через CFDUMP он содержит ожидаемые данные
- com_VUI_RemoveIllegalChars не изменился вообще
- TTSText является допустимым столбцом в наборе результатов
- Я подозреваю, что это может быть проблемой конфигурации ColdFusion
Заранее спасибо всем, кто может пролить свет на то, что может быть причиной этой проблемы.
РЕДАКТИРОВАТЬ: Полный дамп из журнала исключений:
"Ошибка", "jrpp-11", "01/06/09", "15:11:37" ,, "coldfusion.runtime.NoOperScope
не может быть приведен к
coldfusion.runtime.ApplicationScope
Конкретная последовательность файлов
включено или обработано:
C: \ Inetpub \ Wwwroot \ ermsvui \ proc_playsitestatus.cfm,
линия: 30 "
java.lang.ClassCastException:
coldfusion.runtime.NoOperScope не может
быть брошенным на
coldfusion.runtime.ApplicationScope
в
coldfusion.runtime.RuntimeServiceImpl.getFullTagName (RuntimeServiceImpl.java:625)
в
coldfusion.runtime.TemplateProxyFactory.getFullName (TemplateProxyFactory.java:1082)
в
coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:184)
в
coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:157)
в
coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:1267)
в
coldfusion.runtime.TemplateProxyFactory.resolveName (TemplateProxyFactory.java:1218)
в
coldfusion.tagext.lang.InvokeTag.doEndTag (InvokeTag.java:358)
в
cfproc_playsitestatus2ecfm1824676963.runPage (C: \ Inetpub \ Wwwroot \ ermsvui \ proc_playsitestatus.cfm: 30)
в
coldfusion.runtime.CfJspPage.invoke (CfJspPage.java:192)
в
coldfusion.tagext.lang.IncludeTag.doStartTag (IncludeTag.java:366)
в
coldfusion.filter.CfincludeFilter.invoke (CfincludeFilter.java:65)
в
coldfusion.filter.ApplicationFilter.invoke (ApplicationFilter.java:279)
в
coldfusion.filter.RequestMonitorFilter.invoke (RequestMonitorFilter.java:48)
в
coldfusion.filter.MonitoringFilter.invoke (MonitoringFilter.java:40)
в
coldfusion.filter.PathFilter.invoke (PathFilter.java:86)
в
coldfusion.filter.LicenseFilter.invoke (LicenseFilter.java:27)
в
coldfusion.filter.ExceptionFilter.invoke (ExceptionFilter.java:70)
в
coldfusion.filter.ClientScopePersistenceFilter.invoke (ClientScopePersistenceFilter.java:28)
в
coldfusion.filter.BrowserFilter.invoke (BrowserFilter.java:38)
в
coldfusion.filter.NoCacheFilter.invoke (NoCacheFilter.java:46)
в
coldfusion.filter.GlobalsFilter.invoke (GlobalsFilter.java:38)
в
coldfusion.filter.DatasourceFilter.invoke (DatasourceFilter.java:22)
в
coldfusion.CfmServlet.service (CfmServlet.java:175)
в
coldfusion.bootstrap.BootstrapServlet.service (BootstrapServlet.java:89)
в
jrun.servlet.FilterChain.doFilter (FilterChain.java:86)
в
coldfusion.monitor.event.MonitoringServletFilter.doFilter (MonitoringServletFilter.java:42)
в
coldfusion.bootstrap.BootstrapFilter.doFilter (BootstrapFilter.java:46)
в
jrun.servlet.FilterChain.doFilter (FilterChain.java:94)
в
jrun.servlet.FilterChain.service (FilterChain.java:101)
в
jrun.servlet.ServletInvoker.invoke (ServletInvoker.java:106)
в
jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42)в
jrun.servlet.JRunRequestDispatcher.invoke (JRunRequestDispatcher.java:284)
в
jrun.servlet.ServletEngineService.dispatch (ServletEngineService.java:543)
в
jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203)
в
jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320)
в
jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428)
в
jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable (ThreadPool.java:266)
в
jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)
Приведенный выше фрагмент кода содержит строки 28 - 32 proc_playsitestatus.cfm
EDIT:
Значение текста TTS в этом случае "Сообщение для теста"
Источник 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>