博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaBridge
阅读量:7047 次
发布时间:2019-06-28

本文共 1673 字,大约阅读时间需要 5 分钟。

 有的时候我们需要在PHP里调用JAVA平台封装好的jar包里的class类和方法

一般的做法是采用php-java-bridge做桥接

1.实现原理:

  先打开java的一个监听端口,php调用java的时候,将对应的方法调用转发到java的指定端口,由java执行后再将结果返回给php

  Java Bridge Web应用程序包含库php-servlet.jarphp-script.jar

  php-servlet.jar包含两个servlet

    (1) PhpJavaServlet处理来自在Apache / IIS或命令行中运行的远程PHP脚本的请求

       监听PHP / Java Bridge协议请求并调用Java方法或过程

      Apache/IIS/console::PHP <--> PhpJavaServlet

getProperties();?>

    (2)servlet PhpCGIServlet直接处理来自Internet客户端的请求

      php-script.jar用于使用标准Java 1.6 JSR 223 API以编程方式访问所描述的功能

      internet browser <--> PhpCGIServlet <--> php-cgi <--> PhpJavaServlet

2.eg:

add (java_closure($str));$list->add ("from PHP");$ar = java_values ($list->toArray());foreach($ar as $entry) echo "$entry
\n"?>

 浏览器打开,输出

 说明:

  (1)php需要修改配置文件

allow_url_include = On

  (2)如果javaBridge没开启,会报错

try{    require_once("http://localhost:8089/JavaBridge/java/Java.inc");}catch (Exception $e){    print $e->getMessage();    exit();}

加上try-cach也还是一样

修改为,下面的可以避免这个问题,没开启是,提示

$url = "http://localhost:8089/JavaBridge/java/Java.inc"; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT,10); $dxycontent = curl_exec($ch); if(empty($dxycontent)){    echo "没开启javaBridge";    exit();}

 3.client api

比较常用的

  java_is_null(mixed $value)  检测value是否为null

  java_values(object A $object)  获取值, array, Map or Collection 返回Array,确保返回值不超过php内存限制

  java_server_name()   server名

  java_is_false(mixed $value) 检测value是否为false

  java_is_true(mixed $value) 检测value是否为true

  java_inspect (object A $object)  返回public fields, public methods, public classes

  eg:

    echo java_inspect($calendar); 

  

 

 其他应用实例

转载地址:http://mazol.baihongyu.com/

你可能感兴趣的文章
Android DexIndexOverflow错误解析和解决方案
查看>>
关于BFC的一些应用
查看>>
码云 GVP 项目 SequoiaDB 完成 C 轮数千万美元融资
查看>>
linux关闭防火墙及开放端口
查看>>
Git常见用法
查看>>
「镁客·请讲」星逻智能王海滨:为无人机提供特斯拉服务,实现“无人化”操作 ...
查看>>
Spring AOP 实现原理
查看>>
BlockingQueue与Condition原理解析
查看>>
Nginx安全优化
查看>>
DilatedNet - 扩张卷积(语义分割)
查看>>
强化学习基础-对偶梯度上升
查看>>
设计模式——单例模式
查看>>
5G不是原子弹,任正非感谢美国帮忙宣传华为
查看>>
C++面向对象高级编程(上) 第二周 侯捷
查看>>
Spring Cloud Greenwich 新特性和F升级分享
查看>>
发现可远程控制玩家电脑的Steam漏洞,Valve 7500美元奖励上报人 ...
查看>>
0110-如何给Kerberos环境下的CDH集群添加Gateway节点
查看>>
正火的 Spring Boot 2.0 更新了啥?
查看>>
Kubernetes(K8s)Events介绍(上)
查看>>
Apsara SA系列混合云存储阵列发布
查看>>