I've been debugging my "disappearing header" problem. I've narrowed it down
to the WrapperClassOutInterceptor class. On line 66, it grabs a reference
to the parameters that I passed into my method I'm calling for my web
service. It then takes these parameters and apparently tries to see if
there is a WrapperHelper for them. Or well, by the fact that it only checks
for parts.get(0), means that it's checking my first parameter but not
checking my second parameter (my header).
Now, there is no WrapperHelper apparently for my first parameter object, so
it creates one and wraps it. At this point the Interceptor seems happy with
the job that it did and calls the following code:
Object o2 = helper.createWrapperObject(objs);
objs.clear();
objs.put(parts.get(0), o2);
When it does this, it clears the MessageContentsList containing my parameter
and my header. It puts my first parameter back in and leaves the old slot
held by my header as null. This is why my header is disappearing. Why does
this class only reference parts(0) when there is more than 1 part?
This Interceptor seems to assume that there is only 1 parameter. The reason
why my stripped down WSDL doesn't hit this apparent bug is because when I
generate the java classes for that wsdl, my first parameter is generated as
a wrapper object around a string and therefore doesn't need to create a
wrapper class and doesn't delete the elements from the MessageContentList.
This appears to be a bug. I think I can now change my test working WSDL to
exploit this problem. I'll then post it for you to look at.