Maven с использованием JAX-WS 2.1 вместо JAX-WS 2.2 - PullRequest
10 голосов
/ 04 августа 2011

Я использую Netbeans 7 с Maven 2.2.1 и jaxws-maven-plugin 1.12.Код развернут на Glassfish 3.1 - или будет, когда я получу его для компиляции:)

Когда я собираю проект, wsimport работает должным образом и генерирует исходные файлы из предоставленного WSDL.Проблема состоит в том, что сборка завершается неудачей на этапе компиляции со следующими тремя исключениями.Изучив это, я вижу, что эти конструкторы были добавлены из JAX-WS 2.1 в JAX-WS 2.2.Я считаю, что wsimport использует JAX-WS 2.1, а компиляция использует JAX-WS 2.2.

Может ли кто-нибудь подтвердить мое подозрение?Или, если я ошибаюсь, у вас есть идея, что может быть причиной этого?

Спасибо.


ОБНОВЛЕНО / УТОЧНЕНИЕ ПРОБЛЕМЫ Интернетклиент службы расширяет javax.xml.ws.Service, и возникает ошибка, когда клиент пытается вызвать конструктор суперкласса с тремя аргументами.Поскольку суперкласс не имеет конструктора с тремя аргументами, он завершается ошибкой.

javax.xml.ws.Service находится в JDK SE 1.6 и JAX-WS 2.1 как неправильная версия.

javax.xml.ws.Service находится в JAX-WS 2.2 как правильная версия.


Ошибка возникает три раза, поскольку она присутствует в трех переопределенных конструкторах, но это та же ошибка, поэтому я включил ее только один раз.

cannot find symbol
symbol  : constructor Service(java.net.URL,javax.xml.namespace.QName,javax.xml.ws.WebServiceFeature[])
location: class javax.xml.ws.Service


<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>jaxws-maven-plugin</artifactId>
            <version>1.12</version>
            <executions>
                <execution>
                    <goals>
                        <goal>wsimport</goal>
                    </goals>
                    <configuration>
                        <wsdlFiles>
                            <wsdlFile>*path to WSDL*</wsdlFile>
                        </wsdlFiles>
                        <wsdlLocation>*url to WSDL*</wsdlLocation>
                        <staleFile>${project.build.directory}/jaxws/stale/BudgetCheckingServiceService.stale</staleFile>
                    </configuration>
                    <id>wsimport-generate-BudgetCheckingServiceService</id>
                    <phase>generate-sources</phase>
                </execution>
            </executions>
            <dependencies>
                <dependency>
                    <groupId>com.sun.xml.ws</groupId>
                    <artifactId>jaxws-tools</artifactId>
                    <version>2.2.6-SNAPSHOT</version>                            
                </dependency>

                <dependency>
                    <groupId>javax.xml</groupId>
                    <artifactId>webservices-api</artifactId>
                    <version>1.4</version>
                </dependency>
            </dependencies>
            <configuration>                    
                <sourceDestDir>${project.build.directory}/generated-sources/jaxws-wsimport</sourceDestDir>
                <xnocompile>true</xnocompile>
                <verbose>true</verbose>
                <extension>true</extension>
                <catalog>${basedir}/src/jax-ws-catalog.xml</catalog>
            </configuration>
        </plugin>

Ответы [ 2 ]

6 голосов
/ 04 августа 2011

Как вы можете видеть в помете jaxws-maven-plugin-1.12 , она имеет зависимость jaxws-tools-2.1.7. Ну, вы переопределили это через пом. Но это переопределение работает, пока версия переопределения (2.2.6-SNAPSHOT) api-совместима с версией плагина по умолчанию (2.1.7).

Очевидно, исходя из ваших замечаний, они не совместимы с API. Так что, как я вижу, это не сработает. Здесь - ссылка для подражания.

Запустите mvn install с флагом -X, чтобы определить точную версию jaxws-tools, используемую этим плагином. Если вы не возражаете, сделайте пастинку, тогда мы тоже можем посмотреть!

РЕДАКТИРОВАТЬ: Одна вещь, которую вы можете сделать, это; обновите депо jaxws-tools maven-jaxws-plugin до нужной вашей версии. Затем исправьте проблемы, возникающие из-за несовместимости API (например, проблемы с конструктором). Затем отправьте исправление в upstream .

.
1 голос
/ 24 октября 2012

У меня была похожая проблема, и она была решена путем помещения файла webservices-api.jar в мою папку %JDK_HOME%/jre/lib/endorsed.

...