3

Я пытаюсь скомпилировать wsdl от партнера с JAX-WS 2.2.6, встроенного в GlassFish 3.1.2.2, и получить следующую ошибку компиляции:Как настроить отображение JAXWS операции SOAP, имя которой зарезервировано в Java

[wsimport] [ERROR] Invalid operation "Void", it's java reserved word, can't generate java method. Use customization to change the operation name. 

Так что я попытался сопоставить это имя операции с другим имени методы Java с помощью пользовательского JAXWS связывания файла:

<?xml version="1.0" encoding="utf-8"?> 
<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" 
       xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
       wsdlLocation="https://partner.com/BasicOperationsService?wsdl"> 

    <jaxws:bindings node="wsdl:definitions/wsdl:binding[@name='BasicHttpBinding_BasicOperations']/wsdl:operation[@name='Void']"> 
    <jaxws:method name="voidTx"/> 
    </jaxws:bindings-> 

</jaxws:bindings> 

но это, кажется, не признает этот метод элемента:

[wsimport] [ERROR] invalid extension element: "jaxws:method" (in namespace "http://java.sun.com/xml/ns/jaxws") 

Я немного на потери, как это правильное пространство имен и точно так, как описано в разделе 9.2.7.1 из https://jax-ws.java.net/nonav/2.2.6/docs/ch03.html#standard-customizations

Это не проблема, если XPath, как я изменить узел, то я получаю другая ошибка, что «оценка XPath приводит к пустующему целевому узлу».

Любая идея? Спасибо!

ответ

1

У меня была такая же проблема, но она помогла изменить xPath. Заменить wsdl:binding на wsdl:portType

wsdl:definitions/wsdl:portType[@name='xxx']/wsdl:operation[@name='yyy'] 
+0

Это верно. Я закончил тем, что исправил это методом проб и ошибок и забыл опубликовать ответ. Спасибо за это. – TheArchitect