PHP/Java Bridge是基于xml的网络协议的实现,该协议使得本地脚本语言引擎( 比如PHP,Python)能够连接Java虚拟机。它比通过SOAP的RPC调用更快,更节省服务器资源;比直接的Java本地接口通信要更快和更可靠,不需要额外的组件。Java应用比PHP要多,组件和类库也比PHP要多,比如JasperReports,通过PHP/Java Bridge可以为PHP 所用,当然也可以采用其他方式进行调用,比如官方的SOAP示例。
网上的关于JavaBridge安装文章较旧,现在的JavaBridge安装已经不需要java.so或php_java.dll,只需要php安装版本大于5.0,JDK版本大于1.4.2。本文是将JavaBridge放在Tomcat下运行的,独立运行参照此文设置。
将下载好的JavaBridge.war放入tomcat目录下的webapps下,启动Tomcat即可在webapps目录下看到JavaBridge文件夹,将JavaBridge下的java文件夹放到php的include目录(或程序运行目录)下。
打开http://127.0.0.1:8080/JavaBridge/运行示例,如果失败则可能是php未安装,解压版的可能导致失败如xampp。
在apache的网站目录下建立测试文件test.php,内容:
<?php require("java/Java.inc"); echo java("java.lang.System")->getProperties();
运行http://127.0.0.1/test.php查看输出,能看到系统信息,则表示安装成功。对于Java中要提供给php调用的jar应放在tomcat\webapps\JavaBridge\WEB-INF\lib目录下。注意此时在php中不需要用java_require()函数请求所需的jar文件,否则会提示“Warning: java_require() not supported anymore. ”。php中使用只需require(“java/Java.inc”),然后用new Java()对应的类进行实例化,示例如下:
<?php require("java/Java.inc"); //java_require("Jphp.jar");//新版本不再需要 $s = new Java("java.lang.String", "hello"); $java = new Java("Jphp"); $java->setName('Jphp'); echo $java->getName();
参考链接:
PHP/Java Bridge
詳全文_淺談PHP與Java之Web開發整合技術
PHP通过php-java-bridge调用Java类中方法
调用Java类库还可以,自己写的类还是不能调用。
还是各做各的比较好,采用RPC或者REST调用或者其他的消息通信(Thrift)