连接PHP和 Java -- PHP/Java Bridge [3]

Haohappy
PHP5研究中心:http://blog.csdn.net/haohappy2004/

安装PHP/Java Bridge

如果你用的是RedHat Linux系统(RedHat EnterpriseFedora),可以从主页上下载32RPM包,然后输入rpm -i php-java-bridge-v.x.y-z-i386.rpm来安装。如果你用的是64位系统和64位虚拟机,需要安装64RPM包。其它系统看下面的介绍。

(1) 安装PHP/Java Bridge之前,你需要确定已经安装了:
Java1.4
或更高版本,
gcc3.2
或更高版本,
apache1.3
或更高版本,
autoconf2.57
或更高版本,Done
libtool 1.4.3
或更高版本, Done
automake1.6.3
或更高版本,
GNU make Done
php4.3.2
或更高版本

你可以用命令java -version, gcc --version, apachectl -version, libtool --version, automake --version, make null --version, autoconf --version and php-config –version来确定这些软件包的版本。

(2) 下载PHP/Java Bridge的源代码
http://www.sourceforge.net/projects/php-java-bridge

(3)
解压缩:cat php-java-bridge_v.x.y.tar.bz2 | bunzip2 | tar xf –

(4)

在解压缩出来的目录php-java-bridge-v.x.y里执行命令:

phpize && ./configure --disable-servlet --with-java=/opt/IBMJava2-14 && make CFLAGS="-m32"

32JVM生成模块。

(5)安装生成的模块
su -c 'make install'
<enter password>

(6) PHP/Java Bridge可以作为WEB服务器的sub-component运行,把下面这行加入到php.ini中,或者把这一行写到一个文件java.ini,再把java.ini复制到包含php模块描述的目录中去,如/etc/php.d/

extension = java.so
[java]

(7)重启apache服务器:/www/apache/bin/apachectl restart

(8)现在开始可以测试web安装。复制test.php到站点根目录下( /var/www/html),通过浏览器访问。你可以看到bridge模块已经激活并正在运行。Bridge会随着服务器的启动而启动。

Test.php

<?php

phpinfo();

print "\n\n";

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

$arr=$v->getProperties();

foreach ($arr as $key => $value) {

print $key . " -> " . $value . "<br>\n";

}

?>

Windows平台下的安装:

<!--[if !supportLists]-->1. <!--[endif]-->解压缩php-java-bridge_2.0.4-win32-php5.zip,复制所有文件到C:\php

<!--[if !supportLists]-->2. <!--[endif]-->双击c:\php5\JavaBridge.jar或者在命令行执行java -jar JavaBridge.jar

<!--[if !supportLists]-->3. <!--[endif]-->php-cgi test.php >result.html (test.php源码见上例)

<!--[if !supportLists]-->4. <!--[endif]-->用浏览器打开result.html,即可看到运行结果

段测试程序首先把php环境的所有选项输出,然后新建了一个Java对象并返回它的相关信息。

运行结果:

<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter" /> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0" /> <v:f eqn="sum @0 1 0" /> <v:f eqn="sum 0 0 @1" /> <v:f eqn="prod @2 1 2" /> <v:f eqn="prod @3 21600 pixelWidth" /> <v:f eqn="prod @3 21600 pixelHeight" /> <v:f eqn="sum @0 0 1" /> <v:f eqn="prod @6 1 2" /> <v:f eqn="prod @7 21600 pixelWidth" /> <v:f eqn="sum @8 21600 0" /> <v:f eqn="prod @7 21600 pixelHeight" /> <v:f eqn="sum @10 21600 0" /> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" /> <o:lock v:ext="edit" aspectratio="t" /> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:415.5pt; height:273pt'> <v:imagedata src="file:///C:\DOCUME~1\Haohappy\LOCALS~1\Temp\msohtml1\01\clip_image001.png" o:title="pjbridge_win" /> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->

java.runtime.name -> Java(TM) 2 Runtime Environment, Standard Edition
sun.boot.library.path -> C:\Program Files\Java\j2re1.4.2_05\bin
java.vm.version -> 1.4.2_05-b04
java.vm.vendor -> Sun Microsystems Inc.
java.vendor.url -> http://java.sun.com/
path.separator -> ;
java.vm.name -> Java HotSpot(TM) Client VM
file.encoding.pkg -> sun.io
user.country -> CN
sun.os.patch.level -> Service Pack 2
java.vm.specification.name -> Java Virtual Machine Specification
user.dir -> C:\php
java.runtime.version -> 1.4.2_05-b04
java.awt.graphicsenv -> sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs -> C:\Program Files\Java\j2re1.4.2_05\lib\endorsed
os.arch -> x86
java.io.tmpdir -> C:\DOCUME~1\506C\LOCALS~1\Temp\
line.separator ->
java.vm.specification.vendor -> Sun Microsystems Inc.
user.variant ->
os.name -> Windows XP
sun.java2d.fontpath ->
java.library.path -> C:\Program Files\Java\j2re1.4.2_05\bin;.;C:\WINDOWS\system32;C:\WINDOWS;C:\j2sdk1.4.2_05\bin;.;C:\j2sdk1.4.2_05\lib;C:\j2sdk1.4.2_05\jre\lib;C:\Program Files\SecureCRT 3.0;C:\WINDOWS\system32;C:\Program Files\ChemOffice2002\Common\DLLs
java.specification.name -> Java Platform API Specification
java.class.version -> 48.0
java.util.prefs.PreferencesFactory -> java.util.prefs.WindowsPreferencesFactory
os.version -> 5.1
user.home -> C:\Documents and Settings\506C
user.timezone ->
java.awt.printerjob -> sun.awt.windows.WPrinterJob
file.encoding -> GBK
java.specification.version -> 1.4
java.class.path -> C:\php\JavaBridge.jar
user.name -> 506C
java.vm.specification.version -> 1.0
java.home -> C:\Program Files\Java\j2re1.4.2_05
sun.arch.data.model -> 32
user.language -> zh
java.specification.vendor -> Sun Microsystems Inc.
awt.toolkit -> sun.awt.windows.WToolkit
java.vm.info -> mixed mode
java.version -> 1.4.2_05
java.ext.dirs -> C:\Program Files\Java\j2re1.4.2_05\lib\ext
sun.boot.class.path -> C:\Program Files\Java\j2re1.4.2_05\lib\rt.jar;C:\Program Files\Java\j2re1.4.2_05\lib\i18n.jar;C:\Program Files\Java\j2re1.4.2_05\lib\sunrsasign.jar;C:\Program Files\Java\j2re1.4.2_05\lib\jsse.jar;C:\Program Files\Java\j2re1.4.2_05\lib\jce.jar;C:\Program Files\Java\j2re1.4.2_05\lib\charsets.jar;C:\Program Files\Java\j2re1.4.2_05\classes
java.vendor -> Sun Microsystems Inc.
file.separator -> \
java.vendor.url.bug -> http://java.sun.com/cgi-bin/bugreport.cgi
sun.io.unicode.encoding -> UnicodeLittle
sun.cpu.endian -> little
sun.cpu.isalist -> pentium i486 i386

到这里,我们就可以自由地和Java对象进行通讯,实现了PHPJava的桥接。

<!--[if !supportLists]-->5. <!--[endif]-->接下来修改你的php.iniC:\Windows\php.ini),把extension=php_java.dll前的分号;去掉

注意, php也自带有一个php_java.dll,位于C:\php\extensions下,和php-java-bridge提供的不一样。为避免出错,要注意设置php.ini中的extension_dir ,默认extension_dir = "./"即指向C:\php目录。



参考资料:

[1] JSR 223: Scripting for the JavaTM Platform

[2] PHP/Java Bridge @ sourceforge.net

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值