ошибка при использовании веб-службы .Net из WSDL в NetBeans - PullRequest
1 голос
/ 08 февраля 2012

У меня есть веб-сервис, определенный в .Net, и я хочу использовать его, используя Java.Когда я хочу создать клиент веб-службы из WSDL в NetBeans, я получаю следующую ошибку:

Клиент веб-службы не может быть создан утилитой JAXWS: wsimport.

Свойство [ОШИБКА] "Любой"уже определено.использованиечтобы разрешить этот конфликт.

Вот одна часть моего файла WSDL:

    <s:element name="Select_Normal_Response">
    <s:complexType>
        <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="Select_Normal_Result">
                <s:complexType>
                    <s:sequence>
                        <s:any minOccurs="0" maxOccurs="unbounded" namespace="..."/>
                        <s:any minOccurs="1" namespace="" processContents="lax" />
                    </s:sequence>
                </s:complexType>
            </s:element>
        </s:sequence>
    </s:complexType>
</s:element>
<s:element name="Select_Normal_With_LastIDResponse">
    <s:complexType>
        <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="Select_Normal_With_LastIDResult">
                <s:complexType>
                    <s:sequence>
                        <s:any minOccurs="0" maxOccurs="unbounded" namespace="..."/>
                        <s:any minOccurs="1" namespace="..." processContents="lax" />
                    </s:sequence>
              </s:complexType>
            </s:element>
        </s:sequence>
    </s:complexType>
</s:element>

Я думаю, потому что у меня есть два s: любые теги, я получаю эту ошибку.Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 19 октября 2013

Вам нужно использовать файл привязки, чтобы дать любому любому уникальное имя.Создайте, например, файл bindings.xjb:

    <jaxws:bindings
            xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
            jxb:version="2.0"
            xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
            xmlns:xs="http://www.w3.org/2001/XMLSchema"
            xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
            xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
            jxb:extensionBindingPrefixes="xjc"
    >
        <jaxws:bindings>
            <jxb:bindings node="/s:element/.../s:any[@namespace='...']">
                <jxb:property name="any2" />
            </jxb:bindings>
        </jaxws:bindings>
    </jaxws:bindings>

Затем вы можете построить классы, используя

    wsimport "http://www.yourwsdl.com/path?wsdl" -b bindings.xjb

Если вы используете maven, вы можете использовать jaxws-maven-plugin.При использовании этого автоматически создаются клиентские классы при сборке проекта.

например

    <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <version>1.9</version>
            <executions>
                    <execution> 
                            <id>webservice</id>
                            <goals> 
                                    <goal>wsimport</goal>
                            </goals>
                            <configuration>
                                    <packageName>com.company.app.wsclient</packageName>
                                    <wsdlUrls>
                                            <wsdlUrl>http://www.yourwsdl.com/path?wsdl</wsdlUrl>
                                    </wsdlUrls>
                                    <bindingFiles>
                                            <string>${basedir}/src/main/resources/bindings.xjb</string>
                                    </bindingFiles>
                            </configuration>
                    </execution>
            </executions>
            <dependencies>
                    <dependency>
                            <groupId>com.sun.xml.ws</groupId>
                            <artifactId>jaxws-tools</artifactId>
                            <version>2.2.5</version>
                    </dependency>
            </dependencies>
    </plugin>
1 голос
/ 10 мая 2012

Второй тег "s: any" имеет специальное пространство имен Microsoft "urn: schemas-microsoft-com: xml-diffgram-v1", которое является нестандартным.Вы можете удалить тег из wsdl и повторить попытку создания клиента веб-службы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...