这些参数做了什么以及它们用于什么?
<service name="...">
<parameter name="wsdlPortType" value="..."/>
</service>
此外,如果任何人都可以解释参数wsdlServicePort,wsdlTargetNamespace和wsdlServiceElement,那将不胜感激。
答案 0 :(得分:3)
Axis 1.4用户指南:
在Axis中部署服务时,用户可以访问您的 服务的URL使用标准Web浏览器并附加“?WSDL” 在URL的末尾,它们将获得自动生成的WSDL 描述您服务的文件。
实验结果表明,Axis能够使用.wsdd部署描述符文件和已编译的Java .class文件的组合来为给定服务生成相应的.wsdl。有趣的是,例如,如果你有一个带有Generics返回类型的公共方法,例如Map,你生成的.wsdl文件将不包含返回类型 - 它将包含“xsd:anyType”。我相信这是由于编译的.class文件中的类型擦除。
无论如何,Axis .wsdd文件中的服务选项(我在问题中引用的参数,如wsdlPortType,wsdlServicePort和wsdlTargetNamespace)与.wsdl规范相关。这可以从名称本身推断,因为它们都包含'wsdl',但我想要解释这些参数的含义,我无法找到相关的Axis文档。以下是我的发现:
wsdlPortType(portType):基本上就像一个Java接口。每个方法名称包含一个“operation”元素。每个“操作”都包含“input”和“output”元素,这些元素基本上是您输入的参数和Java方法的返回参数。
wsdlServicePort(wsdl:binding)与portType相关联。我认为它是如何传输portType参数的描述。规范有这样说:
绑定描述组件提供了一个指示框架 portType描述组件的绑定详细信息。绑定细节 应该用来表明消息必须在格式化时如何格式化 发送到服务或从服务发送。他们也应该用来表示 用于发送消息的传输协议。给定的 绑定描述组件不得指示多个 协议
wsdl:service :在wsdl端口绑定(portType的实现)中有一个引用。
目标命名空间:几乎就是我的想法(与其他任何地方的命名空间相同)。它适用于所有wsdl:definitions组件,所以wsdl文件中的任何内容基本上都是(wsdl:portType,wsdl:service等)。您可以在规范中找到其他一些规则。
答案 1 :(得分:0)
问题: 使用Service?wsdl时,生成的wsdl可能没有 相同的targetNamespace,portType,服务元素名称或 服务端口名称为原始wsdl。这个问题有 用户报告并且是TCK问题。
解决方案: 将四个可选参数添加到deploy.wsdd和 由JavaProvider查询(wsdlTargetNamespace,wsdlServiceElement, wsdlServicePort和wsdlPortType)。
Here is an example deploy.wsdd with the new parameters.
<!-- Services from AddressBookService WSDL service -->
<service name="AddressBook" provider="java:RPC">
<parameter name="wsdlTargetNamespace" value="urn:AddressFetcher2"/>
<parameter name="wsdlServiceElement" value="AddressBookService"/>
<parameter name="wsdlServicePort" value="AddressBook"/>
<parameter name="className" value="samples.addr.AddressBookSOAPBindingSkeleton"/>
<parameter name="wsdlPortType" value="AddressBook"/>
<parameter name="allowedMethods" value="*"/>
<parameter name="scope" value="Session"/>