在 AIX Version 5.3 中使用 Java 和 PHP 技术进行开发,第 5 部分: 安装和集成 PHP Java Bridge

在 AIX® 中可以开发使用 Java™ 和 PHP 技术的应用程序。本系列文章共有六个部分,本文是其中的第 5 部分,将介绍如何在 Tomcat 应用服务器中安装、设置和集成 PHP Java Bridge,从而使得您能够开发 PHP Web 接口。

Doug Monroe (monroe@sqnt.com), 系统管理咨询师, MichaelDKelly.com

Doug Monroe 是 DMA Inc. 的一名 UNIX 系统管理咨询师和教员。他拥有俄勒冈州立大学的计算机科学学士学位,自从 1984 年以来一直在支持各种风格的 UNIX。您可以通过 monroe@sqnt.com 与他联系。



Martin C Brown, 自由撰稿人和顾问, MCslp

Martin Brown 成为一名职业作家已经有 8 年多的时间了。他是很多书籍和文章的作者,内容涉及很多主题。他的特长包括很多开发语言和平台 —— Perl、Python、Java、JavaScript、Basic、Pascal、Modula-2、C、C++、Rebol、Gawk、Shellscript、Windows、Solaris、Linux、BeOS、Mac OS/X 等等 —— 还包括 Web 编程、系统管理和集成。他会定期为 ServerWatch.com、LinuxToday.com 和 IBM developerWorks 撰写文章,在 Computerworld、Apple Blog 以及其他站点都会定期更新自己的 blogger,同时还为 Microsoft 撰写一些主题文章。您可以通过 questions@mcslp.com 与他联系。



2007 年 9 月 20 日

关于本系列

PHP 是一种非常优秀的 Web 开发语言,而在业务应用程序开发方面,Java™ 技术十分流行。因此,为了在 AIX® Version 5.3 操作系统上充分利用它们的优势,专门开发了 PHP Java Bridge。本系列文章向 AIX 5.3 开发人员介绍了如何在他们的 Web 应用程序开发中集成 PHP 和 Java 技术。

为了说明这一点,您将按照典型的开发过程来构建一个简单的问卷调查应用程序,具体内容包括:

  • 开发主要的 Java 应用程序
  • 通过 Servlet 将 Java 应用程序公开为基于 Java 的 Web 应用程序
  • 添加在数据库中存储信息的支持
  • 将原始应用程序公开为 Web 服务,并为该应用程序提供 PHP 接口
  • 使用专门的 PHP Java Bridge 重新开发 PHP 接口

本系列文章共分为六个部分:

  • 第 1 部分介绍了一个应用程序,并为构建 Java 应用程序以及使用 Tomcat 执行基于 Java 的 Web 应用程序设置了相应的环境。
  • 第 2 部分介绍了主要的应用程序代码以及一个简单的 Java Servlet 的开发,以便为信息提供一个 Web 接口。
  • 第 3 部分将核心应用程序连接到 DB2® 数据库,以便对问卷调查的问题和回答进行存储。
  • 第 4 部分对原始应用程序进行转换,使其能够作为 Web 服务进行访问,并且它为 PHP 接口提供了基础。
  • 第 5 部分使用 PHP Java Bridge 为 Java 应用程序构建 PHP 接口。
  • 第 6 部分对这个应用程序进行重新开发,以便使用 PHP Java Bridge 来代替 Web 服务接口。

再谈 Web 服务解决方案

在本系列文章的第 4 部分(请参见参考资料)中,您扩展了原始 Java 应用程序,并通过 Web 服务对其进行了公开。使用 Web 服务公开应用程序具有许多优点,但其中最主要的一点是提高互操作性。

Web 服务兼容于各种各样的平台、语言和环境。在您通过 Web 服务公开应用程序之后,您就可以从使用各种各样语言(包括 Perl、Python、JavaScript、Java,当然还有 PHP)的任何计算机访问它。

Web 服务通过一个 URL(例如,您的 getSurveyQuestionCountReponse() 方法)来公开 Web 服务函数。然后,您可以将发送到服务器的、由客户端返回的消息编码为 XML 消息。

通过访问安装在 Axis Web 服务服务器中的 Web 服务,您就可以很清楚地了解这一点。例如,通过访问 http://localhost:8080/axi/services/SQWSSOAP?method=getSurveyQuestionCount URL,您应该获得由简单对象访问协议 (SOAP) 服务返回的 XML 消息,如清单 1中所示。

清单 1. SOAP 服务返回的 XML 消息
<soapenv:Envelope>
  <soapenv:Body>
    <getSurveyQuestionCountResponse>
      <out>2</out>
    </getSurveyQuestionCountResponse>
  </soapenv:Body>
</soapenv:Envelope>

作为一项标准,您可以使用任何 SOAP 客户端来获取相同的信息。清单 2 中提供了使用 Perl 编写的一个简单的客户端,其中展示了互操作性。

清单 2. 使用 Perl 编写的简单客户端
use SOAP::Lite;

my $client = SOAP::Lite->new(proxy =>
             'http://localhost:8080/axis/services/SQWSSOAP');

print "Questions: ",$client->getSurveyQuestionCount()->result,"\n";

清单 3 中相同的过程与 PHP 的工作方式一样,为 Web 服务基础设置远程端点。然后,您只需要调用合适的远程服务来获得问卷调查中问题数量的计数。

清单 3. 在 PHP 中设置远程端点
<?
require_once('nusoap.php');

$client=new soapclient('http://localhost:8080/axis/services/SQWSSOAP');

if (isset($fault)) {
        print "Error: ". $fault;
}

$count = $client->call('getSurveyQuestionCount',array());
print "Questions: " . $count  . "\n";
?>

在这种情况下,获得 Web 服务互操作性是要付出一定代价的。您的最初目的是为该应用程序编写一个更好的 Web 包装,现在您可以从各种各样的源、其他应用程序和环境使用这个应用程序。打开一个新的网络连接,并对 SOAP 消息中传入或传出的 XML 内容进行转换,这个过程将在应用程序和环境中增加额外的开销,所以您希望能够尽可能快地完成这些工作。

在使用这种方法为查询提供服务的过程中,其开销可能非常大。SOAP 和其他远程过程调用(Remote Procedure Call,RPC)技术在设计时并没有考虑到性能问题。它们将兼容性、互操作性和开放标准作为关键的要素。

本系列文章最初的目标之一是,为 Java 应用程序开发一个高效的 Web 接口。您所使用的应用程序相对比较简单,但是不难想象在使用它的时候出现每秒数百个请求的情况。您希望获得可能的最佳性能,但是请记住,使用 PHP 客户端通过 SOAP 服务访问您的 Java 应用程序并不会让您实现这个目的。

PHP Java Bridge 替代方法

PHP Java Bridge 是一种经过优化的、基于 XML 的协议,它允许您在 PHP 应用程序中直接使用 Java 类。尽管从理论上讲,它的工作方式类似于 SOAP,但是实际上,它比 SOAP 方法的效率要高得多。

该系统使用 JSR 223 接口进行工作。PHP 组件可以与任何 ECMA-335 后端系统通信,其中包括 Java 技术、基于 Java 的扩展接口(如 JPython 和 JRuby),部署公共语言运行时(Common Language Runtime,CLR)的 .NET 应用程序、甚至还包括 .NET 兼容的解决方案(如 Mono)。

这个过程是双向的:PHP 脚本可以调用 Java/.NET 类,或者 Java 组件可以调用 PHP 类或脚本。甚至可以将这种桥接集成到解决方案中,以便在请求一个类的时候,允许自动地启动后端系统(Apache/IIS 和 PHP、或者 .NET、或者 Java/Tomcat)。

该系统通过访问 Tomcat 应用服务器上的一个远程类进行工作。当您运行 PHP 应用程序时,它从远程 Java 应用程序服务平台加载 PHP Java Bridge 代码。这将初始化系统,并使得 PHP 脚本知道如何与该应用服务器上的远程 Java 类进行通信。

很显然,为了能够使用 PHP Java Bridge 访问您的 Java 类,您必须在安装 PHP Java Bridge 之前,安装 Apache 和 PHP。

安装 Apache httpd

要安装 Apache httpd:

  1. 您需要一个编译器和一个 Apache httpd 源代码分发版。如果您的系统中没有 C 编译器,那么您可以从 IBM 下载 rpm 格式的、开放源代码的 GNU C 编译器(请参见参考资料)。最终,您将从该站点获得下列模块(请参见清单 4):
    清单 4. 所需的模块
    gcc V4.0.0 for AIX V5.3 (gcc-4.0.0-1.aix5.3.ppc.rpm)
    gcc-c++ V4.0.0 for AIX V5.3 (gcc-cplusplus-4.0.0-1.aix5.3.ppc.rpm)
    libgcc V4.0.0 for AIX V5.3 (libgcc-4.0.0-1.aix5.3.ppc.rpm)
    libstdc++ V4.0.0 for AIX V5.3 (libstdcplusplus-4.0.0-1.aix5.3.ppc.rpm)
    libstdc++-devel V4.0.0 for AIX V5.3 
    (libstdcplusplus-devel-4.0.0-1.aix5.3.ppc.rpm)
    
    make v3.80 (make-3.80-1.aix5.1.ppc.rpm)
    bison v1.875 (bison-1.875-3.aix5.1.ppc.rpm)
    bzip v1.0.2 (bzip2-1.0.2-3.aix5.1.ppc.rpm)
    expat v1.95.7 (expat-1.95.7-4.aix5.1.ppc.rpm)
    flex v2.5.4a (flex-2.5.4a-6.aix4.3.ppc.rpm)
    freetype2 v2.1.7 (freetype2-2.1.7-5.aix5.1.ppc.rpm)
    libjpeg v6b (libjpeg-6b-6.aix5.1.ppc.rpm)
    libpng v1.2.8 (libpng-1.2.8-5.aix5.1.ppc.rpm)
    xpm v3.4k (xpm-3.4k-7.aix5.1.ppc.rpm)
    zlib v1.2.3 (zlib-1.2.3-3.aix5.1.ppc.rpm)
  2. 将它们下载到您的系统,并作为 root 使用下面的命令安装它们(gcc 的示例):
    # rpm –Uvh gcc-4.0.0-1.aix5.3.ppc.rpm

    如果您希望能够采取更方便的做法,那么可以使用一个 Shell 脚本来安装所有这些内容:
    # for I in *.rpm; do
    rpm –Uvh $I
    done
  3. 您还需要安装 AIX 分发版中的 Base Application Development Math Library (bos.adt.libm),如果您尚未安装它。您可以使用 smit 来完成这项任务。
  4. 在完成所有这些任务后,从 http://archive.apache.org/dist/httpd/ 下载 Apache 2.2.2 源代码 httpd-2.2.2.tar.gz。
  5. 解压缩这个存档文件:
    # gunzip –C httpd-2.2.2.tar.gz | tar xvf -

    更改到分发版目录,运行配置脚本,进行编译和安装:
    # cd httpd-2.2.2
    # ./configure -C –enable-so –prefix=/usr/local/apache2
    # make
    # make install

该操作将 Apache httpd 安装到 /usr/local/apache2。有关这个过程以及配置 httpd 的更详细的信息,请参考 AIX Wiki 中 Nigel Griffiths 所撰写的优秀文章(请参见参考资料)。

通过 Web 服务器配置 Apache 以及其他细节超出了本文的范围。有关配置基本的 Apache 安装的帮助,请参见参考资料。

安装 PHP

您应该从源代码安装 PHP。要完成此任务,请执行以下步骤:

  1. 从 PHP Web 站点下载 PHP V5.2.3 源代码(请参见参考资料)。
  2. 解压缩 PHP 存档文件:
      # gunzip –c php-5.2.3.tar.gz | tar –xf –
  3. 更改到 PHP 存档文件目录:
    # cd php-5.2.3
  4. 现在运行配置,指定 apxs2 命令的位置。apxs2/opt/ 命令为 PHP 配置脚本提供了有关 Apache 的位置,以及如何配置 PHP 的信息:
    # ./configure –with-apx2=/usr/local/apache2/bin/apxs
  5. 在完成了 configure 过程之后,运行 make 以编译 PHP。因为 PHP 的 configure 是开放源代码,所以您需要使用开放源代码 make 命令来编译可执行程序:
    # /opt/freeware/bin/make
  6. 向 Apache 中安装新的二进制文件(不要使用 make install):
    # cp .libs/libphp5.so /usr/local/apache2/modules
    # cp php.ini-recommended /usr/local/apache2/conf/php.ini

PHP 安装程序应该为您完成所有的工作,以便您能够使用 PHP。现在,可以开始安装 PHP Java Bridge 了。

安装 PHP Java Bridge

安装 PHP Java Bridge 非常简单,并且需要安装核心 JavaBridge.war Web 存档文件,以及对运行系统进行相应的修改以确保您可以从远程主机访问 PHP Java Bridge。

要安装 PHP Java Bridge:

  1. 下载 PHP Java Bridge 包(请参见参考资料)。
  2. 使用 unzip 解压缩该包中的内容:
    $ unzip php-java-bridge_4.2.0_j2ee.zip
  3. 将 Web 部署存档文件复制到 Tomcat 安装目录:
    $ cp php-java-bridge-4.2.0_j2ee/JavaBridge.war /usr/local/tomcat/webapps/
  4. 如果 Tomcat 已经启动,那么关闭它,然后重新启动它。这将提取该 Web 存档文件的内容,并对其进行部署以供使用(请参见清单 5)。
    清单 5. 解压缩 Web 存档文件的内容
    $ cd /usr/local/tomcat
    $ bin/shutdown.sh
    $ bin/startup.sh

    在缺省情况下,将 PHP Java Bridge 配置为不允许来自非本地服务器的连接。这意味着,如果您希望将您的应用程序部署到不同的服务器,那么可能会阻止您的连接。
  5. 要更改这项配置,您需要更改 JavaBridge 应用程序所使用的参数。要实现这一点,可以编辑 JavaBridge 部署的 Web 应用程序目录中的 web.xml 文件。它应该是 Tomcat 安装目录中的 webapps/JavaBridge/WEB-INF/web.xml 文件。
  6. 您需要取消对这个部分的注释,以便允许对您的 Java 类进行远程访问(请参见清单 6)。
    清单 6. 取消对这个部分的注释,以便允许对您的 Java 类进行远程访问
    <init-param>
      <param-name>promiscuous</param-name>
      <param-value>On</param-value>
    </init-param>
  7. 现在,您必须关闭并重新启动 Tomcat 服务器(请参见清单 7)。
    清单 7. 关闭并重新启动 Tomcat 服务器
    $ cd /usr/local/tomcat
    $ bin/shutdown.sh
    $ bin/startup.sh

测试您的 PHP Java Bridge 安装

您的 PHP Java Bridge 安装通过直接从远程 Java 应用服务器导入 PHP 包含文件进行工作。不幸的是,正如 PHP Java Bridge 不允许远程访问一样,缺省 PHP 安装禁止远程文件的包含,因为这是一项潜在的安全风险。

要控制这个特性,您必须编辑 php.ini 文件。这个文件的副本应该位于 /usr/local/lib/php.ini 中。如果不在,请在 PHP 源代码中查找该文件的副本。php.ini-recommended 文件为新的配置文件提供了很好的基础。

您需要启用两个 PHP 配置参数,allow_url_fopen(它允许您打开一个远程文件,就好像处理一个本地文件)和 allow_url_include(它允许您包含远程 PHP 文件以导入代码)。

您应该可以在名为“Fopen wrappers”的部分中找到前面的那个选项,如清单 8 所示。

清单 8. Fopen wrappers 部分
;;;;;;;;;;;;;;;;;;
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On
allow_url_include = On

将其配置更改为 On,并且添加 allow_url_include 选项。

在完成配置工作后,重新启动 Apache:

$ /usr/local/apache2/bin/apachectl restart

然后,在您的 Web 服务器上创建一个与清单 9 中所示类似的文件。

清单 9. 在您的 Web 服务器上创建一个文件
<?

require_once("http://sulaco.mcslp.pri:8080/JavaBridge/java/Java.inc");

$System = new Java("java.lang.System");

print_r($System->getProperties());

?>

其中第一行访问 Tomcat 应用服务器中运行的远程 PHP Java Bridge。通过直接从远程服务器加载包含文件,在访问 Java 类时,所需的类就知道应该与哪个服务器进行通信。

上面的清单 9 中的第二行,创建了一个新的 Java 类实例作为 PHP 对象。在这个示例中,您使用了 java.lang.System 类,它可以用于转储有关 Java 安装的属性。

最后一行用于转储已配置的属性。

如果您现在访问 Apache Web 服务器中的 PHP 脚本,那么您应该获得与清单 10 中所示类似的输出。

清单 10. 输出
[[o:Properties]:"{java.runtime.name=Java(TM) 2 Runtime Environment, Standard Edition,
 sun.boot.library.path=/usr/local/lib:/usr/local/apr/lib:/System/Library/Frameworks/
 JavaVM.framework/Versions/1.5.0/Libraries, java.vm.version=1.5.0_07-87, 
shared.loader=, awt.nativeDoubleBuffering=true, gopherProxySet=false, 
java.vm.vendor="Apple Computer, Inc.", java.vendor.url=http://apple.com/, 
path.separator=:, tomcat.util.buf.StringCache.byte.enabled=true,
java.util.logging.config.file=/Data/Dev/apache-tomcat-6.0.10/conf/logging.properties,
java.vm.name=Java HotSpot(TM) Client VM, file.encoding.pkg=sun.io, user.country=US, 
sun.os.patch.level=unknown, java.vm.specification.name=Java Virtual Machine 
Specification, user.dir=/Data/Dev/apache-tomcat-6.0.10, java.runtime.version=
1.5.0_07-164, java.awt.graphicsenv=apple.awt.CGraphicsEnvironment, java.endorsed.
dirs=/Data/Dev/apache-tomcat-6.0.10/endorsed, os.arch=i386, java.io.tmpdir=/Data/
Dev/apache-tomcat-6.0.10/temp, line.separator= , java.vm.specification.vendor=Sun 
Microsystems Inc., java.naming.factory.url.pkgs=org.apache.naming, java.util.
logging.manager=org.apache.juli.ClassLoaderLogManager, os.name=Mac OS X, sun.jnu.
encoding=MacRoman,java.library.path=/usr/local/lib:/usr/local/apr/lib:.:/Library/
Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java, java.specification.
name=Java Platform API Specification, java.class.version=49.0, sun.management.
compiler=HotSpot Client Compiler, os.version=10.4.9, http.nonProxyHosts=mcslp.pri|
*.mcslp.pri|192.168.0.1|sendit.com|*.sendit.com, user.home=/Users/mc, catalina.
useNaming=true, user.timezone=Europe/London, java.awt.printerjob=apple.awt.
CPrinterJob, file.encoding=MacRoman, java.specification.version=1.5, catalina.home=/
Data/Dev/apache-tomcat-6.0.10,java.class.path=:/Data/Dev/apache-tomcat-6.0.10/bin/
bootstrap.jar:/Data/Dev/apache-tomcat-6.0.10/bin/commons-logging-api.jar:/System/
Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/.compatibility/
14compatibility.jar,user.name=root, java.naming.factory.initial=org.apache.naming.
java.javaURLContextFactory,package.definition=sun.,java.,org.apache.catalina.,
org.apache.coyote.,org.apache.tomcat.,org.apache.jasper., java.vm.specification.
version=1.0, java.home=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/
Home, sun.arch.data.model=32, user.language=en, java.specification.vendor=Sun 
Microsystems Inc., awt.toolkit=apple.awt.CToolkit, java.vm.info=mixed mode, sharing, 
java.version=1.5.0_07,java.ext.dirs=/Library/Java/Extensions:/System/Library/Java/
Extensions:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Home/lib/ext,
sun.boot.class.path=/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/
Classes/classes.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/
Classes/ui.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/
laf.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/
sunrsasign.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/
jsse.jar:/System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/jce.jar:/
System/Library/Frameworks/JavaVM.framework/Versions/1.5.0/Classes/charsets.jar, 
server.loader=, java.vendor=Apple Computer, Inc., catalina.base=/Data/Dev/
apache-tomcat-6.0.10, file.separator=/, java.vendor.url.bug=http://developer.
apple.com/java/, common.loader=${catalina.home}/lib,${catalina.home}/lib/*.jar, 
sun.io.unicode.encoding=UnicodeLittle, sun.cpu.endian=little, mrj.version=1040.1.5.0
_07-164, socksNonProxyHosts=mcslp.pri|*.mcslp.pri|192.168.0.1|sendit.com|
*.sendit.com, package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.
tomcat.,org.apache.jasper.,sun.beans., ftp.nonProxyHosts=mcslp.pri|*.mcslp.pri|
192.168.0.1|sendit.com|*.sendit.com, sun.cpu.isalist=}"]

尽管输出中可能没有很清楚地说明,但是您所执行的操作在 PHP 脚本中创建了一个 Java 代码的实例,然后对该代码执行 getProperties() 方法。您执行该代码的方式与 PHP 类似,尽管结果是执行一个 Java 类的方法。而且,该 Java 类本身位于远程服务器,或者它曾位于远程服务器,如果这是您希望执行该代码的方式。

在下一个部分,即本系列文章的最后一部分中,您将使用这个功能来构建一个直接使用原始 Java 类的 PHP 应用程序。

总结

在本文中,您了解了如何访问本系列文章第 4 部分中创建的 Java 类的启用了 SOAP 的部署。创建 Web 服务接口的过程比较复杂,并且不是很直观;然而,Web 服务接口允许从任何 Web 服务客户端访问信息。

但是 Web 服务也有一定的局限性,如果您希望获得一种高性能的解决方案,那么可能存在比 Web 服务路由更合适的备选方法,其中之一便是 PHP Java Bridge。尽管 PHP Java Bridge 的安装比较复杂,但是在完成设置之后,访问远程 Java 类的实际代码则非常简单。只需要使用三行代码,您就可以访问一个远程 Java 类,如果要通过使用 Web 服务和 PHP 客户端来访问它,则需要数百行的代码才能完成相同的过程。

参考资料

学习

获得产品和技术

  • IBM 试用软件:从 developerWorks 可直接下载这些试用软件,您可以利用它们开发您的下一个项目。
  • 90 天的试用版本:从 IBM 获得 DB2 Version 9 Enterprise Server 的试用版本。
  • Quick links for AIX fixes:获得 AIX 更新。
  • GNU C 编译器:您可以从这里下载 rpm 格式的、开放源代码 GNU C 编译器。
  • IBM Fix Central:这个站点为您的系统中的软件、硬件和操作系统提供了修复程序和更新。
  • Eclipse Web 站点:您可以从这个站点获得 Eclipse IDE。
  • Java 5 64-bit SDK:要下载这个包,您需要进行注册,但注册是免费的。
  • Tomcat:下载最新的包。
  • Mozilla:可以从 IBM 下载用于 AIX 的 Mozilla Web 浏览器。
  • NuSOAP:NuSOAP 是一个 SOAP 服务器和 PHP 的客户端库。
  • Apache Web 服务站点:从这里获得Get Aixs(SOAP Web 服务工具包)。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX, Java technology
ArticleID=256695
ArticleTitle=在 AIX Version 5.3 中使用 Java 和 PHP 技术进行开发,第 5 部分: 安装和集成 PHP Java Bridge
publish-date=09202007