**php-java-bridge做桥接的实现原理**:
先打开java的一个监听端口,php调用java的时候,将对应的方法调用转发到java的指定端口,由java执行后再将结果返回给php。这种模式是一种比较典型的代理模式,php在这里成为了一个代理转发器,把java的类调用转发给后端的java执行。
1.首先下载jdk
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
2.安装jdk 并修改配置参数
修改文件权限: chmod 770 jdk-8u5-linux-x64.rpm
解压:tar -zxvf jdk-8u5-linux-x64.rpm (解压到 /usr/java/)
编辑文件 /etc/profile,在最后添加:
export JAVA\_HOME=/usr/java/jdk1.8.0_65
export JRE\_HOME=$JAVA\_HOME/jre
export CLASSPATH=.:$JAVA\_HOME/lib:$JRE\_HOME/lib
export PATH=$JAVA\_HOME/bin:$PATH
3.测试是否安装成功
输入以下命令
javac
java -version #得到版本号
4.下载二进制的 JavaBridge.jar包、java/Java.inc库文件
http://php-java-bridge.sourceforge.net/pjb/download.php](https://link.jianshu.com/?t=http://php-java- bridge.sourceforge.net/pjb/download.php)
5.JavaBridge.jar移动到java库的位置
/usr/java/jdk-8u5/jre/lib/ext
6.在JavaBridge.jar所在目录运行命令
java -jar JavaBridge.jar SERVLET\_LOCAL:8081 &
注:&表示后台运行
或者直接带上日志等级
java -jar JavaBridge.jar SERVLET:8081 3 JavaBridge.log &
注:如果需要开机启用,配置:**/etc/rc.d/rc.local**
末尾添加:
java -jar JavaBridge.jar所在绝对路径 SERVLET\_LOCAL:8081 &
7.运行**netstat -nltp**命令查看是否有127.0.0.1:8081进程
8.在php项目目录下放置 Java.inc文件,编写php测试代码 test.php
require_once("Java.inc");
$PBCAgent2G = new \Java("cn.com.infosec.netsign.agent.PBCAgent2G",false);
9.注意由php调取 java的任何方法所得到的值不能直接用,也不能直接打印,会得到一个对象
要使用java_values()函数先接收 才能使用
dump(java_values($PBCAgent2G->rawSign($aa,$c)));