2

我需要编写与多个外部 Web 服务的集成。其中一些是 SOAP(具有 WSDL),其中一些几乎是临时的 - HTTP(s),通过基本身份验证或 URL 中的参数(!)进行身份验证,像 XML 这样的自然语言,它并不能很好地映射到域类..

目前,我已经使用 Spring Web 3.0 完成了峰值集成RestTemplate并使用 JAXB2 ( Jaxb2Marshaller) 进行了绑定。需要某种绑定,因为域类需要比 XML 更干净。

它有效,但感觉有点糟糕。显然,这部分只是因为服务是如何构建的。我遇到的一个小问题是将RestTemplate服务命名为与 REST 无关。这是我可以忍受的。不过 JAXB2 感觉有点重。

所以,我正在寻找其他一些替代方案。想法?我想要一个简单的解决方案(所以 RestTemplate 很好),不要太企业化..

4

2 回答 2

1

尽管您的某些服务可能是无模式 XML,但它们仍可能具有记录良好的 API。至少从 Web 服务服务器端,Spring 人员似乎正在推动的技术之一是使用 XPath/XQuery 从请求中仅检索您真正需要的信息。我知道这最终可能只是您解决方案的一部分,但我不确定这是一种特定绑定框架是否能够满足您所有需求的情况。

于 2011-08-19T13:46:14.117 回答
1

如果我理解正确,您有 1 个应用程序必须使用不同的技术调用各种外部(Web)服务。首先想到的是有一些中级水平。虽然这可能像 en ESB 解决方案一样复杂,但我的猜测是这不是您想要的。

例如,您可以通过在其顶部具有接口“消费者”的类层次结构来实现此中间级别。要实现的方法:doConsume() 等。

如果您研究它,您可能有机会使用几种设计模式,如策略或模板。记住要积极主动并尝试问几次“如果……怎么办”(例如:如果他们需要我使用另一项服务怎么办?等等)

如果 JAXB 感觉太重,可以找到其他 API:

这将取决于哪种情况会更好。如果您遇到任何问题,我相信您可以在这里找到帮助(以及比我有更多实践经验的人;-)

于 2011-08-19T13:21:32.297 回答