Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Not A Problem
-
2.7.1
-
Windows 7 64 bit, jdk with jre 32 bit 1.6.0_18. Eclipse Helios sr2
-
Unknown
Description
When calling a method with @WebParam and header=true in the signature like the following:
@WebResult(targetNamespace = "http://test2.test1/", name = "returnedValFromTestSOAP") public String testSOAP(@WebParam(mode = WebParam.Mode.IN, header = true, name = "credentials") Credentials credentials, @WebParam(name="par1") WrappedList<String> par1, @WebParam(name="par2") WrappedList<String> par2);
the call fails (the parameters are not correctly put in the message). Without the header=true the call it is ok and the message it is correctly formatted. The soap header it is formed in an intercetor:
package test1.test3; import java.util.List; import javax.xml.bind.JAXBException; import org.apache.cxf.binding.soap.SoapHeader; import org.apache.cxf.binding.soap.SoapMessage; import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor; import org.apache.cxf.headers.Header; import org.apache.cxf.interceptor.Fault; import org.apache.cxf.jaxb.JAXBDataBinding; import org.apache.cxf.phase.Phase; import javax.xml.namespace.QName; import test1.test2.Credentials; public class CustomSOAPHeaderOutInterceptor extends AbstractSoapInterceptor { public CustomSOAPHeaderOutInterceptor() { super(Phase.PRE_PROTOCOL); } @Override public void handleMessage(SoapMessage message) throws Fault{ SoapMessage soapMessage = (SoapMessage) message; List<Header> list = message.getHeaders(); QName q = new QName("http://test2.test1/", "credentials"); Credentials credentials = new Credentials(); credentials.setUsername("uname"); credentials.setPassword("password"); credentials.setDomain("domain"); JAXBDataBinding dataBinding = null; try { dataBinding = new JAXBDataBinding(credentials.getClass()); } catch (JAXBException e1) { e1.printStackTrace(); } SoapHeader header = new SoapHeader(q, credentials, dataBinding); list.add(header); } }