[jbossws-issues] [JBoss JIRA] (JBWS-3964) Incorrect behaviour with @WebParam(header = true, mode = IN)

Alessio Soldano (JIRA) issues at jboss.org
Wed Dec 16 12:21:02 EST 2015


     [ https://issues.jboss.org/browse/JBWS-3964?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Alessio Soldano updated JBWS-3964:
----------------------------------
    Assignee: Jim Ma


> Incorrect behaviour with @WebParam(header = true, mode = IN)
> ------------------------------------------------------------
>
>                 Key: JBWS-3964
>                 URL: https://issues.jboss.org/browse/JBWS-3964
>             Project: JBoss Web Services
>          Issue Type: Bug
>         Environment: Wildfly 9.0.2
>            Reporter: Xavier Dury
>            Assignee: Jim Ma
>
> Given the following simple WebService with incoming and outgoing header @WebParams:
> {code}
> @Stateless
> @WebService(name = "MyEchoService", targetNamespace = "urn:echo")
> public class MyEchoService {
> 	
> 	@WebResult(name = "result")
> 	public String echo(
> 			@WebParam(name = "message") String message,
> 			@WebParam(name = "paramIn", mode = Mode.IN, header = true) Holder<String> paramIn,
> 			@WebParam(name = "paramOut", mode = Mode.OUT, header = true) Holder<String> paramOut) {
> 		paramOut.value = "got paramIn " + paramIn.value;
> 		return "echo " + message;
> 	}
> }
> {code}
> The generated WSDL contains the following operation where the incoming @WebParam (mode = IN) is present in both input and ouput:
> {code}
> <wsdl:operation name="echo">
> 	<soap:operation soapAction="" style="document"/>
> 	<wsdl:input name="echo">
> 		<soap:header message="tns:echo" part="paramIn" use="literal"></soap:header>
> 		<soap:body parts="parameters" use="literal"/>
> 	</wsdl:input>
> 	<wsdl:output name="echoResponse">
> 		<soap:header message="tns:echoResponse" part="paramIn" use="literal"></soap:header>
> 		<soap:header message="tns:echoResponse" part="paramOut" use="literal"></soap:header>
> 		<soap:body parts="result" use="literal"/>
> 	</wsdl:output>
> </wsdl:operation>
> {code}
> We can see in the following exchange that the incoming @WebParam will be copied verbatim in the response:
> {code}
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:echo">
>    <soapenv:Header>
>       <urn:paramIn>fred</urn:paramIn>
>    </soapenv:Header>
>    <soapenv:Body>
>       <urn:echo>
>          <urn:message>hello world!</urn:message>
>       </urn:echo>
>    </soapenv:Body>
> </soapenv:Envelope>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>    <soap:Header>
>       <paramIn xmlns="urn:echo">fred</paramIn>
>       <paramOut xmlns="urn:echo">got paramIn fred</paramOut>
>    </soap:Header>
>    <soap:Body>
>       <echoResponse xmlns="urn:echo">
>          <result>echo hello world!</result>
>       </echoResponse>
>    </soap:Body>
> </soap:Envelope>
> {code}
> When the incoming header @WebParam is not set, an empty element will be added to the body of the response:
> {code}
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:echo">
>    <soapenv:Body>
>       <urn:echo>
>          <urn:message>hello world!</urn:message>
>       </urn:echo>
>    </soapenv:Body>
> </soapenv:Envelope>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>    <soap:Header>
>       <paramOut xmlns="urn:echo">got paramIn null</paramOut>
>    </soap:Header>
>    <soap:Body>
>       <echoResponse xmlns="urn:echo">
>          <result>echo hello world!</result>
>       </echoResponse>
>       <paramIn xsi:nil="true" xmlns="urn:echo" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
>    </soap:Body>
> </soap:Envelope>
> {code}



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jbossws-issues mailing list