Hello,

 

I am using CXF with my JAX-WS WSDL-first web service.  My schema
specifies a mandatory custom credentials element in the SOAP header.

 

With CXF 2.0.2, if the client sent a request that was missing that
custom credentials element in the header, it would come into the
implementation code as null.  This was good, because I could handle it
as I wanted to from there.

 

With CXF 2.0.3, it never even makes it to my implementation code.
Instead, a soap:server fault is automatically sent back to the client.
The message of the fault says:

 

wrong number of arguments while invoking public
com.mycompany.MyOperationResponseType
com.mycompany.MyWebServiceImpl.myOperation(com.mycompany.MyOperationType
,com.mycompany.UserCredentialsType) throws com.mycompany.MyFault with
params [EMAIL PROTECTED]

 

I'd really like to have control over this-I actually prefer not to send
back a fault, but rather to respond in a different way.  In addition, if
I *did* want to send back a fault, I wouldn't want the fault message to
contain my class names-and I would probably want to return my custom
fault type in the fault details as well.

 

Is this by design, or is this a regression?  Is anyone aware of a
workaround for this?

 

I have also pasted the stacktrace below.  Thanks for your help!

 

-Chris

 

Nov 15, 2007 4:34:58 PM org.apache.cxf.phase.PhaseInterceptorChain
doIntercept

INFO: Interceptor has thrown exception, unwinding now

org.apache.cxf.interceptor.Fault: wrong number of arguments while
invoking public com

.mycompany.MyOperationResponseType com.mycompany.MyWebServiceImpl.myOpe

ration(com.mycompany.MyOperationType,com.mycompany.UserCredentialsType)
thro

ws com.mycompany.MyFault with params
[EMAIL PROTECTED]

        at
org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractIn

voker.java:109)

        at
org.apache.cxf.jaxws.JAXWSMethodInvoker.createFault(JAXWSMethodInvoke

r.java:76)

        at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker

.java:101)

        at
org.apache.cxf.jaxws.JAXWSMethodInvoker.invoke(JAXWSMethodInvoker.jav

a:100)

        at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker

.java:68)

        at
org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInv

okerInterceptor.java:56)

        at
org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecu

tor.java:37)

        at
org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(Se

rviceInvokerInterceptor.java:92)

        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseIntercept

orChain.java:207)

        at
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainIniti

ationObserver.java:73)

        at
org.apache.cxf.transport.servlet.ServletDestination.doMessage(Servlet

Destination.java:79)

        at
org.apache.cxf.transport.servlet.ServletController.invokeDestination(

ServletController.java:256)

        at
org.apache.cxf.transport.servlet.ServletController.invoke(ServletCont

roller.java:160)

        at
org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCX

FServlet.java:170)

        at
org.apache.cxf.transport.servlet.AbstractCXFServlet.doPost(AbstractCX

FServlet.java:148)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

        at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491

)

        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:3

67)

        at
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.jav

a:185)

        at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:1

81)

        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:6

89)

        at
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)

 

        at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHand

lerCollection.java:146)

        at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.

java:114)

        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:1

39)

        at org.mortbay.jetty.Server.handle(Server.java:285)

        at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:45

7)

        at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnectio

n.java:765)

        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)

        at
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)

        at
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)

        at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.ja

va:329)

        at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool

.java:475)

Caused by: java.lang.IllegalArgumentException: wrong number of arguments

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.

java:39)

        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces

sorImpl.java:25)

        at java.lang.reflect.Method.invoke(Method.java:585)

        at
org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abst

ractInvoker.java:124)

        at
org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker

.java:82)

        ... 31 more

Reply via email to