gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:01:07 27 4
gpt4 key购买 nike

您好,我有一个复杂的场景要处理。我有一个使用特定 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com