我需要编写到多个外部web服务的集成。它们中的一些是SOAP (具有WSDL),其中一些非常特别- HTTP(s),通过基本身份验证或URL (!)中的参数进行身份验证,自然语言,如XML,它实际上不能很好地映射到域类。
目前,我已经使用Spring Web3.0 RestTemplate完成了spike集成,并使用JAXB2 (Jaxb2Marshaller)进行了绑定。需要某种类型的绑定,因为域类需要比XML更干净。
它起作用了,但感觉有点糟糕。显然,这在一定程度上是因为服务是如何构建的。我遇到的一个小问题是RestTemplate的命名,因为服务与REST无关。这是我可以接受的。不过,JAXB2感觉有点沉重。
所以,我正在寻找一些其他的替代方案。想法?我希望有一个简单的解决方案(这样RestTemplate就可以了),不要太过进取。
发布于 2011-08-19 21:21:32
如果我理解正确的话,您有一个应用程序必须使用不同的技术调用各种外部(web)服务。首先想到的是要有一些中级水平。虽然这可能和en ESB-solution一样复杂,但我猜这不是您想要的。
例如,您可以通过在其顶部具有接口'Consumer‘的类层次结构来实现此中间级别。方法: doConsume()等。
如果你深入研究它,你可能会有机会使用几种设计模式,比如Strategy或Template。记住要积极主动,试着问几次“如果……怎么办”。(例如:如果他们需要我使用另一个服务怎么办?等)
如果JAXB觉得太重,还可以找到其他API:
这将取决于哪一种情况更好。如果你遇到任何问题,我相信你能在这里找到帮助(还有比我更有实践经验的人;-)
发布于 2011-08-19 21:46:14
虽然您的一些服务可能是无模式的XML,但它们可能仍然有一个文档化良好的API。Spring推崇的技术之一是使用XPath/XQuery从请求中仅检索真正需要的信息,至少从web服务服务器端是这样。我知道这可能只是你解决方案的一部分,但我不确定这是不是一个特定的绑定框架就能满足你的所有需求。
https://stackoverflow.com/questions/7121875
复制相似问题