很多 web 开发人员喜欢 php 的丰富功能和简单易用,但有时候他们需要访问 j2ee 应用程序服务器中已有的业务逻辑。本文将通过一些例子说明如何通过 php 5 中新的 soap 扩展使用 web 服务来访问 j2ee 应用程序,而不必脱离 php 环境,也不用学习新的编程模型。
php、web 服务和 soap 简介
本文将介绍如何从 php 脚本中访问企业应用程序。您可能是一位 php 程序员,需要为部门 web 应用程序编写代码,以便访问公司总部以 web 服务方式提供的服务。您或许是一位有经验的 j2ee 开发人员,希望多了解一点 php 及其应用。本文中的例子是一个运行在 ibm websphere? 应用程序服务器上的 enterprise javabean(ejb),但本文并没有讨论 web 服务的部署。它的主要目标是介绍如何从 php 中使用 web 服务,这一点可以应用于各种 web 服务实现。
什么是 php?
php:hypertext preprocessor(超文本预处理器,php)是一种流行的服务器端脚本语言,用于创建动态 web 内容。php 解释器为主流平台提供了源代码或者编译好的二进制文件,这些平台包括大多数 linux? 版本、windows?、mac os x 和 iseries?。
[soap] ; enables or disables wsdl caching feature. soap.wsdl_cache_enabled=1 ; sets the directory name where soap extension will put cache files. soap.wsdl_cache_dir="/tmp" ; (time to live) sets the number of second while cached file will be used ; instead of original one. soap.wsdl_cache_ttl=86400 这段配置控制了 soap 扩展的 wsdl 缓存特性。默认情况下,wsdl 描述文件在 24 小时(86400 秒)内都缓存在 /tmp 目录下。我们迟些时候再讨论这些内容,现在要设置 soap.wsdl_cache_enabled=0,否则,在开发代码时,您会遇到一些莫名其妙的行为。完成开发之后,要记得打开 wsdl 缓存,使代码运行得更快。
为了便于参考,我们将在两种环境中使用 ext/soap:
linux centos 3.3(red hat el 3 的免费重建版本)、apache 2.0.47、php 5.0.2,需要升级 libxml2 到 2.6.12。 windows xp sp1、apache 2.0.46、php 5.0.2 二进制压缩包、libxml2 2.6.11。
这些说明同样适用于其他配置。
weather forecast 应用程序
我们要从 php 中访问的 web 服务是一个天气预报应用程序。这是 websphere version 5.1 application developer 5.1.1 web services handbook 中开发的示例应用程序。下载示例 weather forecast 应用程序,请参阅本文后面的下载部分。这本书设计了几种不同的场景,但我们只考虑一种,在该书中,这种场景称为“自下而上的开发,使用 http 传输和 soap 消息从会话 ejb 生成 web 服务”。在这里,自下而上的意思是说,web 服务是围绕现有企业应用程序进行包装的。