gpt4 book ai didi

java - jax-ws 生成 : @WebMethod vs. @ResponseWrapper

转载 作者:搜寻专家 更新时间:2023-11-01 02:51:01 25 4
gpt4 key购买 nike

我有两个非常相似的 wsdl 文件,它们生成不同的 Java 代码。在第一种情况下,我得到一个带有@WebMethod-annotation 和返回值的方法,在第二种情况下,我得到一个带有@ResponseWrapper-annotation 并且没有生成返回值的方法。我想要返回值。

1。服务1

<wsdl:operation name="foo">
<wsdl:input name="deleteUser" message="tns:deleteUserRequest"/>
<wsdl:output name="deleteUserResponse" message="tns:deleteUserResponse"/>
<wsdl:fault name="ServiceFault" message="tns:ServiceFault"/>
</wsdl:operation>

生成:

    @WebMethod
@WebResult(name = "commonReturnType", targetNamespace = "http://www.foo.com/fooSchemaTypes-v3.0/", partName = "returnValue")
public CommonReturnType foo(
@WebParam(name = "fooType", targetNamespace = "http://www.foo.com/fooSchemaTypes-v3.0/", partName = "user")
FooType user)
throws ServiceFault
;

2。 FooBar服务

    <wsdl:operation name="fooBar">
<wsdl:input name="fooBar" message="tns:fooBarRequest"></wsdl:input>
<wsdl:output name="ackFileResponse" message="tns:fooBarResponse"></wsdl:output>
<wsdl:fault name="ServiceFault" message="tns:fooBarFault"></wsdl:fault>
</wsdl:operation>

生成:

  @WebMethod
@RequestWrapper(localName = "fooBar", targetNamespace = "http://www.foo.com/fooBarSchemaTypes-v1.0/", className = "com.foo.fooBar.v1_0.GetFileType")
@ResponseWrapper(localName = "fooBarResponse", targetNamespace = "http://www.foo.com/fooBarSchemaTypes-v1.0/", className = "com.foo.fooBar.v1_0.CommonReturnType")
public void ackFile(
@WebParam(name = "id", targetNamespace = "")
String id,
@WebParam(name = "timestamp", targetNamespace = "")
XMLGregorianCalendar timestamp,
@WebParam(name = "anotherId", targetNamespace = "")
String anotherId,
@WebParam(name = "fileId", targetNamespace = "")
String fileId,
@WebParam(name = "returnCode", targetNamespace = "", mode = WebParam.Mode.OUT)
Holder<ReturnCode> returnCode,
@WebParam(name = "errorMessage", targetNamespace = "", mode = WebParam.Mode.OUT)
Holder<String> errorMessage);

生成代码的代码完全一样。

如有必要,我可以提供消息和类型的标记。我希望匿名不会搞乱相关部分。

我希望第二个版本也有返回值。我怎样才能做到这一点?

最佳答案

这有帮助(仍然不明白,为什么这在情况 2 中是必要的,而在情况 1 中则不是必需的):

<!--JAX-WD Customization: disable wrapper style rules
see also: http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/2.0/jaxws/customizations.html#2.2_Wrapper_Style
-->
<jaxws:bindings wsdlLocation="v1.0/dxpInsurerServiceV1.0.wsdl" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>

在 jaxws-custom.xml 中

这是在生成 Ant 任务中:

另见:wsimport not using complex input types

关于java - jax-ws 生成 : @WebMethod vs. @ResponseWrapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11188197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com