cxf-codegen-plugin如何从jakarta.xml.ws生成Web服务?

huangapple go评论93阅读模式
英文:

How make cxf-codegen-plugin generate Webservices from jakarta.xml.ws?

问题

迁移从Java 8到Java 11。

将cxf-codegen-plugin从版本3.2.0升级到3.3.6。

插件仍然使用javax.jws.*而不是jakarta.jws.*从wsdl文件生成Java存根:

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

/**

  • 此类由Apache CXF 3.3.6生成
  • 2020-08-12T19:22:40.406+02:00
  • 生成的源代码版本:3.3.6

*/

我是否理解错误,即javax.jws已被弃用,应该更改为jakarta.jws?

我如何实现使用所需包生成代码?

英文:

Migrating from Java 8 to Java 11.

Updated cxf-codegen-plugin from version 3.2.0 to 3.3.6.

Plugin still generates Java stubs from wsdl files using packages from javax.jws.* instead of from jakarta.jws.*:

  1. import javax.jws.WebMethod;
  2. import javax.jws.WebParam;
  3. import javax.jws.WebResult;
  4. import javax.jws.WebService;
  5. /**
  6. * This class was generated by Apache CXF 3.3.6
  7. * 2020-08-12T19:22:40.406+02:00
  8. * Generated source version: 3.3.6
  9. *
  10. */

Am I getting it wrong that javax.jws is deprecated and should be changed to jakarta.jws?

And how do I accomplish code generation with desired packages?

答案1

得分: 8

问题已在CXF-8371中解决。

如果您升级到版本大于4.0.0,它将生成jakarta.jws而不是javax.jws。

英文:

Issue has been resolved in CXF-8371

If you upgrade to version >4.0.0 it will generate jakarta.jws instead of javax.jws.

答案2

得分: 5

尝试在生成源代码阶段使用maven-replacer-plugin,在我的情况下,我在目标文件夹上生成客户端文件,然后在那里替换包。

  1. <plugin>
  2. <groupId>com.google.code.maven-replacer-plugin</groupId>
  3. <artifactId>maven-replacer-plugin</artifactId>
  4. <version>1.4.1</version>
  5. <executions>
  6. <execution>
  7. <id>replace-for-jakarta</id>
  8. <phase>process-sources</phase>
  9. <goals>
  10. <goal>replace</goal>
  11. </goals>
  12. <configuration>
  13. <filesToInclude>target/generated/**/*.java</filesToInclude>
  14. <preserveDir>true</preserveDir>
  15. <replacements>
  16. <replacement>
  17. <token>javax.jws</token>
  18. <value>jakarta.jws</value>
  19. </replacement>
  20. </replacements>
  21. </configuration>
  22. </execution>
  23. </executions>
  24. </plugin>
英文:

Try using maven-replacer-plugin at generated-source phase, in my case I generate client files on target folder and then replace package there

  1. &lt;plugin&gt;
  2. &lt;groupId&gt;com.google.code.maven-replacer-plugin&lt;/groupId&gt;
  3. &lt;artifactId&gt;maven-replacer-plugin&lt;/artifactId&gt;
  4. &lt;version&gt;1.4.1&lt;/version&gt;
  5. &lt;executions&gt;
  6. &lt;execution&gt;
  7. &lt;id&gt;replace-for-jakarta&lt;/id&gt;
  8. &lt;phase&gt;process-sources&lt;/phase&gt;
  9. &lt;goals&gt;
  10. &lt;goal&gt;replace&lt;/goal&gt;
  11. &lt;/goals&gt;
  12. &lt;configuration&gt;
  13. &lt;filesToInclude&gt;target/generated/**/*.java&lt;/filesToInclude&gt;
  14. &lt;preserveDir&gt;true&lt;/preserveDir&gt;
  15. &lt;replacements&gt;
  16. &lt;replacement&gt;
  17. &lt;token&gt;javax.jws&lt;/token&gt;
  18. &lt;value&gt;jakarta.jws&lt;/value&gt;
  19. &lt;/replacement&gt;
  20. &lt;/replacements&gt;
  21. &lt;/configuration&gt;
  22. &lt;/execution&gt;
  23. &lt;/executions&gt;
  24. &lt;/plugin&gt;

答案3

得分: 1

在我们的情况下,配置如下:

  1. <configuration>
  2. <filesToInclude>${project.build.directory}/generated-sources/cxf/**/*.java</filesToInclude>
  3. <preserveDir>true</preserveDir>
  4. <replacements>
  5. <replacement>
  6. <token>javax.xml.bind</token>
  7. <value>jakarta.xml.bind</value>
  8. </replacement>
  9. <replacement>
  10. <token>javax.annotation</token>
  11. <value>jakarta.annotation</value>
  12. </replacement>
  13. <replacement>
  14. <token>javax.jws</token>
  15. <value>jakarta.jws</value>
  16. </replacement>
  17. <replacement>
  18. <token>javax.xml.ws</token>
  19. <value>jakarta.xml.ws</value>
  20. </replacement>
  21. </replacements>
  22. </configuration>
英文:

in our case the configuration was like this:

  1. &lt;configuration&gt;
  2. &lt;filesToInclude&gt;${project.build.directory}/generated-sources/cxf/**/*.java&lt;/filesToInclude&gt;
  3. &lt;preserveDir&gt;true&lt;/preserveDir&gt;
  4. &lt;replacements&gt;
  5. &lt;replacement&gt;
  6. &lt;token&gt;javax.xml.bind&lt;/token&gt;
  7. &lt;value&gt;jakarta.xml.bind&lt;/value&gt;
  8. &lt;/replacement&gt;
  9. &lt;replacement&gt;
  10. &lt;token&gt;javax.annotation&lt;/token&gt;
  11. &lt;value&gt;jakarta.annotation&lt;/value&gt;
  12. &lt;/replacement&gt;
  13. &lt;replacement&gt;
  14. &lt;token&gt;javax.jws&lt;/token&gt;
  15. &lt;value&gt;jakarta.jws&lt;/value&gt;
  16. &lt;/replacement&gt;
  17. &lt;replacement&gt;
  18. &lt;token&gt;javax.xml.ws&lt;/token&gt;
  19. &lt;value&gt;jakarta.xml.ws&lt;/value&gt;
  20. &lt;/replacement&gt;
  21. &lt;/replacements&gt;
  22. &lt;/configuration&gt;

huangapple
  • 本文由 发表于 2020年8月13日 04:16:56
  • 转载请务必保留本文链接:https://go.coder-hub.com/63384143.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定