我已经从多模块 Maven 项目中的 WSDL 文件生成了一个 axis2 Web 服务。
wsdl2java
已为我生成了 stub 和基本框架。
将这些生成的 stub 集成到现有业务逻辑中的最佳方法是什么?
我有几个考虑因素:
- 最简单的方法是在 stub 内实现业务逻辑。但我相信这会带来麻烦:
- stub 现在正在作为
mvn clean install
命令的一部分生成。 Mavenclean
删除生成的源文件夹。我必须保护已实现业务逻辑的 stub 不被删除。 - 我不想将生成的 stub 中的任何内容提交到 VCS 中。我想保持干净。
- stub 现在正在作为
- 可以选择在另一个源文件夹中扩展 stub 类。这消除了以前方法的缺点,但带来了一些新的东西:
- 正如我从 AXIS2 文档中了解到的,我必须在
services.xml
中指定服务类(这是使用 maven-axis2 插件生成的)。因此,应保护生成的 stub 的某些部分免遭修改。
- 正如我从 AXIS2 文档中了解到的,我必须在
有办法避免这种情况吗?比如在 web.xml 中指定服务类实现?或类似的东西?
最佳答案
Axis2 兼容 JAX-WS,因此您可以使用 wsimport
工具而不是 wsdl2java
。我假设您已采用契约优先方法,并且您正在从 WSDL 文件生成 stub 。这是doc到 wsimport maven 插件。很多事情都可以改变(例如destDir
)。
Maven clean 删除生成的源文件夹。我必须保护已实现业务逻辑的 stub 不被删除。
您实际上可以为常规包结构(可能是其自己的包)生成 stub ,并在 maven clean 插件 configuration 中添加包含(或排除)生成的文件。 。如果你使用这个mvn plugin ,您的 IDE 应该将生成的文件添加到项目类路径中。
如果我是您,我肯定会尝试尽可能多地兼容 JAX-WS,因为如果您这样做,您将不会被供应商锁定到 Axis2。但您将来可以切换到 CXF、Metro 或 Jboss WS。 services.xml
文件是 Axis2 特定的。
因此,应保护生成的 stub 的某些部分免遭修改。
您可以将这些资源标记为被 SCM 系统忽略。并将它们标记为 Eclipse 中的派生。这是mvn plugin为了它。如果您这样做,开发人员在尝试更改它们时将会收到通知。 IntelliJ IDEA 中肯定也有类似的东西。
关于java - 多模块 Maven 项目中的 Axis2 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17103871/