Java wsimport不使用复杂输入类型

Java wsimport不使用复杂输入类型,java,web-services,jax-ws,wsimport,Java,Web Services,Jax Ws,Wsimport,当我使用wsimport为某些服务生成代理时,为每个端口生成的方法签名似乎没有使用WSDL中指定的复杂类型;但我注意到,在其他一些服务中,它确实如此 这在多个服务上都发生过,但最新的例子是Amazon的AWSEConsumerService()。当我使用wsimport生成服务代理代码时,我会为每个端口获得如下方法签名 @WebMethod(operationName=“ItemLookup”,action=”http://soap.amazon.com/ItemLookup") @Reques

当我使用wsimport为某些服务生成代理时,为每个端口生成的方法签名似乎没有使用WSDL中指定的复杂类型;但我注意到,在其他一些服务中,它确实如此

这在多个服务上都发生过,但最新的例子是Amazon的AWSEConsumerService()。当我使用wsimport生成服务代理代码时,我会为每个端口获得如下方法签名

@WebMethod(operationName=“ItemLookup”,action=”http://soap.amazon.com/ItemLookup")
@RequestWrapper(localName=“ItemLookup”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01,className=“com.aws.CommerceService.ItemLookup”)
@ResponseWrapper(localName=“ItemLookupResponse”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01,className=“com.aws.CommerceService.ItemLookupResponse”)
公共无效项查找(
@WebParam(name=“MarketplaceDomain”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01")
字符串marketplaceDomain,
@WebParam(name=“AWSAccessKeyId”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01")
字符串awsAccessKeyId,
@WebParam(name=“AssociateTag”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01")
字符串关联标记,
@WebParam(name=“Validate”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01")
字符串验证,
@WebParam(name=“XMLEscaping”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01")
字符串XML转义,
@WebParam(name=“Shared”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01")
ItemLookupRequest已共享,
@WebParam(name=“Request”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01")
列表请求,
@WebParam(name=“OperationRequest”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01,mode=WebParam.mode.OUT)
持有人操作请求,
@WebParam(name=“Items”,targetNamespace=”http://webservices.amazon.com/AWSECommerceService/2011-08-01,mode=WebParam.mode.OUT)
持有人项目);

我希望此方法采用WSDL指定的单个复杂参数(在本例中为ItemLookup对象)。我是从根本上误解了什么,还是代码生成过程中出现了异常情况?

我在AWS中遇到了类似的问题。我遵循了Java的API设置说明(本手册第10页)

在步骤2中(它说的是Eclipse 3.2),您应该创建一个包含以下内容的文件(sugested名称为jaxws custom.xml):

<jaxws:bindings wsdlLocation="http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
 <jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>

假的
然后使用选项-b jaxws-custom.xml运行wsimport命令


我还没有弄清楚到底是什么问题,但这确实解决了我的问题。

这对我来说很有效。虽然原始代码不是不可用的,但这确实导致了更干净、更可读的代码。我仍然很好奇为什么有些服务会导致这种情况,而其他服务则不会。wsdlLocation也可以是本地文件。