JavaBridge详解编程语言
有的时候我们需要在PHP里调用JAVA平台封装好的jar包里的class类和方法
一般的做法是采用php-java-bridge做桥接
1.实现原理:
先打开java的一个监听端口,php调用java的时候,将对应的方法调用转发到java的指定端口,由java执行后再将结果返回给php
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" ?
浏览器打开,输出
说明:
(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);
其他应用实例 详见
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20381.html
cjavaphp相关文章
- python操作符重写,实现+操作符详解编程语言
- 50行Python代码实现代理服务器详解编程语言
- 公历农历互相转换的Java日历工具类详解编程语言
- Java 使用JCIFS访问网络文件共享的工具类详解编程语言
- Java学习笔记之二十五初步认知Java内部类详解编程语言
- java基础Haep(堆)和Stack(栈)区别详解编程语言
- java线程池ThreadPoolExecutor 如何与 AsyncTask() 组合使用详解编程语言
- Java四类八种数据类型详解编程语言
- javascript遍历select下拉框判断其中值是否与指定值相等详解编程语言
- java如何使用AES加密详解编程语言
- 异常详解编程语言
- java 虚拟机内存划分,类加载过程以及对象的初始化详解编程语言
- NIO之Charset类字符编码对象详解编程语言
- python3 isinstance()判断元素是否是字符串、int型、float型详解编程语言
- 函数TEXT – EXCEL单元格中日期格式转换为文本格式详解编程语言
- java与xml转换 — XStreamAlias详解编程语言
- 工艺路线批导(备份)详解编程语言
- 执行CDSview详解编程语言
- SAP 获取用户IP、操作记录详解编程语言
- ABAP EXCEL批导+后台作业(JOB)—创建工艺路线+物料分配详解编程语言
- 发票校验与收货的差异处理详解编程语言
- 配置SAP服务器外网登陆以及网络故障解决示例详解编程语言
- Django的使用入门详解编程语言
- 从集中式到分布式详解编程语言