建议Java的Web服务框架

我想要一个开源和免费用于商业用途的Web服务框架,安全性也是一个主要问题。 请使用SOAP标准建议Java的Web服务框架。

以下是常见的框架,都相当成熟:

  • Apache CXF
  • Apache Axis2
  • Spring Web Services
  • JAX-WS RI

全部支持SOAP。

我使用过CXF和Spring-WS。 两者都易于配置和使用。

我建议使用JAX-WS实现: JAX-WS RI (属于Metro的一部分)或Apache CXF 。 从运行时的角度来看,两者都非常接近,但很多人发现CXF有更好的文档(可能是一个重要的标准)。 如果对你很重要,两者都提供与Spring的集成(实际上,体面的框架不能忽略Spring,所以这不是一个惊喜)。

Spring-WS是另一种选择,但不符合JAX-WS,仅支持契约优先方法(来自XSD) – 这是一种哲学选择 – 并且不支持许多WS- *标准(您可能不需要)。

在任何情况下,我都会远离Axis 2及其糟糕的部署架构和打包地狱(Axis 2 webapp本身就是一个需要打包在特定档案中的Web服务容器)。 我发现它完全适得其反。 最重要的是,它甚至表现不佳 。

Spring框架将成为这种要求的明确赢家。 Spring及其模块包括弹簧安全,弹簧网络服务使其适合这一个。

看看Axis吧。 它非常简单易用。 http://ws.apache.org/axis/

我同意Spring-WS选项。 我已经在不同的时间使用它,它很快成为我的Web服务选择,除非有其他因素明确排除它。

虽然这有点偏离主题,但如果您处于规划阶段,我会提出以下建议。

  1. 选择自上而下的方法。 Spring-WS肯定支持这个(它是首选方法)。 这样,如果您对底层代码进行更改,则无需担心意外更新WSDL。 此外,在设计时,您可以将WSDL视为接口点,而不是通过其他精心设计的文档。

  2. 使用JAXB生成请求/响应对象。 从长远来看,这更容易,并且肯定有助于确保您按照WSDL的要求进行编码(很多次我查看生成的对象并看到他们看起来不正确只是发现我已经修改过WSDL不正确)。

  3. 在端点中使用注释。

这些是要点。 祝好运 :-)。