Java 澄清「;“网络服务”;

Java 澄清「;“网络服务”;,java,web-services,soap,wsdl,axis,Java,Web Services,Soap,Wsdl,Axis,我对web服务作为实现提供的不同定义和实现感到有点困惑。需要澄清一下吗 到目前为止我一直使用的: 如果一个供应商给我一种特定的XML格式,我可以将填充了数据的XML发送到请求,然后我通过internet发送一个简单的HTTP POST,将XML字符串作为有效负载传递,这是一个web服务调用吗?如果是这样的话,这种web服务是否有一个特定的名称?因为很明显,它不使用Axis、WSDL或SOAP之类的东西来建立这种连接 一种变体是,如果供应商给我一个XSD,我使用JAXB从中生成一个java类,并传

我对web服务作为实现提供的不同定义和实现感到有点困惑。需要澄清一下吗

到目前为止我一直使用的:

  • 如果一个供应商给我一种特定的XML格式,我可以将填充了数据的XML发送到请求,然后我通过internet发送一个简单的HTTP POST,将XML字符串作为有效负载传递,这是一个web服务调用吗?如果是这样的话,这种web服务是否有一个特定的名称?因为很明显,它不使用Axis、WSDL或SOAP之类的东西来建立这种连接

  • 一种变体是,如果供应商给我一个XSD,我使用JAXB从中生成一个java类,并传入对象的序列化版本,最终结果与选项1相同

  • RESTfulWeb服务:供应商给了我一个类似URL的URL,我可以对该URL发出HTTP请求,根据我使用的HTTP动词,调用适当的操作并通过网络发送响应

  • 我只读过的那些人\对其有模糊的认识

  • 肥皂。这是怎么回事?。。我阅读了W3C学校教程,我在下面看到了一种非常特殊的XML形式,它是根据W3C标准标准化的,我们用来传递与选项1相同的消息。但这在现实生活中是如何起作用的呢?小贩送我什么?我是否生成类?我是否序列化一些对象并通过http将它们发送到一个地址?或者生成的对象本身是否有可以为我执行这些操作的连接方法

  • WSDL呢?供应商何时向我发送WSDL,我如何处理它?我想我可以从中生成类。如果是,那么如何处理生成的类

  • 我什么时候需要axis jar从供应商发送的东西生成类

  • 正如您所看到的,我对各种可用的web服务有一些清晰的、模糊的想法。如果有人能够澄清和/或指出更多的现实资源,将会有所帮助。我稍微研究了一下互联网上的Java Web服务,无数的四个字母的首字母缩写词让我头晕目眩

    谢谢

    如果供应商给我一个特定的格式 我可以发送的XML的 数据请求,我做了一个简单的 通过internet传递的HTTP POST 作为有效负载的XML字符串,是这样的吗 web服务调用?如果有,是否有 它的具体名称,这种网站 服务

    这仍然是一个web服务,是的。它没有“官方”名称,我通常将其称为XML over HTTP,主要是因为我想不出更好的名称

    肥皂。这是怎么回事?。。我读过 W3Schools教程和我 而且有一个非常 XML的特定形式,即 根据W3C标准化 我们用来通过同样的标准 我们在选项1中所做的消息类型

    SOAP提供了一个标准的包装层,它围绕着您在(1)中发送的消息的种类。这个包装器提供了一些信息,比如关于调用哪个操作的指示。它还可以提供安全服务、事务信息等。通常是很薄的一层

    WSDL呢?供应商什么时候开始工作 发送WSDL给我,我该如何处理它 ? 我想我可以从中生成类 信息技术如果是,那么我该如何处理这些数据 生成类

    同样,WSDL是一个非常薄的层,这次是围绕XML模式的。它定义了SOAP消息在运行时将调用的操作,以及请求和响应的模式类型。这是一种形式化XML文档交换接口的方法

    例如,您有一个XML模式,并且有一个如您所描述的web服务

    • 使用JAXB从模式生成java源代码
    • 通过HTTP将符合该模式的XML文档发送到web服务
    使用WSDL和SOAP,您可以稍微扩展一下:

    • 围绕XML模式编写一个精简的WSDL包装器,将可用的操作形式化
    • 使用WSDL导入工具为该WSDL/模式生成客户机/服务器存根。在Java中,这通常包含JAXB
    • 使用SOAP客户机/服务器来调用web服务

    正如你所见,这基本上是相同的过程。区别在于SOAP/WSDL为这些工具提供了额外的信息和上下文,允许这些工具为您完成更多的工作。不过,这并没有太大区别。

    如果您从某处获得WSDL文档,您真正需要知道的是它定义了一个服务接口。您可以通过您喜爱的语言的绑定生成器运行它,以生成一些代码,用于调用该服务。通常这意味着您将使用HTTP上的SOAP消息通过线路与服务进行对话。SOAP只是发送任意XML消息的包装器


    Axis是一个用Java(客户端和服务器端)完成这些工作的库。我怀疑在其他库中有更好的实现。

    “我怀疑在其他库中有更好的实现。”你为什么这么说?你有任何证据或者这是一个FUD风格的评论吗?好吧,我确实花了大量时间修复Axis 1中的错误,并且我阅读Axis 2的代码(公平地说,几个月前现在)表明它仍然存在重大问题。但我从来没有向上游反馈过我的变化;他们通过将所有内容与我们在该项目中真正做的事情紧密结合,降低了灵活性。随后,我们迁移到使用不同的WS-stack,因此我的工作转到了其他地方。该项目现在正在Jetty顶部使用Xfire,我们可以推荐。