java - 多模块 Maven 项目中的 Axis2 Web 服务

标签 java web-services maven apache-axis

我已经从多模块 Maven 项目中的 WSDL 文件生成了一个 axis2 Web 服务。

wsdl2java 已为我生成了 stub 和基本框架。

将这些生成的 stub 集成到现有业务逻辑中的最佳方法是什么?

我有几个考虑因素:

  • 最简单的方法是在 stub 内实现业务逻辑。但我相信这会带来麻烦:
    • stub 现在正在作为 mvn clean install 命令的一部分生成。 Maven clean 删除生成的源文件夹。我必须保护已实现业务逻辑的 stub 不被删除。
    • 我不想将生成的 stub 中的任何内容提交到 VCS 中。我想保持干净。
  • 可以选择在另一个源文件夹中扩展 stub 类。这消除了以前方法的缺点,但带来了一些新的东西:
    • 正如我从 AXIS2 文档中了解到的,我必须在 services.xml 中指定服务类(这是使用 maven-axis2 插件生成的)。因此,应保护生成的 stub 的某些部分免遭修改。

有办法避免这种情况吗?比如在 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/

相关文章:

java - Aspectj maven插件错误

xslt - 将 Xalan 与 Saxon 一起使用

java - 为什么要使用自定义 POM 存储 Artifact

java - 转换为 Dalvik 格式失败,错误 1

java - 如何在循环外传递变量?

java - 从 Java 中的 RESTful Web 服务方法返回一个整数

php - 使用 PHP 调用 WCF 服务(具有联合安全性)

java - gmaps primefaces 问题

java - jhipster V5.8.2 中将initialValue 添加到SequenceGenerator

xml - 使用 perl 的 SOAP 客户端 - WSDL URL 可用