mae*_*ics 15 java soap wsdl jax-ws wsimport
Java 6 JAX-WS"wsimport"实用程序在给定WSDL文件的情况下生成Web服务框架(接口)方面做得很好,但有一个个人烦人的异常.
当给定使用SOAP Document/literal包装样式的WSDL时(也在此处描述),它生成一个具有"裸" SOAP绑定参数样式的服务接口(在方法签名中将多个参数和返回值扩展为"holder"对象)而不是WSDL指定的简单包装参数和返回值.其他工具,例如Axis2 wsdl2java,只需使用包装元素作为输入参数并返回值,而不是自动"展开"它们.
有可能告诉"wsimport"将SOAP绑定参数保持为"wrapped"而不是"bare"吗?
ben*_*y23 38
AFAIK,您需要指定一个自定义绑定文件来禁用包装样式:
<bindings
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
wsdlLocation="OperationService.wsdl"
xmlns="http://java.sun.com/xml/ns/jaxws">
<!-- Disable default wrapper style -->
<enableWrapperStyle>false</enableWrapperStyle>
</bindings>
Run Code Online (Sandbox Code Playgroud)
然后调用wsimport
$ wsimport -b binding.xml OperationService.wsdl
Run Code Online (Sandbox Code Playgroud)
mae*_*ics 15
来自@ beny23的答案是正确的; 但是,事实证明,您可以将JAX-WS绑定指令嵌入到WSDL文件本身中,这样就无需将" -b binding.xml
"开关添加到" wsimport
"命令:
<wsdl:portType name="HelloPortType">
<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>
<wsdl:operation name="sayHello">...</wsdl:operation>
</wsdl:portType>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
19474 次 |
最近记录: |