是否可以在没有像Axis / CXF这样的Web服务框架的情况下开发Web服务应用程序?

时间:2016-05-08 11:08:40

标签: java web-services cxf axis

我觉得有点天真,但我试图更好地了解Web服务框架。

您是否绝对需要Jax-WS / RS参考实现(如Axis / CXF)在Tomcat等服务器上运行Web服务应用程序?如果您不需要像wsdl2java自动生成这样的东西,是否可以使用自己的导入集合(Spring Framework库,Java EE库,JAXB等)?

Axis / Axis2 / CXF是否是任何Web服务项目的重要组成部分,或者只是一个不错的选择?

我过去曾使用过CXF和Axis,但两者都埋在Spring和我的IDE下面,我从未清楚地了解Web服务框架的结束位置以及Spring框架/依赖项的开始。

关于Web服务框架的文档也没有告诉我太多,因为它侧重于他们的框架可以做什么,以及如何在没有它们的情况下可以实现。

由于

1 个答案:

答案 0 :(得分:1)

如果要在Tomcat上部署Web应用程序,那么您需要做的最低限度就是实现javax.servlet.Servlet接口。

如果,通过Web服务,您的意思是SOAP服务,那么您将需要做更多的事情(具体而言,您将需要实现以某种方式运行的Servlet)。 CXF / Axis等框架提供了两个主要功能(以及无数较小的功能):

  1. 序列化/反序列化
  2. 裸HTTP请求可用作字节流(InputStream / OutputStream)。在许多应用程序中,您需要将这些字节流转换为Java对象。使用JAX-WS,可以通过要求输入/输出为XML并使用JAX-B来完成。其他框架(例如JAX-RS)可以使用其他输入/输出格式(如JSON)。

    1. 路由
    2. HTTP请求由URL(可能带有查询参数),标题,实体主体和调用本身周围的各种元数据(例如IP地址,会话对象等)组成。不知何故,这个请求必须通过参数映射到服务中的方法调用。在JAX-WS中,这是通过将SOAP信封的部分映射到从反射中收集的服务端点的信息来完成的。

      <强>因此...

      如果您想跳过使用Axis / Axis2 / CXF,您需要找到一些方法来自己实现这两个功能。您几乎肯定会对解决这些问题所涉及的微小细节(例如SOAP RPC /编码消息格式与文档/文字格式等)感到惊讶。

      CXF还将实现一些SOAP扩展,其中最突出的是ws-security(尽管很多人最终都使用Spring安全性并绕过正式的SOAP安全性。)

      <强>替代

      你的问题有点模糊,所以我不确定你之后会有什么替代方案。只使用Axis / CXF ...

      1. 不同的JAX-WS库
      2. 还有其他JAX-WS提供商。例如,您可以使用the JAX-WS RI,尽管您的体验可能与CXF / Axis不同。

        1. 不同的网络服务技术
        2. 您可以使用像JAX-RS这样的RESTful框架,而不是使用SOAP。如果您想了解更多HTTP和您的呼叫之间的连接,这将特别有用。有无数的文章讨论了SOAP与REST的优点/缺点,所以我不会在这里讨论。一般来说,JAX-RS更加清晰和可定制,但需要更多工作才能配置。