You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by sudip shrestha <su...@gmail.com> on 2008/05/22 20:18:41 UTC

argument type mismatch with java.util.Calendar

using default data binding, spring/cxf enabled Java First services and I
have a operation in a service class that has a Calendar param and while
invoking the operation, I get this exception:

org.apache.cxf.interceptor.Fault: argument type mismatch while invoking
public abstract java.util.List
com.ws.hr.service.PayrollService.getAvailableDates(java.util.Calendar) with
params [2008-01-01T12:02:08.312-06:00].

    at
org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:112)
    at
org.apache.cxf.jaxws.JAXWSMethodInvoker.createFault(JAXWSMethodInvoker.java:86)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104)
    at
org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.java:110)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:68)
    at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:56)
    at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)
    at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:92)
    at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
    at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:77)
    at
org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:92)
    at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:214)
    at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:151)
    at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:170)
    at
org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCXFServlet.java:148)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
    at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
    at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
    at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
    at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
    at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
    at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)
Caused by: 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:585)
    at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:127)
    at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:82)
    ... 41 more

When I searched through the threads I found the following:
Jaxb can map the java.util.Date and java.util.Calendar only if the types
annotated with DataTypeAdapter
For the java.util.Calendar, you need javax.xml.bind.DatatypeConverter
For the java.util.Date, you need org.apache.cxf.tools.common.DataTypeAdapter

If this is correct, how should I do it, I did not see anything in @WebParam
that lets me define the type.
Thanks.