zl程序教程

您现在的位置是:首页 >  其他

当前栏目

JavaBridge详解编程语言

编程语言 详解
2023-06-13 09:11:53 时间

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

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

1.实现原理:

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

JavaBridge详解编程语言

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

php-servlet.jar包含两个servlet

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

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

Apache/IIS/console::PHP PhpJavaServlet

 ?php 

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

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

 echo $System- getProperties(); 

? 

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

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

internet browser PhpCGIServlet php-cgi PhpJavaServlet

2.eg:

 ?php 

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

use java/lang/String as JString; 

use java/util/ArrayList as JList; 

class String extends JString { 

 function toString () { 

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

$str = new String("Java"); 

$list = new JList(); 

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

$list- add ("from PHP"); 

$ar = java_values ($list- toArray()); 

foreach($ar as $entry) echo "$entry br /n" 

? 

 浏览器打开,输出

JavaBridge详解编程语言

 说明:

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

allow_url_include = On

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

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

JavaBridge详解编程语言

 其他应用实例 详见

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20381.html

cjavaphp