重定向对万维网服务的客户端请求的方法

文档序号:6501734阅读:255来源:国知局
专利名称:重定向对万维网服务的客户端请求的方法
技术领域
本发明涉及向因特网网络的客户端提供的万维网服务,特别涉及一种在万维网服务的地址发生变化时重定向对万维网服务的客户端请求的方法。
背景技术
公知的是,有可能在因特网网络上可访问越来越多的服务。从而,因特网用户对于获得有关因特网上的在线服务的信息、以及如何请求这些服务感兴趣。在线服务一般由应用服务提供者提供,但是也存在面向领域的服务,例如关于生命科学的请求。
现今,客户端有可能通过使用“万维网服务”来获得所请求的信息,其中,该“万维网服务”是由公司通常通过因特网连接而暴露的特定业务功能性,以便为客户端、公司或程序提供使用服务的方法。万维网服务变成电子商务以及与应用服务提供者的交换的中枢。
在因特网网络上提供公开的万维网服务的服务提供者必须描述关于万维网服务的全部信息。为此,他可以提供与万维网服务相关联的万维网服务定义语言(WSDL)文件。WSDL有用于描述服务的接口(方法、参数、…)和运行时环境(runtime)(绑定、地址、…)。从客户端的角度,WSDL文件包含构建客户端结构所需的全部信息。通常,客户端将仅仅在构建时而非运行时使用WSDL文件。
在通常的产生模型中,肯定的是,WSDL将由于新的功能或运行时要求而演变。服务提供者想要更新万维网服务和相关联的WSDL文件的主要困难是向所有万维网服务客户端的通知。事实上,在公开万维网服务的情况下,服务提供者不知道万维网服务客户端,因此,他不能向他们通知变化。
提供了一些关于万维网服务接口变化的实践。因此,接口的变化应该总是与先前版本相兼容。例如,在WSDL文件中允许新的方法,但是禁止删除这些方法。
然而,服务提供者无法在其公开万维网服务之一的端点地址变化时向所有万维网服务客户端通知。其原因是他不使用反向代理或万维网服务网关,并且想要将万维网服务从第一主机移动到另一更强大的主机,或者他想要在万维网服务的前面添加负载均衡解决方案,或者他想要在其前面添加万维网服务网关、安全代理,或者他必须改变域名。对于作为使用3xx HTTP状态代码的传输协议的HTTP协议,已经存在现有的解决方案。接收3xx HTTP响应代码的客户端浏览器知道,所请求的文档的位置已经变化,并且浏览器自动生成到在3xx HTTP响应代码中表示的位置的新HTTP请求。但是由于两个原因,该解决方案不能应用于使用单个对象访问协议(SOAP)作为信息交换协议的万维网服务。第一,代码3xx不被提供SOAP和HTTP之间的绑定的运行时环境自动处理。第二,用于SOAP消息的通信协议不仅仅是HTTP,这是因为SOAP消息也可以在其它传输协议如SMTP、JMS、…上被发送,并且在这些协议上,用于重定向的3xx HTTP状态代码不可用。

发明内容
从而,本发明的目的是实现一种在运行时环境变化的情况下将万维网服务的客户端重定向到新的端点地址的方法。
因此,本发明涉及一种重定向对诸如因特网的数据传输网络中的万维网服务的请求的方法,其中,响应于由客户端的主机转发到万维网服务提供者的请求,该方法基于诸如HTTP的传输协议上的、诸如简单对象访问协议(SOAP)的消息交换协议而提供万维网服务定义语言(WSDL)文件。该方法包括以下步骤将第一请求从客户端转发到万维网服务的旧地址;通过往回发送消息,从与旧地址相关联的万维网服务点响应客户端,其中,使用该消息交换协议的首标包含所请求的万维网服务的新地址重定向;以及将第二请求从客户端转发到万维网服务的新地址。
根据另一方面,本发明涉及一种系统,其包括服务提供者的SOAP运行时环境中的检查器,被适配成检查从客户端的SOAP运行时环境转发到服务提供者的请求是否必须被重定向到新点地址,并且提供该请求必须被转发到的新点地址,其中在从位于旧点地址的服务提供者转发到客户端的SOAP运行时环境的SOAP响应消息中提供该新点地址;以及客户端的SOAP运行时环境中的检查器,被适配成检查是否SOAP响应消息包含新点地址并重新生成相同的请求,并且将其转发到新点地址。


通过结合附图阅读下面对本发明的更具体描述,将更好地理解本发明的上述及其他目的、特征和优点图1是表示根据本发明的方法的示意图;图2是表示根据本发明的系统的方框图;图3是表示在与旧万维网服务地址相关联的SOAP运行时环境中实现的方法步骤的流程图;以及图4是表示在与客户端的SOAP运行时环境中实现的方法步骤的流程图。
具体实施例方式
参考图1,假定基于消息交换协议SOAP的万维网服务客户端10想要访问由服务提供者提供的万维网服务。在这种情况下,由于用户不知道万维网服务的地址已经变化,因此将第一请求从主机10转发到当前的万维网服务地址,即旧地址点12。如后所述,旧点地址12通过在响应消息的首标中提供重定向,向主机10回复。使用包含在从旧点地址接收的SOAP消息中的重定向,主机10因而可以将第二请求传送到新万维网服务地址14,以便获得到对该请求的响应。注意,主机可以被编程为记录重定向,以便直接向新点地址发出其它SOAP请求。
图2示出了根据本发明的方法的实现。万维网服务客户端站10通常包括两个功能客户端应用程序18和包含检查器22的SOAP运行时环境,其中检查器22是负责检查所接收的SOAP消息在其首标中是否包含重定向的组件。如果是,则如上所述,检查器重新生成到在首标中提供的新点地址的相同SOAP请求,并且可选地记录重定向以允许客户端应用程序中的代码改变,以便将以后的请求定向到正确的地址。注意,检查器22一般是运行时环境内的例程,但是可以是每次客户端运行时环境接收到SOAP消息时由其访问的独立组件。
万维网服务提供者24包括照常的第一HTTP 26服务器、以及如同客户端SOAP运行时环境一样的SOAP运行时环境。该运行时环境被适配成获得对诸如万维网服务WS 1、WS 2和WS 3的万维网服务的访问。对于客户端,服务提供者的SOAP运行时环境28在其布置处具有检查器30,其可以是运行时环境内的软件部分或当接收到SOAP请求时访问的独立组件。注意,可以使用除HTTP之外的任何其它传输协议,例如SMTP。在后者情况下,服务器26将是SMTP服务器。
因为万维网服务已经移到另一机器或地址并且已经变得过时,所以检查器30被适配成,每次从客户端10接收到SOAP请求时,都检查所请求的万维网服务的地址是正确地址还是旧地址。为此,如果所请求的服务过时,则检查器30可以访问组件32,其知道哪些是已经过时的万维网服务、以及新地址。然后,检查器被适配成将新地址提供给运行时环境,以便将其包括在返回到客户端的SOAP消息的首标内。
将新地址包括在SOAP消息的首标内的方法是创建具有名称“Redirect”并且包括在SOAP规范中的SOAP首标标签,以确保由客户端和服务提供者使用的所有SOAP运行时环境将会理解它。然而,在SOAP规范中包括该首标不是强制性的。它可以是仅仅由若干运行时环境支持的SOAP扩展,其将向使用这些运行时环境的客户端和服务提供者提供更高质量的服务。
SOAP响应消息中的这种首标的示例可以是下面XML代码<soapenv:Header>
<soapenv:Redirect soapenv:mustUnderstand="l">
Http://newhost.domain.com/services/PublicWebService</soapenv:Redirect>
</soapenv:Header>
图3示出了提供万维网服务的服务器SOAP运行时环境服务器的行为。开始,SOAP运行时环境等待SOAP请求(步骤40)。如前所述,SOAP运行时环境可以访问一般用XML编写的属性文件,其提供过时万维网服务的列表。新点地址与所述过时万维网服务中的每一个相关联。因此,在获得SOAP请求之后,检查器在该列表中检索过时万维网服务(步骤42),并且检查由客户端请求的万维网服务是否是过时万维网服务(步骤44)。如果该万维网服务存在于该过时万维网服务列表中,则SOAP运行时环境不是试图联系该万维网服务,而是往回发送具有SOAP重定向首标的SOAP响应(步骤46)。如前所述,该首标包含由属性文件提供的新点地址。以从客户端接收的原样SOAP主体填充SOAP主体,以便允许客户端SOAP运行时环境再次运行到新点地址的相同SOAP请求。
如果该万维网服务不存在于过时万维网服务列表中,则SOAP运行时环境继续其正常工作,即,将SOAP请求转发到适当的万维网服务(步骤48)。在任何情况下,处理循环回到等待SOAP请求的开始步骤(步骤40)。
图4示出了客户端SOAP运行时环境的行为。开始,该运行时环境等待SOAP响应(步骤50)。然后,该运行时环境的检查器检查该响应是否包含重定向首标(步骤52)。如果是,则SOAP运行时环境重新生成到包含在消息首标中的新点地址的新SOAP请求(步骤54)。SOAP运行时环境还从SOAP响应获得SOAP主体,并且将其放置在新SOAP请求中。可选地,SOAP运行时环境还可以记录重定向,以允许进一步的客户端代码改变,并且因此将访问定向到新地址,而无需请求重定向(步骤56)。如果在SOAP响应消息中没有重定向首标,则SOAP运行时环境继续其正常工作,也就是,将SOAP响应转发到客户端(步骤58)。在任何情况下,处理循环回到等待SOAP响应的开始步骤(步骤50)。
尽管在本发明的优选实施例中使用了单个对象访问协议(SOAP),但是必须注意,无论使用什么传输协议,都可以使用除SOAP之外的任何其它消息交换协议。
权利要求
1.一种重定向对诸如因特网的数据传输网络中的万维网服务的请求的方法,其中,响应于由客户端的主机(10)转发到万维网服务提供者(24)的请求,该方法基于诸如HTTP的传输协议上的、诸如简单对象访问协议(SOAP)的消息交换协议而提供万维网服务定义语言(WSDL)文件;所述方法的特征在于包括以下步骤将第一请求从客户端转发到所述万维网服务的旧地址(12);通过往回发送消息,从与所述旧地址相关联的万维网服务点响应客户端,其中使用所述消息交换协议的首标包含所请求的万维网服务的新地址重定向(14);以及将第二请求从客户端转发到所述万维网服务的新地址。
2.根据权利要求1所述的方法,其中所请求的万维网服务的所述新地址(重定向)(14)由所述主机(10)记录,以允许客户端应用程序中的代码改变,以便将以后的请求定向到正确地址。
3.根据权利要求2所述的方法,其中所述消息交换协议是SOAP,并且所述重定向是包括在SOAP规范内的SOAP首标标签“Redirect”,以确保由客户端和服务提供者使用的所有SOAP运行时环境将理解它。
4.一种用于重定向对诸如因特网的数据传输网络中的万维网服务的请求的系统,其中,响应于由客户端的主机(10)转发到万维网服务提供者(24)的请求,该系统基于诸如HTTP的传输协议上的简单对象访问协议(SOAP)而提供万维网服务定义语言(WSDL)文件;所述系统的特征在于包括所述服务提供者(24)的SOAP运行时环境中的检查器(30),其被适配成检查从客户端的SOAP运行时环境转发到所述服务提供者的请求是否必须被重定向到新点地址,并且提供该请求必须被转发到的新点地址,其中在从位于旧点地址的所述服务提供者转发到客户端的所述SOAP运行时环境的SOAP响应消息中提供所述新点地址;以及客户端的所述SOAP运行时环境中的检查器,其被适配成检查是否所述SOAP响应消息包含新点地址并重新生成相同的请求,并且将其转发到所述新点地址(14)。
5.根据权利要求4所述的系统,还包括过时万维网服务列表(32),服务提供者的SOAP运行时环境(28)中的所述检查器(30)能够访问其,以检查所述请求是否必须被重定向到新点地址。
6.根据权利要求4或5的系统,其中在所述SOAP响应消息的首标中提供所述新点地址。
全文摘要
本发明公开一种重定向对诸如因特网的数据传输网络中的万维网服务的请求的方法,其中,响应于由客户端的主机(10)转发到万维网服务提供者的请求,该方法基于诸如HTTP的传输协议上的、诸如简单对象访问协议(SOAP)的消息交换协议而提供万维网服务定义语言(WSDL)文件。该方法包括以下步骤将第一请求从客户端转发到所述万维网服务的旧地址(12);通过往回发送消息,从与旧地址相关联的万维网服务点响应客户端,其中,使用所述消息交换协议的首标包含所请求的万维网服务的新地址重定向(14);以及将第二请求从客户端转发到万维网服务的新地址。
文档编号G06F17/30GK1890942SQ200480036742
公开日2007年1月3日 申请日期2004年11月10日 优先权日2003年12月10日
发明者戴维·鲁皮亚 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1