gpt4 book ai didi

java - wsimport 创建生成与源 wsdl 不同的 wsdl 的类

转载 作者:行者123 更新时间:2023-12-01 12:04:04 24 4
gpt4 key购买 nike

我正在尝试使用 wsimport(或更准确地说,我正在使用使用 wsimport 的 eclipse 向导)来为 Web 服务生成新的服务器端类。源 WSDL 通过 ../ServiceName?wsdl URL 来自当前实现。

我的问题是,当我发布新类并导航到新的 ?wsdl URL 时,结果 WSDL 与原始结果不同。当现有客户端尝试使用新版本的服务时,这似乎是导致错误的原因。下面是 WSDL 的一个小节,其中包含一个似乎会导致客户端出现问题的差异示例:

原文:

<wsdl:message name="executeResponse">
<wsdl:part element="impl:ServiceNameResult" name="ServiceNameResult"/>
</wsdl:message>
<wsdl:message name="executeRequest">
<wsdl:part element="impl:executeRequest" name="executeRequest"/>
</wsdl:message>
<wsdl:portType name="ServiceName">
<wsdl:operation name="execute" parameterOrder="executeRequest">
<wsdl:input message="impl:executeRequest" name="executeRequest"/>
<wsdl:output message="impl:executeResponse" name="executeResponse"/>
</wsdl:operation>
</wsdl:portType>

新:

<wsdl:message name="executeResponse">
<wsdl:part element="tns:ServiceNameResult" name="ServiceNameResult">
</wsdl:part>
</wsdl:message>
<wsdl:message name="execute">
<wsdl:part element="tns:executeRequest" name="executeRequest">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="ServiceName">
<wsdl:operation name="execute">
<wsdl:input message="tns:execute" name="execute">
</wsdl:input>
<wsdl:output message="tns:executeResponse" name="executeResponse">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>

更改发生在 portType 输入消息中。它从“executeRequest”重命名为“execute”。

我不明白为什么会改变或者如何在 java 类中纠正它。所有注释看起来都是正确的。

最佳答案

似乎缺少“Request”后缀是 CXF 的一个功能,而不是一个错误。我需要做的是更新我的客户端或实现服务器端拦截器:

http://cxf.apache.org/docs/interceptors.html

这个:

您需要子类化 org.apache.cxf.service.factory.DefaultServiceConfiguration 并重写 getInputMessageName 方法以在 QName 后面附加“Request”。然后,您必须配置 CXF 以将服务配置指向您的子类

如果我能弄清楚如何做到这一点,这似乎也是一个很好的解决方案。 https://stackoverflow.com/questions/27818072/subclassing-defaultserviceconfiguration

关于java - wsimport 创建生成与源 wsdl 不同的 wsdl 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27780043/

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