Spring-ws、Apache CXF、Apache Axis2和Metro比较

4
我需要创建一个SOAP Web服务。我已经有了WSDL文件和接口以及实现(作为POJO)。
我现在在选择以下框架之间: - Axis2:看起来是我的选择。它可以作为Servlet在Servlet容器中工作,并且只需要在我的web.xml文件中映射一个Servlet。它与Spring集成良好,因为我的服务实现是Spring Bean。此外,它不需要我添加注释。我在我的接口或实现中没有注释。 - Spring-ws:看起来很酷,但据我所知,它强制我直接处理XML,而我不想这样做。我希望框架将消息反序列化并将其作为参数传递给我的POJO。 - Apache CXF:功能强大,具有Spring集成,但如果我使用Jax-WS前端,我将不得不使用注释,而我不想触及我的POJO。是否有简单的前端可用? - Metro是Jax-WS RI,因此它严重依赖于注释。
只是想告诉你我正在尝试做什么: 我们的应用程序使用SOAP连接到远程服务。他们给了我们WSDL,我们生成了代理类和DTO,所有这些内容都打包在jar中并存储在VCS中。现在我需要为此Web服务编写仿真。我不想生成新的DTO。
1个回答

2
我认为Spring WS是符合您要求的好选择。您不需要直接处理XML,Spring会序列化/反序列化许多类型的对象,包括所有数据传输对象。它们只需要被注释为JAXB实体即可。请查看此信息:http://static.springsource.org/spring-ws/sites/2.0/reference/html/server.html#d5e1063
如果您已经有一个WSDL文件,您可以从该WSDL生成DTO对象。有几个工具可以做到这一点,包括大多数IDE。

谢谢,但我已经有DTO了,它们没有JAXB注释:) 我可以让Spring-WS使用它们还是应该生成新的? - user996142
你现在无法访问源代码以进行注释吗?它们是否与你的WSDL匹配?另一种选择是从WSDL生成DTO对象,然后将这些对象映射到你已有的类中,但如果你不需要它,那就会增加很多额外的代码。 - jjathman
是的,它们匹配。我无法访问源代码。看起来我需要解释一下我的情况,我会编辑我的原始帖子,好吗? - user996142
使用Spring,您可以使用不同的编组器。请查看Castor编组器,我个人没有使用过它,但我认为它不需要像JAXB那样的注释,它可能适合您。http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/oxm.html#oxm-castor - jjathman
但是在可用的序列化程序列表中没有 Castor。只有 OXM 存在: http://static.springsource.org/spring-ws/sites/2.0/reference/html/server.html#d5e1063。不管怎么说,这是关于 DTO 的。那么服务方面呢?如果我的端点没有注解,我该如何配置 Spring 才能找到它呢?Marshaller 是“sws:annotation-driven”标记的参数,但我不想要基于注解的代码。我完全迷失了:( - user996142
哦,我明白了!Castor是OXM实现!很抱歉,但我仍然不理解注释驱动。 - user996142

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接