【问题标题】:How does a webservice work网络服务如何工作
【发布时间】:2010-12-28 06:41:42
【问题描述】:

我是 web 服务的新手,我想在我的 eclipse 项目中使用 java 来实现 web 服务。

谁能告诉我如何实施和创建一个项目

谢谢

【问题讨论】:

标签: java web-services webservice-client


【解决方案1】:

W3C 定义的 Web 服务是一个支持可互操作的机器对机器交互的软件系统 通过网络。更详细地说,一个系统使用来自其他软件系统的服务。

Web 服务有两大类:

  • REST 兼容
  • 任意网络服务

要实现网络服务,需要根据自己的需求选择一个类别。 Java 有一堆 APIS 来实现这两个类别的 Web 服务。

实施网络服务前的要求是:

  • XML
  • WSDL(网络服务描述语言)
  • SOAP 协议等

与其他类别相比,基于 REST 的实现有点容易。所以最好从 REST 投诉 Web 服务入手。

网络服务的工作原理:

WS 作为请求-响应范例,有一个实体会向它的特定对应方请求某些服务,即服务提供者实体。根据请求,服务提供商将使用响应消息进行响应。所以有两条消息涉及听到一条请求消息(XML)和一条响应消息(XML)。有很多方法可以实现这些。详情可见web service architecture

初学者可以从JERSEYjsr311标准参考实现开始构建RESTful web服务。

示例(特定球衣):

第一步:创建根资源

// The Java class will be hosted at the URI path "/helloworld"
   @Path("/helloworld")
   public class HelloWorldResource {

       @GET 
       @Produces("text/plain")
      public String getClichedMessage() {
          return "Hello World";
      }
  }

第二步:部署

public class Main {

  private static URI getBaseURI() {
      return UriBuilder.fromUri("http://localhost/").port(8080).build();
  }

  public static final URI BASE_URI = getBaseURI();

  protected static HttpServer startServer() throws IOException {
      System.out.println("Starting ...");
      ResourceConfig resourceConfig = new PackagesResourceConfig("com.sun.jersey.samples.helloworld.resources");
      return GrizzlyServerFactory.createHttpServer(BASE_URI, resourceConfig);
  }

  public static void main(String[] args) throws IOException {
      HttpServer httpServer = startServer();
      System.out.println(String.format("Jersey app started with WADL available at "
              + "%sapplication.wadl\nTry out %shelloworld\nHit enter to stop it...",
              BASE_URI, BASE_URI));
      System.in.read();
      httpServer.stop();
  }    

}

REST REFERENCE - by Roy T . Fielding

【讨论】:

    【解决方案2】:

    Webservice 是一些程序接口,它使用 SOAP 协议进行通信。使用soap,您可以与任何程序进行通信,无论它是用哪种语言编写的。

    SOAP 是一种基于 XML 的通信协议和编码格式,用于应用程序间的通信。它最初由 Microsoft 和 Userland 软件构思,经过几代的演变;当前规范是版本 SOAP 1.2,尽管版本 1.1 更为广泛。 W3C 的 XML 协议工作组负责该规范。 SOAP 被广泛视为新一代跨平台跨语言分布式计算应用程序(称为 Web 服务)的支柱。

    这里有一些例子:

    Java web services tutorial

    Axis - One of ASF implementations

    CXF (Previously known as "XFire")

    【讨论】:

    • 感谢 vadeg 的回复,能否给我一些 webservice 的示例项目,以便我更清楚地理解它...请
    • WebServices 不必使用 SOAP。 SOAP 只是一种方法。
    • 正如@Vadeq 所说,目前 Java 中有两个主要的 Web 服务框架 - Apache Axis 和 Apache CXF。他们都有自己的粉丝,但我更喜欢使用 CXF(你可以找到它们的一些比较,例如 in this question)。如果您决定使用 CXF,here 您可以找到一些关于发布 Web 服务和创建 Web 服务客户端的信息(带有代码示例)。还有很多其他的教程应该很容易用谷歌搜索。
    【解决方案3】:

    最简单和最好的方法之一是使用 Apache Axis 开发 Web 服务。 Eclipse SOA 工具包支持 Axis。

    有关示例项目的更多信息可以在这里找到!

    http://onjava.com/pub/a/onjava/2002/06/05/axis.html

    【讨论】:

    • 这是一篇非常古老的文章 (2002),不是最新的。 Web 服务的概念没有太大变化,但实现技术发生了很大变化。
    • 我已经给出了,这个链接考虑到,它可能会给出一个简短的想法。
    猜你喜欢
    • 2014-02-03
    • 2010-10-18
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多