I've got a web service developed in ColdFusion that throws
java.lang.IllegalArgumentException: argument type mismatch and
sometimes a class not found exception.
Now here's the kicker, I've not found a way to reliably
reproduce the exceptions. Here's what happens. Although nothing
will have changed in the source code, at some point during the day
the server will start to throw the exception and continue to throw
it until the ColdFusion service is restarted. This happens to only
one or two of our production servers throughout the course of the
day and the other servers will not be throwing any exceptions and
it's not the same server each day
😞 .
I'm pretty confident that the underlying CF code isn't at
issue because if I run the same method on the same server using
REST everything is fine and it also passes all the unit tests. The
underlying application that processes the request is the same,
there is a SOAP endpoint and a REST endpoint. Or, if I instantiate
the SOAP endpoint CFC as a component directly in ColdFusion I can
run all the methods no problems. This makes me think that there is
something wrong going on with Axis.
I'm at the end of my rope over this one. Please help.
-------------------------------------------------------------------------------------------------------------------------
WSDL:
http://api.sandbox.superbreak.com/soap/SOAPEndpoint.cfc?wsdl
Full stack trace:
java.lang.IllegalArgumentException: argument type mismatch at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324) at
org.apache.axis.utils.BeanPropertyDescriptor.set(BeanPropertyDescriptor.java:142)
at
org.apache.axis.encoding.ser.BeanPropertyTarget.set(BeanPropertyTarget.java:75)
at
org.apache.axis.encoding.DeserializerImpl.valueComplete(DeserializerImpl.java:249)
at
org.apache.axis.encoding.DeserializerImpl.endElement(DeserializerImpl.java:509)
at
org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at
org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:171)
at
org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
at
org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
at
org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
at
org.apache.axis.providers.java.RPCProvider.processMessage(RPCProvider.java:148)
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:163) at
coldfusion.filter.AxisFilter.invoke(AxisFilter.java:43) at
coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:219)
at
coldfusion.filter.RequestMonitorFilter.invoke(RequestMonitorFilter.java:51)
at coldfusion.filter.PathFilter.invoke(PathFilter.java:86) at
coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:69)
at
coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at
coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
at coldfusion.xml.rpc.CFCServlet.invoke(CFCServlet.java:106) at
coldfusion.xml.rpc.CFCServlet.doPost(CFCServlet.java:182) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at
org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at
coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:78)
at jrun.servlet.FilterChain.doFilter(FilterChain.java:86) at
com.intergral.fusionreactor.filter.FusionReactorFilter.B(Unknown
Source) at
com.intergral.fusionreactor.filter.FusionReactorFilter.A(Unknown
Source) at
com.intergral.fusionreactor.filter.FusionReactorFilter.doFilter(Unknown
Source) at jrun.servlet.FilterChain.doFilter(FilterChain.java:94)
at jrun.servlet.FilterChain.service(FilterChain.java:101) at
jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91) at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:257)
at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:541)
at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:204)
at
jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:318)
at
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:426)
at
jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:264)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66