Я пытаюсь использовать wsimport (или, точнее, я использую мастер затмения, который использует wsimport) для создания новых классов на стороне сервера для веб-службы. Источником WSDL является текущая реализация через URL-адрес ../ServiceName?wsdl.wsimport создает классы, которые создают wsdl, который отличается от источника. Wsdl
Моя проблема заключается в том, что когда я публикую новые классы и перехожу к новому URL-адресу wsdl, результаты 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», чтобы просто «выполнить».
Я не могу понять, почему это изменилось или как исправить его в классах Java. Все аннотации кажутся правильными.
Вы используете Apache Axis2, Apache Axis или Apache CXF в своем Eclipse для генерации Java-классов из WSDL? –
Apache CXF Я верю. Но я не совсем уверен. Когда я публикую их, он говорит, что это CXF Webservice. Я публикую в Liberty Profile. – kutuzof
@BuhakeSindi Я использую IBM WebSphere JAX-WS. – kutuzof