Java 澄清「;“网络服务”;
我对web服务作为实现提供的不同定义和实现感到有点困惑。需要澄清一下吗 到目前为止我一直使用的: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类,并传
- 使用JAXB从模式生成java源代码
- 通过HTTP将符合该模式的XML文档发送到web服务
- 围绕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,我们可以推荐。