直接访问web.xml
SOAP为系统提供了一种打包和交换以XML编码的消息的方式。 SOAP被设计为Web服务系统所需的各种功能的基础层,但因此SOAP并不是通过Internet协议交换XML的最直接方法。 基本的Web体系结构使交换不仅仅是HTML页面成为可能。 明显的项目是图像和流行格式,例如PDF。 其他系统可以直接从Web上获取XML:RSS,Atom,Creative Commons,XSLT样式表,SVG等。 当然,您可以通过在Web服务器上放置适当的XML文件来创建自己的服务。 您甚至可以通过允许HTTP POST
, PUT
或DELETE
命令来支持写操作。 正如我将在本文中演示的那样,您可以使用WSDL描述这些简单的服务。 有趣的是,大多数SOAP系统通过在Web服务器上托管来交换WSDL文件的方式说明了如何使用这种基本Web原理来引导整个Web服务世界。
一些专家使用名称表示状态传输(REST)来描述仅依赖于核心Web体系结构的服务。 对于何时使用SOAP和何时使用REST,您不会找到任何严格的规则,但是重要的是始终至少考虑将REST用于Web服务任务,而不仅仅是使用SOAP。 大量已安装的工具和服务基础隐含了对REST的理解,尽管SOAP是一种快速发展的技术,但在运行代码方面仍远远落后于REST。 Web代理,蜘蛛,搜寻器和其他代理,以及普遍部署的浏览器等已经可以处理通过HTTP明确传送的XML。
考虑所有其他可处理通过HTTP,FTP或其他方式检索的XML的XML技术也很重要。 您可以使用标准document()
函数轻松地合并从RESTful服务检索的XML,但是合并SOAP请求的唯一方法是通过专有扩展。 可以通过XInclude包含通过RESTful服务可用的XML文档,也可以使用XLink甚至基本HTML和XHTML链接将它们链接到XML文档。 通过SOAP,这些都不是简单明了的。
WSDL的作用
即使不使用SOAP,您仍然可以使用WSDL。 WSDL一直支持与RPC样式的SOAP over HTTP以外的约定的绑定,而该绑定与它之间的关系最为密切。 但是,这些替代绑定并未得到尽可能频繁的使用。 问题的一部分是WSDL的复杂性:描述简单的Web访问感觉有点过头了。 清单1显示了一个WSDL 1.2示例,用于表示RSS服务的常用方法:简单下载。
清单1.用于描述通过Web RESTful可用的RSS的WSDL 1.2示例
<?xml version='1.0' encoding='UTF-8'?>
<definitions name='rss-service'
targetNamespace='http://example.com/rss-service/'
xmlns='http://www.w3.org/2003/06/wsdl'
xmlns:http='http://www.w3.org/2003/06/wsdl/http'
xmlns:xsd='http://www.w3.org/2001/XMLSchema'
>
<message name='rss-request'>
<part name='feed' type='xsd:string'/>
</message>
<message name='retrieved-rss'>
<part name='rss-doc' mimeType='application/rss+xml'/>
</message>
<interface name='rss-interface'>
<operation name='retrieve-rss'>
<input name='rss-request'/>
<output name='retrieved-rss'/>
</operation>
</interface>
<binding name='rss-interface-http1' type='rss-interface'>
<http:binding verb='GET'/>
<operation name='retrieve-rss'>
<http:operation location='syndication/{feed}.rss'/>
<input>
<!-- no parameters other than the one already worked
into the URL -->
</input>
<output>
<!-- no parameters because response is explicitly
the HTTP response -->
</output>
</operation>
</binding>
</definitions>
message
元素代表实际的HTTP请求和响应。 part
元素代表通过HTTP交换提供详细信息的信息。 对于该请求,我参数化RSS feed文件名的名称。 这样,我可以使用相同的WSDL来覆盖RSS 0.91 feed和RSS 1.0 feed。 绑定指定此描述涵盖低级HTTP 1.1。 http:operation
上的location
属性将feed
参数映射为其在服务器上选择文件名时的角色。 方括号是WSDL 1.2约定,与属性值模板没有什么不同:内容被给定名称的消息部分代替。
把事情简单化
Web服务源于非常宏伟的愿景。 当实现了整体构想并且所有部分都可以广泛使用时,将证明很多复杂性是合理的。 但是,就目前情况而言,有时最好使用更简单的约定,在Web服务出现之前整整十年使Web爆炸式增长。 如果XML通过简单的HTTP 1.1提供服务可能可以解决问题,则值得考虑。
翻译自: https://www.ibm.com/developerworks/xml/library/x-tiphttp/index.html
直接访问web.xml