この問題があなたの時間を無駄にしないことを願っています。
Adobe Coldfusion 9 を使用して CFC を作成し、データベースとやり取りします。通常、CFC はそれ自体で WSDL を生成できます。例えば:
http://localhost/services/employeeService.cfc?wsdl
WSDL は適切に生成されました。しかし、Adobe Flash Builder 4 の Data サービスを使用してサービス クラスを生成し、ColdFusion の WSDL に接続しようとしたときに、問題が見つかりました。
プリミティブ データ型を int または String として返すリモート関数を呼び出そうとした場合、正しく動作します。
remote numeric function count() {
return ormExecuteQuery("select Count(*) from employee")[1];
}
ただし、フィールドにデータがない状態で返されるカスタム クラスを返すなどの複雑なデータ型。
remote fp_sandbox.cfc.employee function get(required numeric id ) {
return EntityLoad("employee", arguments.id, true);
}
配列の場合、リモート関数が ColdFusion の配列として指定されている場合、配列が返されますが、オブジェクトのプロパティにはデータがありません。
remote Array function list() {
return entityLoad("employee", {}, "idEmployee asc");
}
戻り値の型が 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.__cast(CFComponentSkeleton.java:409)、fp_sandbox.services.EmployeeService.search(D:\home\cashr.com\wwwroot) \fp_sandbox\services\employeeService.cfc) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で) org.apache.axis.providers の java.lang.reflect.Method.invoke(Method.java:597) で。org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:283) の java.RPCProvider.invokeMethod(RPCProvider.java:388) org.apache.axis.providers.java.JavaProvider.invoke(JavaProvider. java:323) で coldfusion.xml.rpc.CFCProvider.invoke(CFCProvider.java:54) で org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) で org.apache.axis.SimpleChain.doVisiting (SimpleChain.java:118) org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) org.apache.axis.handlers.soap.SOAPService.invoke(SOAPService.java:453) org.apache. org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:699) の axis.server.AxisServer.invoke(AxisServer.java:281)、coldfusion.xml.rpc.CFCServlet.doAxisPost(CFCServlet.java: 270) 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.filter.ExceptionFilter.invoke(ExceptionFilter.java:70) で coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) で coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java: 38) coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)でcoldfusion.xml.rpc.CFCServlet.invoke(CFCServlet.java:138)でcoldfusion.xml.rpc.CFCServlet.doPost(CFCServlet.java:289)で) org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) javax.servlet.http.HttpServlet.service(HttpServlet.java:853) で 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)、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 で。jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203) で jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543) で (JRunRequestDispatcher.java:286) を呼び出し、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) ntcps1jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266) での invokeRunnable(ThreadPool.java:428) jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) での ntcps1jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266) での invokeRunnable(ThreadPool.java:428) jrunx.scheduler.WorkerThread.run(WorkerThread.java:66) での ntcps1
この問題を解決または回避するための提案を教えてください。