Uploaded image for project: 'CXF'
  1. CXF
  2. CXF-4745

jaxb errors when calling with @WebParam and header=true

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Not A Problem
    • Affects Version/s: 2.7.1
    • Fix Version/s: 2.7.3
    • Component/s: JAX-WS Runtime
    • Labels:
    • Environment:

      Windows 7 64 bit, jdk with jre 32 bit 1.6.0_18. Eclipse Helios sr2

    • Estimated Complexity:
      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);
      
      	}
      }
      

        Attachments

        1. camelcxf.zip
          26 kB
          bogdantudor74@gmail.com

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              bogdantudor74@gmail.com bogdantudor74@gmail.com
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: