使用SMTP和WebSphere Studio的Web服务—引言和设计

引言
Web服务是计算世界的新宠 , 它有望解决我们的所有计算问题 , 包括平台差异以及与旧系统间的互操作性等问题 。几乎每篇相关文章都提到Web服务可以在各种协议上工作 , 但它们却只具体讨论了SOAP/HTTP 。HTTP较轻易理解 , 所以最常被定义和实现 , 但显然它并不是Web服务的唯一选择 。
本系列的文章将讨论在Web服务托管于WebSphere瓵pplicationServer的情况下 , 如何通过实现简单邮件传输协议(SimpleMailTransferProtocol , SMTP)上的SOAP使Web服务可用 。本文展示了一些支持不同的“服务质量”并利用现有基础结构的不同方法 。本文将不讨论Web服务的创建 , 只讨论为什么为Web服务的接口使用SMTP上的SOAP绑定而不用更常用的HTTP/HTPPS上的SOAP 。
本系列假设您已经对SOAP和Web服务技术有了大致的了解 , 所以就不再向您提供比较熟悉的显示“面向服务的体系结构(Service-OrientedArchitecture)”的三角图 。对HTTP和SMTP有一定程度的了解也会有所帮助 , 但却不是必要的 。
这一系列文章中的示例使用的是IBMWebSphereStudioApplicationDeveloper , 它使用内置的WebSphereApplicationServer , 但任何遵守J2EE的应用程序服务器(包括Tomcat)也应该可行 。
为什么选用SMTP?
HTTP上的SOAP之所以如此常用 , 原因有以下几个:
HTTP协议无处不在-它随处可见 。
HTTP协议与防火墙兼容性很好 , 它只使用一些大家熟悉的端口 , 而且防火墙几乎总是配置为答应HTTP协议通过 。
HTTP协议使用HTTPS的“安全套接字层(SecureSocketLayer)”进行加密 , 并使用各种证书类型进行认证 , 很轻易保护 。
这些原因中的一部分也适用于SMTP协议 。电子邮件和Web浏览一样普遍-我们许多人都有多个可供天天查对的电子邮件帐户 。SMTP使用的是一个大家都熟悉的端口 , 所以很轻易设置答应它通过的防火墙 , 而几乎每个防火墙都被配置为答应该协议通过 。加密没有这么普遍 , 但通过PGP或其他方式的数字签名还是很轻易设置的 。
此外 , SMTP协议是异步的 。调用者可以通过电子邮件发送请求 , 而且假如目标服务器宕机了 , 那么为了确保该电子邮件的发送 , 任何中间服务器都将重发好几次 。另一方面 , 假如目标服务器在请求时不可用 , 那么HTTP协议也将失败 。
选用POP还是原始SMTP?
SMTP协议提供了两种获取电子邮件的方法:
实现一个SMTP服务器 , 自己实现对基础协议的支持 。
使用一个现有的“邮局”协议 , 使用这种协议时电子邮件存储在一个服务器上 , 并可由某个进程在适当的时机接收 。
毫无疑问 , 您对这两种方法都很熟悉 , 因为您的电子邮件程序把这两种方法都用上了 。传出的邮件被配置为使用一个SMTP服务器 , 直接把消息发送给理解该协议的服务器 。收到的电子邮件通常是用一个邮局协议-邮局协议(PostOfficeProtocol , POP)或因特网消息访问协议(InternetMessageAccessProtocol , IMAP)-处理的 , 在您连接到因特网上检索到这封电子邮件之前 , 它会留在您的ISP的服务器上 。
SMTP协议或者邮局协议都可以用作Web服务分派器接口 , 接收请求并将它们发送给目标Web服务 。我们将分别展示两者的实现 , 但首先我们来讨论一下它们各自的优缺点 。为简单起见 , 我们选择POP作为我们的中间服务器协议 , 因为它比IMAP协议更常见也更简单 。
此外还有其他SOAP/SMTP实现 , 比如ApacheSOAP就是其中一个 。然而 , 这种方法是先获得一个传入的SMTP请求 , 然后调用一个servlet接收HTTP协议上的请求 , 并将该请求传递给服务的实现 。这一系列的文章将实现直接的SMTP , 同时不会为将请求传递给目标服务而进行要求另一次网络跳转(即便是在同一台机器上)的协议切换 。

推荐阅读