2011-03-20 3 views
1

이 문제로 시간 낭비하지 않기를 바랍니다.ColdFusion 9의 CFC 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 또는 String으로 반환하는 원격 함수를 호출하려고하면 올바르게 작동합니다.

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 genarated 코드이면 예외를 throw합니다. 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 .__ 캐스트에 coldfusion.xml.rpc.CFComponentSkeleton .__ createCFCInvocationException (CFComponentSkeleton.java:733)에서 (CFComponentSkeleton.jav A : 409) fp_sandbox.services.EmployeeService.search (에서 D : \ 홈 \ cashr.com \ wwwroot에 \ fp_sandbox \ 서비스 \ employeeService.cfc) 일에서 sun.reflect.NativeMethodAccessorImpl.invoke0 (기본 방법)에서 에서 java.lang.reflect.Method.invoke에서 .reflect.NativeMethodAccessorImpl.invoke sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)에서 (NativeMethodAccessorImpl.java:39) (Method.java:597) org.apache.axis.providers.java.RPCProvider.invokeMethod (RPCProvider.java:388) at org.apache.axis.providers.java.RPCProvider.processMessage (RPCProvider.java:283) at org.apache.axis.providers.java.JavaProvider.invoke (JavaProvider.java:323) at coldfusion.xml.rpc.CFCProvider.invoke (CFCProvider.java:54)) at org.apache.axis.strategies.InvocationStrategy.visit (InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting (SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke (SimpleChain.java:83) at org.apache.axis.handlers.soap.SOAPService.invoke (SOAPService.java:453) at org.apache.axis.server.AxisServer.invoke (AxisServer.java:281) 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 coldfusion.filter.RequestMonitorFilter.invoke (RequestMonitorFilter.java:48)에서 coldfusion.filter.ApplicationFilter.invoke (ApplicationFilter.java:356)에서 (AxisFilter.java:43)에서 coldfusion.filter.MonitoringFilter.invoke (MonitoringFilter.java:40) ColdFusion에서의 coldfusion.filter.ExceptionFilter.invoke (ExceptionFilter.java:70)에서 coldfusion.filter.PathFilter.invoke (PathFilter.java:87)에서 . ColdFusion에서의 filter.ClientScopePersistenceFilter.invoke coldfusion.filter.DatasourceFilter.invoke (DatasourceFilter.java:22)에서 coldfusion.filter.GlobalsFilter.invoke (GlobalsFilter.java:38)에서 (ClientScopePersistenceFilter.java:28) .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)에서 coldfusion.bootstrap.BootstrapFilter에서 coldfusion.monitor.event.MonitoringServletFilter.doFilter (MonitoringServletFilter.java:42) 에서 jrun.servlet.FilterChain.doFilter (FilterChain.java:86)에서 (BootstrapServlet.java:89) . doFilter (BootstrapFilter.java:46) at jrun.servlet.FilterChain.doFilter (FilterChain.java:94) 에서 jrun.servlet.FilterChain.doFilter (FilterChain.java:94)에서 com.seefusion.SeeFusion.doFilter (SeeFusion.java:1500)에서 com.seefusion.Filter.doFilter (Filter.java:49)에서 jrun.servlet.FilterChain.service 의 JRun에서 jrun.servlet.JRunInvokerChain.invokeNext (JRunInvokerChain.java:42)에서 jrun.servlet.ServletInvoker.invoke (ServletInvoker.java:106)에서 (FilterChain.java:101). servlet.JRunRequestDispatcher.invoke jrun.servlet.jrpp.JRunProxyService.invokeRunnable (JRunProxyService.java:203)에서 jrun.servlet.ServletEngineService.dispatch (ServletEngineService.java:543)에서 (JRunRequestDispatcher.java:286) 에서 jrunx.scheduler.ThreadPool $ UpstreamMetrics.invokeRunnable에서 jrunx.scheduler.ThreadPool $ ThreadThrottle.invokeRunnable (ThreadPool.java:428) 에서 1,363,210 jrunx.scheduler.ThreadPool $ DownstreamMetrics.invokeRunnable (ThreadPool.java:320) (ThreadPool이 된 .java : 당신이 나에게 어떤 해결하기 위해 제안 또는 해결 방법이 문제를 줄 수

ntcps1 jrunx.scheduler.WorkerThread.run (WorkerThread.java:66)에서 266) ?

답변

0

내 제안 - RemoteClass 메타 데이터 태그를 찾으십시오 ... 올바른 방향으로 당신을 지적해야합니다.

행운을 빈다, 제레미

+0

한 당신을 위해 빠른 구글 검색 : http://www.jeffryhouser.com/index.cfm/2007/10/9/Why-does-ColdFusion-return-a -CFC에서 제네릭 객체로 플렉스 –

+0

고맙습니다, 제레미. 나는이 점을 살펴보고 결과를 게시 할 것이다. – Teerasej

관련 문제