java - 哪个 Web 服务堆栈允许将 wsdl first Web 服务绑定(bind)到 Java 中的现有类?

标签 java class wsdl

您好, 我有一个复杂的场景要处理。我有一个使用特定 XML 模式的 wsdl 文件。 XML 模式实际上是规范的手工实现。还有一个基于 Java 的相同规范的实现。所以手头的 WSDL 和 Java 类中使用的 XSD 非常相似,但不完全相同。 几乎所有 Web 服务堆栈都允许从 WSDL 创建类或从 Java 类注释创建 WSDL。 我想要做的是使用 WSDL 并将 wsdl 中使用的 XSD 绑定(bind)到现有的 java 类。 我应该/可以通过用现有的 Java 类手动替换生成的 Java 类来做到这一点吗?是否需要更改配置文件中的类型名称并将绑定(bind)注释移动到现有类? 如果您知道任何最佳实践,或者以实用的方式灵活地支持这种类型的 Java Web 服务堆栈,我们将不胜感激。

最好的问候 塞夫

最佳答案

我建议使用 Spring 的 Web Services module ,它不涉及代码生成,但提供了清晰的关注点分离。通过允许您在一侧提供 WSDL 和现有模式 (contract first),在另一侧提供现有的基于 Java 的域模型,以及 a way to plugin,可以很好地解决不同的问题。在您选择的 OXM(对象-XML 映射)技术中。

由于您有手工制作的 WSDL/模式和手工制作的 Java 类,真正的工作将是配置您的 OXM。我更喜欢 JiBX,因为如果学习曲线看起来太陡峭,它会将关注点分开(没有 XML 注释垃圾混入您的域),并使用 JAXB 作为备份。 Spring Web Services 支持多种其他 OXM 框架,您甚至可以同时使用多种不同的框架。

就最佳实践而言,我认为手工编写的代码是最佳实践,尽管我可能属于少数。如果您从 XML 生成类,您最终得到的类是没有行为的简单数据容器(假设您希望在 WSDL/XSD 更改时重新生成它们)。如果您喜欢面向对象的范例,这是很糟糕的,因为您最终不得不将“业务逻辑”放在实用程序/助手/服务等中,而不是放在它真正所属的域对象中。这是我喜欢 JiBX 的原因之一。我可以制作非常好的 OO 对象,其行为是一个很好的干净模式,不一定与对象匹配,并且可以使用类似于 hibernate 对 ORM(对象关系映射)的映射文件来管理对任何一方的更改。您可以对 JAXB 执行相同的操作,但这需要将 XML 结构嵌入到您的对象模型中,并将单个 XML 表示绑定(bind)到它(而对于 JiBX,您可以有多个)。

关于java - 哪个 Web 服务堆栈允许将 wsdl first Web 服务绑定(bind)到 Java 中的现有类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527087/

相关文章:

java - 如何同步事物

maven - Ant 中的 WSDL2Java

java - 如何在 Java 中为 REST 服务获取 WSDL

python - 使用Python计算坡度的程序

c++ - 我的代码中列表、成员函数和类的使用是否正确?

php - 在PHP中,我们如何获取父类变量?

c# - 如何在 C# 中使用 Chatter SalesForce WSDL 服务检索 FeedComment

java - 为什么短对象列表无法检查它是否包含该值

java - 没有配置文件的多个 src/main/resources 文件夹(我希望一次构建多个版本)

特定 PID 的 Java 选项