xadditionalHeaders 在 Maven 中的 wsimport 目标中不起作用
xadditionalHeaders not working in wsimport goal in maven
我在一个文件夹中有wsdl 和相应的xsds。我尝试与客户端生成绑定 类。但是我没有看到 header 的绑定 类 作为生成的存根中的参数。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>generate-reports-ws-code</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
<bindingDirectory>${basedir}</bindingDirectory>
<bindingFiles>
<bindingFile>binding.xml</bindingFile>
</bindingFiles>
<packageName>${xsd.binding.generated.search.package.name}</packageName>
<wsdlFiles>
<wsdlFile>${basedir}/src/main/resources/xsd/Search.wsdl</wsdlFile>
</wsdlFiles>
<xadditionalHeaders>true</xadditionalHeaders>
<verbose>true</verbose>
<outputDirectory>${xsd.binding.generated.directory}</outputDirectory>
</configuration>
</execution>
</executions>
然后生成所有绑定 类 和后续客户端。
public interface SearchSoap {
//..
@WebMethod(operationName = "PerformContentSearch", action = "http://services.my.url./search/PerformContentSearch")
@WebResult(name = "PerformContentSearchResponse", targetNamespace = "http://types.my.url./search", partName = "parameters")
public PerformContentSearchResponse performContentSearch(
@WebParam(name = "PerformContentSearch", targetNamespace = "http://types.my.url./search", partName = "parameters")
PerformContentSearch parameters)
throws SearchExceptionSoapOut
;
}
但我期待这样的事情
@WebResult(name = "PerformContentSearchResponse", targetNamespace = "http://types.my.url./search", partName = "parameters")
@WebMethod(operationName = "PerformContentSearch", action = "http://services.my.url./search/PerformContentSearch")
public PerformContentSearchResponse performContentSearch(
@WebParam(partName = "parameters", name = "PerformContentSearch", targetNamespace = "http://types.my.url./search")
PerformContentSearch parameters,
@WebParam(partName = "requestHeader", name = "requestHeader", targetNamespace = "http://types.my.url./header", header = true)
RequestHeader requestHeader
) throws SearchExceptionSoapOut;
我期待此方法中的 'header = true' 和另一个参数(RequestHeader)。
请注意,所有这些 objects 都已成功创建,但即使我将 xadditionalHeaders 设置为 true,我也希望它会自动生成带有 header 的方法。
我已经尝试使用 cxf-codegen-plugin,wsdl2java 目标和 -exsh arg,如下所示,但仍然没有运气。
<configuration>
<sourceRoot>${xsd.binding.generated.directory}</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/xsd/Search.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-exsh</extraarg>
<extraarg>true</extraarg>
<!-- <extraarg>-impl</extraarg> -->
<extraarg>-verbose</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
<defaultOptions>
<noAddressBinding>true</noAddressBinding>
<bindingFiles>
<bindingFile>binding.xml</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
</defaultOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
而我的wsdl操作如下
<portType name="SearchSoap">
<operation name="PerformContentSearch">
<input message="svc:PerformContentSearchSoapIn"/>
<output message="svc:PerformContentSearchSoapOut"/>
<fault name="fault" message="svc:SearchExceptionSoapOut"/>
</operation>
</portType>
我只有 header.xsd 包含在 wsdl 中。
实际上,即使我在 wsdl 中包含一个 header.xsd,它在操作中没有提到,所以我指的是 here 并试图找到一个解决方案,自动生成或将其添加到代码中。
请推荐
我一直在寻找任何可用于生成绑定 类 和 header 参数而无需操作 wsdl 的选项。
我什么都没收到。所以只好操作wsdl,在操作中添加header标签。然后我使用上面的命令生成并创建了预期的绑定 类。
注意:soap:header 节点在此处添加。
<operation name="PerformContentSearch">
<soap:operation soapAction="http://services.factiva.com/search/PerformContentSearch" style="document"/>
<input>
<soap:body use="literal"/>
<soap:header message="svc:PerformContentSearchSoapIn" part="requestHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="fault">
<soap:fault name="fault" use="literal"/>
</fault>
</operation>
我在一个文件夹中有wsdl 和相应的xsds。我尝试与客户端生成绑定 类。但是我没有看到 header 的绑定 类 作为生成的存根中的参数。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>generate-reports-ws-code</id>
<phase>generate-sources</phase>
<goals>
<goal>wsimport</goal>
</goals>
<configuration>
<vmArgs>
<vmArg>-Djavax.xml.accessExternalSchema=all</vmArg>
</vmArgs>
<bindingDirectory>${basedir}</bindingDirectory>
<bindingFiles>
<bindingFile>binding.xml</bindingFile>
</bindingFiles>
<packageName>${xsd.binding.generated.search.package.name}</packageName>
<wsdlFiles>
<wsdlFile>${basedir}/src/main/resources/xsd/Search.wsdl</wsdlFile>
</wsdlFiles>
<xadditionalHeaders>true</xadditionalHeaders>
<verbose>true</verbose>
<outputDirectory>${xsd.binding.generated.directory}</outputDirectory>
</configuration>
</execution>
</executions>
然后生成所有绑定 类 和后续客户端。
public interface SearchSoap {
//..
@WebMethod(operationName = "PerformContentSearch", action = "http://services.my.url./search/PerformContentSearch")
@WebResult(name = "PerformContentSearchResponse", targetNamespace = "http://types.my.url./search", partName = "parameters")
public PerformContentSearchResponse performContentSearch(
@WebParam(name = "PerformContentSearch", targetNamespace = "http://types.my.url./search", partName = "parameters")
PerformContentSearch parameters)
throws SearchExceptionSoapOut
;
}
但我期待这样的事情
@WebResult(name = "PerformContentSearchResponse", targetNamespace = "http://types.my.url./search", partName = "parameters")
@WebMethod(operationName = "PerformContentSearch", action = "http://services.my.url./search/PerformContentSearch")
public PerformContentSearchResponse performContentSearch(
@WebParam(partName = "parameters", name = "PerformContentSearch", targetNamespace = "http://types.my.url./search")
PerformContentSearch parameters,
@WebParam(partName = "requestHeader", name = "requestHeader", targetNamespace = "http://types.my.url./header", header = true)
RequestHeader requestHeader
) throws SearchExceptionSoapOut;
我期待此方法中的 'header = true' 和另一个参数(RequestHeader)。 请注意,所有这些 objects 都已成功创建,但即使我将 xadditionalHeaders 设置为 true,我也希望它会自动生成带有 header 的方法。 我已经尝试使用 cxf-codegen-plugin,wsdl2java 目标和 -exsh arg,如下所示,但仍然没有运气。
<configuration>
<sourceRoot>${xsd.binding.generated.directory}</sourceRoot>
<wsdlOptions>
<wsdlOption>
<wsdl>${basedir}/src/main/resources/xsd/Search.wsdl</wsdl>
<extraargs>
<extraarg>-client</extraarg>
<extraarg>-exsh</extraarg>
<extraarg>true</extraarg>
<!-- <extraarg>-impl</extraarg> -->
<extraarg>-verbose</extraarg>
</extraargs>
</wsdlOption>
</wsdlOptions>
<defaultOptions>
<noAddressBinding>true</noAddressBinding>
<bindingFiles>
<bindingFile>binding.xml</bindingFile>
</bindingFiles>
<noAddressBinding>true</noAddressBinding>
</defaultOptions>
</configuration>
<goals>
<goal>wsdl2java</goal>
</goals>
而我的wsdl操作如下
<portType name="SearchSoap">
<operation name="PerformContentSearch">
<input message="svc:PerformContentSearchSoapIn"/>
<output message="svc:PerformContentSearchSoapOut"/>
<fault name="fault" message="svc:SearchExceptionSoapOut"/>
</operation>
</portType>
我只有 header.xsd 包含在 wsdl 中。 实际上,即使我在 wsdl 中包含一个 header.xsd,它在操作中没有提到,所以我指的是 here 并试图找到一个解决方案,自动生成或将其添加到代码中。 请推荐
我一直在寻找任何可用于生成绑定 类 和 header 参数而无需操作 wsdl 的选项。
我什么都没收到。所以只好操作wsdl,在操作中添加header标签。然后我使用上面的命令生成并创建了预期的绑定 类。 注意:soap:header 节点在此处添加。
<operation name="PerformContentSearch">
<soap:operation soapAction="http://services.factiva.com/search/PerformContentSearch" style="document"/>
<input>
<soap:body use="literal"/>
<soap:header message="svc:PerformContentSearchSoapIn" part="requestHeader" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="fault">
<soap:fault name="fault" use="literal"/>
</fault>
</operation>