java bridge_JavaBridge

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

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

1.实现原理:

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

ffbdfa73e31fbdbeb2c187775c2ddc3b.png

Java BridgeWeb应用程序包含库php-servlet.jar和php-script.jar

php-servlet.jar包含两个servlet

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

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

Apache/IIS/console::PHP PhpJavaServlet

require_once("http://localhost:8080/JavaBridge/java/Java.inc");

$System= java("java.lang.System");

echo $System->getProperties();?>

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

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

internet browser PhpCGIServlet php-cgi PhpJavaServlet

2.eg:

require_once("http://localhost:8080/JavaBridge/java/Java.inc");

use java\lang\StringasJString;

use java\util\ArrayListasJList;classString extends JString {

function toString () {return "hello". parent::toString();

}

}

$str= new String("Java");

$list= newJList();

$list->add (java_closure($str));

$list->add ("from PHP");

$ar= java_values ($list->toArray());foreach($ar as $entry) echo "$entry
\n"

?>

浏览器打开,输出

5e4a2267091bb646666dad9ae4cbf330.png

说明:

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

allow_url_include = On

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

005105254a404cd1d3e3388b0f020fb5.png

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);

29e2e887fc599c21b6c014f8282d24ea.png

其他应用实例 详见

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值