美文网首页我爱编程
Linux配置php-java-bridge

Linux配置php-java-bridge

作者: 0晨鹤0 | 来源:发表于2017-03-31 19:44 被阅读0次

    转自:http://www.piaoyi.org/php/php-java-bridge-jar-class.html

    本人环境:CentOS7 64位,lnmp一键安装包-apach版,php7

    有的时候我们需要在PHP里调用JAVA平台封装好的jar包里的class类和方法,一般飘易推荐的做法是采用php-java-bridge做桥接,本文就来介绍一下大致的实现方法。

    先简单说下php-java-bridge做桥接的实现原理
    先打开java的一个监听端口,php调用java的时候,将对应的方法调用转发到java的指定端口,由java执行后再将结果返回给php。这种模式是一种比较典型的代理模式,php在这里成为了一个代理转发器,把java的类调用转发给后端的java执行。

    1.下载二进制的 JavaBridge.jar包、java/Java.inc库文件,下载地址:http://php-java-bridge.sourceforge.net/pjb/download.php

    2.首先确认已经安装java jdk环境。

    3.把JavaBridge.jar移动的java库的位置:
    /usr/local/java/jdk1.8.0_121/jre/lib

    4.在JavaBridge.jar所在目录运行命令(先cd到所在目录)
    java -jar JavaBridge.jar SERVLET_LOCAL:8081 &
    (加&是让其在后台运行)
    或者直接带上日志等级
    java -jar JavaBridge.jar SERVLET:8081 3 JavaBridge.log &

    执行后,我们使用命令netstat -nltp,发现linux已经开启了一个8081端口开始监听:

    PS:如果需要开机启用,配置:/etc/rc.d/rc.local
    末尾添加:
    java -jar JavaBridge.jar所在绝对路径 SERVLET_LOCAL:8081 &

    5、在web目录下放置 Java.inc文件,编写php测试代码 test.php

    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 "\n";
    }
    echo "\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 "\n";
    echo "\n";
    echo java("php.java.bridge.Util")->VERSION; echo "\n";
    } catch (JavaException $ex) {
    echo "An exception occured: "; echo $ex; echo "\n";
    }

    【一些注意事项】
    关于PHP-Java-Bridge的各种函数使用:
    1、高版本的java_require不再使用,也无法使用,由于放到java虚拟机下面,则不需要再手动引入包文件。
    2、java_value()用于获取值,而且必须使用该函数获取值。
    (特别注意:如果该值需要存入数据库,那么必须使用该java_value函数,不然会报错,或者无法存入数据库)
    3、java_inspect()对实例化或者方法进行print_r类似的输出。
    (注:请不要直接使用var_dump这样的输出方法输出java的类、方法、变量,需要使用java_inspect或者java_value,例如:var_dump(java_inspect($abc)))
    4、实例化使用 $test = new Java("Test")的方式,如果实例化的方法中存在参数,可以这样new Java("Test","pram")

    提醒
    1、务必确保对java.inc的引用,确保引用正确
    2、务必确保对jar包放在能引用的地方,比如java虚拟机jre下面
    3、在PHP中调用Java使用PHP的的写法即可

    参考:调用平安银行jar:https://my.oschina.net/kenblog/blog/399375

    相关文章

      网友评论

        本文标题:Linux配置php-java-bridge

        本文链接:https://www.haomeiwen.com/subject/bmgvottx.html