【发布时间】:2013-06-10 19:55:50
【问题描述】:
我有一个从多模块 maven 项目中的 WSDL 文件生成的axis2 web 服务。
wsdl2java 为我生成了存根和基本骨架。
将这些生成的存根集成到现有业务逻辑中的最佳方法是什么?
我有几个考虑:
- 最简单的方法是在存根内部实现业务逻辑。但我相信这会导致麻烦:
- 现在正在生成存根,作为
mvn clean install命令的一部分。 Mavenclean删除生成的源文件夹。我必须保护已实现业务逻辑的存根不被删除。 - 我不想将生成的存根中的任何内容提交到 VCS。我想保持清洁。
- 现在正在生成存根,作为
- 可以选择在另一个源文件夹中扩展存根类。这消除了以前方法的缺点,但给舞台带来了一些新的东西:
- 正如我从 AXIS2 文档中了解到的,我必须在
services.xml中指定服务类(这是使用 maven-axis2 插件生成的)。因此,应保护生成的存根的某些部分不被修改。
- 正如我从 AXIS2 文档中了解到的,我必须在
有没有办法避免这种情况?类似于在 web.xml 中指定服务类实现?或类似的东西?
【问题讨论】:
-
我对@987654325@ 的经验比
Axis2的经验要多,但您不只是在src/main/java中实现生成的接口(通过复制实现存根或创建新的)并复制services.xml到src/main/resources(或任何合适的地方)?如果需要,您可以设置一个 Maven 配置文件来打开和关闭生成。 -
让我们暂时离开 Maven 配置文件的问题。假设我想在每次构建项目时生成存根。 Axis 在 /src/main/generated 文件夹中生成存根、配置和实现。如果我想在我的代码中扩展实现,我必须提供配置(将被下一代 WS 覆盖)。所以我不得不在生成的文件夹中扩展存根实现,并从 maven clean 目标中排除存根实现。
-
您也想每次都生成
services.xml文件吗?我只需将其复制到src/main/resources/META-INF/services.xml并编辑它以指向src/main/java中的实现类。
标签: java web-services maven axis2