2011-03-20 24 views
1

我希望這個問題不會浪費你的時間。如何通過ColdFusion的9氟氯化碳的WSDL解決java.util.ArrayList的ClassCastException異常?

我使用的Adobe ColdFusion的9創建CFC來與數據庫進行交互。通常,CFC可以自行生成WSDL。例如:

http://localhost/services/employeeService.cfc?wsdl 

WSDL生成良好。但問題已經發現,當我試圖使用Adobe Flash Builder 4的的數據服務來生成服務類連接ColdFusion的WSDL。

如果你試圖調用返回原始數據類型爲int或字符串遙控功能,它工作正常。

remote numeric function count() { 
    return ormExecuteQuery("select Count(*) from employee")[1]; 
} 

With return as primitive type, it works.

但複雜的數據類型,例如,返回與在該領域沒有返回的數據自定義類。

remote fp_sandbox.cfc.employee function get(required numeric id) { 
    return EntityLoad("employee", arguments.id, true); 
} 

Return a complex data type object, but properties is empty.

對於陣列中,如果指定爲ColdFusion的陣列的遠程函數,它將在對象的屬性返回一個數組,但沒有數據:

remote Array function list() { 
    return entityLoad("employee", {}, "idEmployee asc"); 
} 

If return type is default Array, the children in array has no value in property.

和如果返回類型是ORM泛化代碼,它將拋出異常。它看起來像ColdFusion試圖施展一些東西。

remote fp_sandbox.cfc.employee[] function search(string q) { 
    // query creating. 
    return ormExecuteQuery(hqlString, false, params); 
} 

堆棧跟蹤:

的InvocationTargetException:在調用 操作時發生錯誤。檢查您的操作輸入並嘗試再次調用操作 。收到

響應:

soapenv:Server.userException coldfusion.xml.rpc.CFCInvocationException: [java.lang.ClassCastException:java.util.ArrayList中] coldfusion.xml.rpc。 CFCInvocationException: [java.lang.ClassCastException:java.util.ArrayList中]在 coldfusion.xml.rpc.CFComponentSkeleton .__ createCFCInvocationException(CFComponentSkeleton.java:733) 在 coldfusion.xml.rpc.CFComponentSkeleton .__鑄造(CFComponentSkeleton.jav一:409) 在 fp_sandbox.services.EmployeeService.search(d:\家\ cashr.com \ wwwroot的\ fp_sandbox \ SERVICES \ employeeService.cfc) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法)在 太陽.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在java.lang.reflect.Method.invoke(Method.java:597)在 org.apache.axis.providers.java.RPCProvider.invokeMethod(RPCProvider.java:388) 在 org.apache.axis.providers.java。RPCProvider.processMessage在 org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider.java:323)(RPCProvider.java:283) 在coldfusion.xml.rpc.CFCProvider.invoke(CFCProvider.java:54 )在在 org.apache.axis.SimpleChain.invoke org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) 在org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) (SimpleChain.java:83)at org.apache.axis.server.AxisServer.invoke(AxisServer.java:281)at org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) at coldfusion.xml.rpc.CFCServlet.doAxisPost(CFCServlet.java:270)at coldfusion.filter.AxisFilter.invoke(AxisFilter.java:43)在 coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:356) 在 coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:48) 在coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) 在coldfusion.filter.PathFilter.invoke(PathFilter.java:87)處 的ColdFusion coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:70)。 filter.ClientScopePersistenceFilter.invoke在 coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)(ClientScopePersistenceFilter.java:28) 在coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)在 ColdFusion的.xml.rpc.CFCServlet.invoke(CFCServlet.java:138)at coldfusion.xml.rpc.CFCServlet.doPost(CFCServlet.java:289)at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) )在在 coldfusion.bootstrap.BootstrapServlet.service org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 在javax.servlet.http.HttpServlet.service(HttpServlet.java:853) (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) at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)在在 com.seefusion.Filter.doFilter(Filter.java:49)在 com.seefusion.SeeFusion.doFilter(SeeFusion.java:1500)在 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:286) 在 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(線程池的.java:266)在jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) ntcps1

你能不能給我任何建議,以解決或解決此問題?

回答

0

我的建議 - 查看RemoteClass元數據標籤......它應該指向正確的方向。

祝你好運, 傑里米

+0

做了一個快速谷歌搜索你:http://www.jeffryhouser.com/index.cfm/2007/10/9/Why-does-ColdFusion-return-a -CFC-to-Flex-as-a-generic-object – 2011-03-21 12:42:11

+0

謝謝jeremy。我會看看這一點,並會公佈結果。 – Teerasej 2011-03-24 00:39:40