Hi,

I implemented an handler to read an object in the soap header. 
The object sent in the header is present as a <beanMapping> in the
deployment file.
I get an "argument type mismatch" in the processing of the request, not
while decoding the header object itself (it gets created).

When I don't use getValueAsType everything works fine except that I need to
parse the object manually :-(

Can you help me ?

Here is the code :

public class TestHandler extends BasicHandler {

    public static final String HEADER_NS = "urn:PositioningService";
    public static final String HEADER_REQNAME = "ID";

        public TestHandler() {
        }

    /**
     * Process a MessageContext.
     */
    public void invoke(MessageContext context) throws AxisFault
    {    
        if (context.getPastPivot())
                        return;
        // Request. look for the header
        Message msg = context.getRequestMessage();
        if (msg == null)
            throw new AxisFault(JavaUtils.getMessage("noRequest00"));
        
        SOAPEnvelope env = msg.getSOAPEnvelope();
          // Get the header
        SOAPHeaderElement header = env.getHeaderByName(HEADER_NS,
                                                       HEADER_REQNAME);
        // process the header when it's not null
        if (header != null) {
                        ID id = null;
            try {
                    // constructs the object from the header
                id = (ID)header.getValueAsType(new QName(HEADER_NS,
HEADER_REQNAME));
                                header.setProcessed(true);
            } catch (Exception e) {
                throw AxisFault.makeFault(e);
            }
          ...


I get the following Exception :

- Exception:
java.lang.IllegalArgumentException: argument type mismatch
        at org.apache.axis.AxisFault.makeFault(Unknown Source)
        at org.apache.axis.providers.java.JavaProvider.invoke(Unknown
Source)
        at org.apache.axis.strategies.InvocationStrategy.visit(Unknown
Source)
        at org.apache.axis.SimpleChain.doVisiting(Unknown Source)
        at org.apache.axis.SimpleChain.invoke(Unknown Source)
        at org.apache.axis.server.AxisServer.invoke(Unknown Source)
        at
org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:576)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:247)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:193)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:243)
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:190)
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
        at
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:2
46)
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2343)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
)
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
        at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
java:170)
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170
)
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
        at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
64)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:174)
        at
org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:5
66)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
        at
org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:
1012)
        at
org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1107
)
        at java.lang.Thread.run(Thread.java:536)
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:324)
        at org.apache.axis.providers.java.RPCProvider.processMessage(Unknown
Source)
        ... 38 more

Cordialement/Regards,

Antoine Martin - Automotive Projects Delivery Manager.
Webraska Mobile Technologies - 22, rue Guynemer - B.P 107 - 78602
Maisons-Laffitte Cedex (France)
Tel: +33 (0)1 39 12 88 47 - Fax : +33 (0)1 39 12 88 88  

Reply via email to