web-dev-qa-db-fra.com

Remplacement pour wsimport avec JDK 11

Je travaille actuellement sur un projet qui nécessite wsimport mais nous utilisons JDK11 et je viens de découvrir que wsimport a été supprimé de JDK depuis cette version.

J'ai cherché des réponses et j'ai essayé d'ajouter cette dépendance mais cela ne fonctionne pas pour le moment.

     <dependency>
        <groupId>javax.xml.ws</groupId>
        <artifactId>jaxws-api</artifactId>
        <version>2.2.11</version>
    </dependency>

Existe-t-il un remplacement pour wsimport dont je ne suis pas au courant?

Je vous remercie !

8
Etienne Ringot

Aujourd'hui, vous pouvez utiliser une fourchette en remplacement direct de org.codehaus.mojo: jaxws-maven-plugin: 2.5:

<plugin>
  <groupId>com.helger.maven</groupId>
  <artifactId>jaxws-maven-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    ...
  </configuration>
</plugin>

https://github.com/phax/jaxws-maven-plugin . Cela fonctionne bien avec jdk11

3

Je vais ajouter ce que j'ai trouvé grâce à mes recherches sur la mise à niveau vers JDK11 au cas où cela aiderait quelqu'un d'autre.

Wsimport a été déconseillé en tant que partie du JDK, mais a été open source à la Fondation Eclipse. Vous pouvez le télécharger avec le lien suivant:

[ https://repo1.maven.org/maven2/com/Sun/xml/ws/jaxws-ri/2.3.0/jaxws-ri-2.3.0.Zip] [1]

Ils ont changé wsimport d'un exécutable en un script bat/sh qui appelle le fichier jaxws-tools.jar. Je ne l'ai pas réellement vu fonctionner et j'ai toujours une exception ClassNotFoundException: javax.activation.DataSource. J'ai même changé leur script pour inclure le javax.activation-api-1.2.0.jar et cela ne fonctionne toujours pas. Ce n'est pas grave si j'essaie une construction via Maven ou si je l'exécute en ligne de commande.

C'était ma configuration de plugin:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>jaxws-maven-plugin</artifactId>
    <version>2.5</version>
    <dependencies>
        <dependency>
            <groupId>com.Sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>javax.activation</groupId>
            <artifactId>javax.activation-api</artifactId>
            <version>1.2.0</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <id>app-wsdl-exec</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>wsimport</goal>
            </goals>
            <configuration>
                <executable>${tool.wsimport}</executable>
                <wsdlFiles>
                    <wsdlFile>${basedir}/src/main/resources/app.wsdl</wsdlFile>
                </wsdlFiles>
                <bindingDirectory>src/main/resources/binding</bindingDirectory>
                <bindingFiles>
                    <bindingFile>ws-binding.xml</bindingFile>
                </bindingFiles>
                <packageName>com.app.ws</packageName>
                <staleFile>${project.build.directory}/jaxws/stale/APP.done</staleFile>
                <sourceDestDir>${basedir}/src/main/Java</sourceDestDir>
                <xnocompile>false</xnocompile>
                <useJdkToolchainExecutable>false</useJdkToolchainExecutable>
                <keep>true</keep>
            </configuration>
        </execution>
    </executions>
</plugin>

J'ai également utilisé ce qui suit pour que je puisse développer sur Windows et Jenkins pour construire sur Linux:

<profiles>
    <profile>
        <id>win</id>
        <activation>
            <os>
                <family>windows</family>
            </os>
        </activation>
        <properties>
            <tool.wsimport>${env.JAXWS_HOME}/bin/wsimport.bat</tool.wsimport>
        </properties>
    </profile>
    <profile>
        <id>nix</id>
        <activation>
            <os>
                <family>!windows</family>
            </os>
        </activation>
        <properties>
            <tool.wsimport>${env.JAXWS_HOME}/bin/wsimport.sh</tool.wsimport>
        </properties>
    </profile>
</profiles>
1
Christopher Shirley

Le plugin jaxws-maven n'est pas encore mis à jour pour JDK 11. Il y a un pull request ouvert sur le projet, mais il n'est pas encore fusionné.

Une solution temporaire pour wsimport est proposée ici: https://github.com/javaee/metro-jax-ws/issues/1251#issuecomment-441424365 , qui fonctionne probablement très bien sur Linux.

Sur notre projet, nous travaillons avec des environnements Windows et nous avons corrigé le wsimport selon l'exemple suivant:

<plugins>
    <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.8</version>
        <executions>
            <execution>
                <phase>generate-sources</phase>
                <configuration>
                    <target>
                        <mkdir dir="target/generated-sources/wsimport"/>

                        <property name="plugin_classpath" refid="maven.plugin.classpath" />

                        <exec executable="Java">
                            <arg value="-classpath"/>
                            <arg value="${plugin_classpath}"/>
                            <arg value="com.Sun.tools.ws.WsImport"/>
                            <arg value="-extension"/>
                            <arg value="-Xnocompile"/>
                            <arg value="-wsdllocation"/>
                            <arg value="/MyWSDL.wsdl"/>
                            <arg value="-s"/>
                            <arg value="target/generated-sources/wsimport"/>
                            <arg value="-p"/>
                            <arg value="com.company.client.generated"/>
                            <arg value="src/main/resources/MyWSDL.wsdl"/>
                        </exec>
                    </target>
                </configuration>
                <goals>
                    <goal>run</goal>
                </goals>
            </execution>
        </executions>
        <dependencies>
            <dependency>
                <groupId>ant-contrib</groupId>
                <artifactId>ant-contrib</artifactId>
                <version>1.0b2</version>
            </dependency>
            <dependency>
                <groupId>javax.jws</groupId>
                <artifactId>javax.jws-api</artifactId>
                <version>1.1</version>
            </dependency>
            <dependency>
                <groupId>javax.xml.bind</groupId>
                <artifactId>jaxb-api</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>com.Sun.xml.bind</groupId>
                <artifactId>jaxb-core</artifactId>
                <version>2.3.0.1</version>
            </dependency>
            <dependency>
                <groupId>com.Sun.xml.bind</groupId>
                <artifactId>jaxb-impl</artifactId>
                <version>2.3.2</version>
            </dependency>

            <!-- xml.ws module -->
            <dependency>
                <groupId>javax.xml.ws</groupId>
                <artifactId>jaxws-api</artifactId>
                <version>2.3.1</version>
            </dependency>
            <dependency>
                <groupId>com.Sun.xml.ws</groupId>
                <artifactId>jaxws-rt</artifactId>
                <version>2.3.1</version>
                <exclusions>
                    <exclusion>
                        <!-- declare the exclusion here -->
                        <groupId>org.glassfish.jaxb</groupId>
                        <artifactId>txw2</artifactId>
                    </exclusion>
                </exclusions> 
            </dependency>

            <!-- javax.activation -->
            <dependency>
                <groupId>javax.activation</groupId>
                <artifactId>activation</artifactId>
                <version>1.1.1</version>
            </dependency>

            <!-- wsimport -->
            <dependency>
                <groupId>com.Sun.xml.ws</groupId>
                <artifactId>jaxws-tools</artifactId>
                <version>2.3.1</version>
                <scope>compile</scope>
            </dependency>
        </dependencies>
    </plugin>
    <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <executions>
            <execution>
                <id>add-source</id>
                <phase>generate-sources</phase>
                <goals>
                    <goal>add-source</goal>
                </goals>
                <configuration>
                    <sources>
                        <source>target/generated-sources/wsimport</source>
                    </sources>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>
0
Maarten Damen