Оказывается, параметры могут передаваться/возвращаться не только в методе, но и в хедере. Пример - вызов методов в SSRS:
SetExecutionParameters: 3 доп.параметра, один из них - возвращаемый
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices">
<s:element name="SetExecutionParameters">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Parameters" type="tns:ArrayOfParameterValue"/>
<s:element minOccurs="0" maxOccurs="1" name="ParameterLanguage" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
...
</s:schema>
</wsdl:types>
...
<wsdl:operation name="SetExecutionParameters">
<soap:operation soapAction="http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/SetExecutionParameters" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
<soap:header message="tns:SetExecutionParametersExecutionHeader" part="ExecutionHeader" use="literal"/>
<soap:header message="tns:SetExecutionParametersTrustedUserHeader" part="TrustedUserHeader" use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
<soap:header message="tns:SetExecutionParametersServerInfoHeader" part="ServerInfoHeader" use="literal"/>
</wsdl:output>
</wsdl:operation>
wsimport по умолчанию игнорирует такие параметры. Ну, а видя необходимость помещать информацию в soap:header, сразу хочется городить хендлер для сервиса, или еще какие хаки.
Оказывается, ничего этого не надо, у wsimport есть параметр -XadditionalHeaders, который в эклипсе игнорируется.
по умолчанию у метода было только 2 параметра, впрочем, для конкретного сервиса один оказался лишним
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
@WebMethod(operationName = "SetExecutionParameters", action = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices/SetExecutionParameters")
@WebResult(name = "executionInfo", targetNamespace = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices")
@RequestWrapper(localName = "SetExecutionParameters", targetNamespace = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", className = "com.microsoft.schemas.sqlserver._2005._06._30.reporting.reportingservices.SetExecutionParameters")
@ResponseWrapper(localName = "SetExecutionParametersResponse", targetNamespace = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", className = "com.microsoft.schemas.sqlserver._2005._06._30.reporting.reportingservices.SetExecutionParametersResponse")
public ExecutionInfo setExecutionParameters(
@WebParam(name = "Parameters", targetNamespace = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices")
ArrayOfParameterValue parameters,
@WebParam(name = "ParameterLanguage", targetNamespace = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices")
String parameterLanguage,
@WebParam(name = "ExecutionHeader", targetNamespace = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", header = true, partName = "ExecutionHeader")
ExecutionHeader executionHeader,
// @WebParam(name = "TrustedUserHeader", targetNamespace = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", header = true, partName = "TrustedUserHeader")
// TrustedUserHeader trustedUserHeader,
@WebParam(name = "ServerInfoHeader", targetNamespace = "http://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices", header = true, mode = WebParam.Mode.OUT, partName = "ServerInfoHeader")
Holder<ServerInfoHeader> serverInfoHeader);
// Теперь для передачи заголовка ExecutionHeader достаточно передать его в метод в виде параметра, никаких хендлеров городить не надо.
Вот так вот. Не следует безоговорочно доверять визуальным средствам разработки.