PHP 的 JavaBridge 就如其名字一样,是用于在 PHP 代码中调用 Java 类或方法的。一般都是用于外部提供的跨语言的 SDK 时使用。
序
下载 PHP 的 Javabridge ,可以在 sourceforge 中下载其最新版本(虽说是最新版,但是也是很久没有更新了),截止发文时最新版为 7.2.1 更新时间为 2018-02-03 。直接下载其二进制包即可,无需自行编译。
正
实际上跨语言的调用和 PHP 与 NGINX 的跨程序通讯是一致的,都是被调用的组件监听在本地,比如 PHP-FPM 就监听在 9000
端口上。
小贴士:使用 PHP/Javabridge 首先需要安装 Java 环境。
可以使用 RPM 或者 DEB 包进行安装,若使用二进制包安装需要手动配置环境变量。
本文使用的事 Java 1.8 ,因此在 /etc/profile 中或者 /etc/profile.d/ 中配置环境变量即可。
export JAVA_HOME=/usr/lib/java/ # 示例路径
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
若是使用 RPM 等安装包进行部署的,请使用命令查找 JRE 目录即可。
小贴士:比如 /usr/java/jdk1.8.0_131/jre/lib/ext/
目录下。
配置完成后在 Javabridge 目录下执行即可。
# java -jar JavaBridge.jar SERVLET:8081 3 JavaBridge.log &
小贴士:这里的3
是指日志等级,并且使用&
(nohup) 使其后台运行。
检查端口是否正常监听
# ss -lntp | grep 8080
LISTEN 0 20 *:8080 *:* users:(("java",pid=3943,fd=22))
若服务器想实现开机自启,可将命令添加至 /etc/rc.local
中,也可以使用脚本进行守护启动。
结
测试代码
<?php header( 'Content-Type: text/html; charset=UTF-8' );
define("JAVA_DEBUG", true); //调试设置
define("JAVA_HOSTS", "127.0.0.1:8081"); //设置javabridge监听端口
/*0: Log nothing, not even fatal errors.
1: Log fatal system errors such as "out of memory error".
2: Log java exceptions.*/
define("JAVA_LOG_LEVEL", 2); //java.log_level: 0-6
require_once "Java.inc"; //php调用java的接口,与该脚本位于同一目录
java_set_file_encoding("UTF-8"); //设置JAVA编码。
try {
/* invoke java.lang.System.getProperties() */
$props = java("java.lang.System")->getProperties();
/* convert the result object into a PHP array */
$array = java_values($props);
foreach($array as $k=>$v) {
echo "$k=>$v"; echo "<br>\n";
}
echo "<br>\n";
/* create a PHP class which implements the Java toString() method */
class MyClass {
function toString() { return "hello PHP from Java!"; }
}
/* create a Java object from the PHP object */
$javaObject = java_closure(new MyClass());
echo "PHP says that Java says: "; echo $javaObject; echo "<br>\n";
echo "<br>\n";
echo java("php.java.bridge.Util")->VERSION; echo "<br>\n";
} catch (JavaException $ex) {
echo "An exception occured: "; echo $ex; echo "<br>\n";
}
如何使用 PHP 调用 Java 类,以下为示例。
$Des3 = new Java("com.ksoft.security.Des3"); //实例
try{
echo $Des3->encode('88290801', $key);
echo "<hr>";
echo $Des3->decode('S2JFP23v0zM=', $key);
}
catch(Exception $e) {
echo($e);
}
附录
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2020-01-08 15:40 PM