6

Java Web 服务是否必要AXISCXF这一切都可以通过JDK(1.6)完成吗?

4

6 回答 6

4

Java Web 服务是否需要 AXIS 或 CXF?

不会。尽管Axis2是最流行的使用 Web 服务的框架,但并不是唯一的方法。

这一切都可以通过JDK(1.6)完成吗?

是的,但要困难得多。您将从使用其他应用程序使用的框架以及开发团队提供的错误修复中受益匪浅。全部手工完成就像重新发明轮子一样。

如果您想完全控制下面发生的事情,可能您可以使用:JAX-WS

或者如果应用很简单,直接用socket。

但同样,Axis2是执行 WS 的规范方式(但不是唯一的方式)

于 2009-10-01T17:43:38.550 回答
4

以下内容基于真实的个人故事:

因此,您想在 Java Web 应用程序中使用 Web 服务,并且不想将 10MiB 的 JAR 添加到精简的 1.3 MiB .war 文件中,此外您还擅长解析 XML(您可以手动编写 XPath 查询代码,和 XSLT 文件),您完全了解 HTTP,并且您正在与之交互的客户端有很好的文档。您下载 WSDL 查看您的端点和方法,然后开始创建一个映射到您将需要的特性的 Java 类。你已经感觉很好了。

他们开始阅读有关如何发送 SOAP 请求的内容,并且您认为这看起来有点冗长,但他们只是一个字符串,因此您开始构建一个实用程序,该实用程序获取您的 Java 请求对象并将其转换为 SOAP 请求. 您将明确的 SOAP 请求发送到服务器,但它被拒绝(缺少签名)。

因此,现在您开始将加密 JAR 添加到您的项目中,并开始研究如何计算部分 XML 文档的签名并将其和文档都包含在请求中。这会花费您一些时间,但是通过足够多的黑客攻击,您会收到一条可以发送到您的 soap 服务的消息,并且您现在正在处理SOAP 响应。现在你感觉很好...

直到您客户端的管理员更改他们的安全要求、发布新的公钥并使用一些自定义类型更新soap接口,并且您的下一个运行类似服务(但在 Windows Server 上)的客户端希望您将它们实现为好。

在这一点上,我放弃了尝试以纯 Java 方式实现这一点,并开始使用标准库。它们处理诸如加密、编组、标准偏差之类的东西,它们让你专注于更接近你的问题领域的东西。我希望你能拯救自己失去的一个月,我花了一个月的时间来学习这一课。

于 2012-12-05T00:37:36.457 回答
4

2013 年 Web 服务领域的更新。

Web 服务曾经是基于 SOAP 和 XML 的。Web 服务被标准化为 JAX-WS。一些更流行的框架是(曾经):

  • 轴 1.x
  • 轴 2
  • Apache CXF - CXF 还包括其他协议。这是一个更广泛的框架
  • Metro Web 服务,其中包括 JAX-WS 参考实现。
  • Java 6 和 Java 7 默认包含 JAX-WS RI。这意味着除了生成客户端和服务存根/骨架之外,不再需要框架

此处未列出其他特定于供应商的实现,例如 IBM Websphere 的 WS 实现和 Weblogic 的 WS 实现。

不过,一般来说,要创建 Web 服务,我会推荐 Metro 和 JAX-WS RI。

请注意,有许多 WS-* 标准,例如 WS-Security,它们可能不是所有 WS 实现的一部分。

由于 Web 服务已经存在了一段时间,因此在架构风格、协议和编码方面都出现了其他替代方案。

例如,XML 曾经是事实上的编码。JSON 现在更加流行。值得研究 Jackson、JSON 解析器或 Google GSON。支持 JSON 的主要论据是它易于使用、轻量级且对开发人员友好。

伴随 JSON 而来的是 REST。REST 是一种架构风格。使用 REST,您仍然可以在可以通过网络轻松使用的远程服务的意义上实现“Web 服务”。REST 在 Java 系列标准中也被标准化为 JAX-RS。一些流行的 JAX-RS 实现包括 CXF、Jersey 和 RESTLet。

最后,还有一些使用二进制编码的新孩子。这些是 Google Protocol Buffers 和 Apache Thrift。他们的主要目标是性能以及对其他语言(Java、C#、Erland、Perl...)的更广泛支持。

在今天开发 Web 服务时,问题应该是: - 我关心性能吗?- 我想使用多种不同的语言访问服务吗?- 我想要移动友好吗?

这些应该可以帮助您指导您的选择。此外,我更喜欢将我的依赖关系保持在最低限度。这意味着我宁愿采用 JRE 或 JDK 原生的东西,例如 JAX-WS 或 JAX-RS 参考实现。

于 2013-05-01T13:58:43.050 回答
2

作为 Axis 的替代方案,您可以使用Spring WebServices框架在 J2EE 容器(如 Tomcat 或任何类似容器)中运行 Web 服务应用程序。我发现它非常易于使用和设置,如果您想稍后将您的 web 服务集成到另一个 web 应用程序中,这很容易做到(我自己在两个不同的场合做过)。

于 2009-10-01T18:09:15.293 回答
1

您可以随意使用网络服务器提供的 http 流,但从长远来看,使用框架和一些 jars(已被证明有效)将为您省去很多麻烦和大量时间。

于 2009-10-01T17:48:48.843 回答
0

通常,您会希望使用 Web 服务的编程框架。

像 AXIS、CXF 或从 Sun 下载的 Java EE (GlassFish) 之类的东西。

于 2009-10-01T17:51:35.523 回答