PHP-Java-Bridge使用笔记


Posted in PHP onSeptember 22, 2014

/**============================================================

* @author  ken(695093513@qq.com)

* @date    2014-09-09

*
==============================================================**/

/**============================================================

* 版本与环境

*
==============================================================**/

版本:

1、PHP版本:最高为5.4,当前测试为5.4/5.3

2、JDK:官方最新版本,当前测试为1.8

3、php-java-bridge:官方最新版本,当前测试为6.2.1

4、操作系统:Windows7 32位/64位 | Linux(Centos6.5)

/**============================================================

* 安装和使用

*
==============================================================**/

第一步:安装

1、JDK的安装:正常安装即可,并配置好环境变量

2、PHP的安装:正常安装即可

3、php-java-bridge的安装:

①先下载Java服务器Tomcat正常安装,安装好后,开启Tomcat服务器

②将下载的php-java-bridge包放到webapps下面

③等待Tomcat执行解析,会在该目录下面生成相同名字的文件夹

④将该文件夹拷贝到Apache服务器下面使用

(注:网上的教程可以正常使用,调用java系统函数和简单的jar包,但是对于复杂的jar包会遇到各种各样的问题,所以建议使用这种方式)

第二步:使用

1、不需要开启Tomcat(最好关闭掉),开启apache服务器,双击运行javabridge.jar,选择8080端口(javabridge.jar也需要放到java虚拟机下面,参见下面第二点规则)。

2、尽可能的将jar包放到java虚拟机下面,即jre安装下面(比如:C:\Program Files\Java\jre1.8.0_20\lib\ext)

3、在PHP文件中不需要再引用jar包,因为放到虚拟机下面去了,java会自动调用

(注:第1点中的javabridge.jar是在第一步:安装中第3点中获得的)

/**============================================================

* 其他使用方法和注意事项

*
==============================================================**/

关于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的的写法即可

/**============================================================

* 附录1:各种报错问题处理

* 附录2:PHP实例代码

* 附录3:PHP-Java-bridge文件包解压后目录图

*

==============================================================**/

附录1:各种报错问题处理

1、参照上面的“其他使用方法和注意事项”,大多数问题都是路径引用的问题,只要处理好了,正确获得了,就不会出问题

附录2:PHP实例代码

require_once("/java/Java.inc");

$util = new Java("com.sdb.payclient.core.PayclientInterfaceUtil");

$input = new Java("com.ecc.emp.data.KeyedCollection");

$signDataput = new Java("com.ecc.emp.data.KeyedCollection");

$input->put("masterId","111111");

$input->put("orderId","222222");

$signDataput = $util->getSignData($input);

$orig = java_values($signDataput->getDataValue("orig"));

$sign = $signDataput->getDataValue("sign");

echo java_values($sign);

附录3:PHP-Java-bridge文件包解压后目录图

bridge
 --java
 java.inc
 JavaProxy.php
 --WEB-INF
 --cgi
 --...
 --lib
 php-script.jar
 php-servlet.jar
 --pear
 web.xml
 weblogic.xml
PHP 相关文章推荐
php中常用编辑器推荐
Jan 02 PHP
php5.2.0内存管理改进
Jan 22 PHP
php之字符串变相相减的代码
Mar 19 PHP
PHP form 表单传参明细研究
Jul 17 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
php获取字段名示例分享
Mar 03 PHP
php中fgetcsv()函数用法实例
Nov 28 PHP
2014最热门的24个php类库汇总
Dec 18 PHP
nginx下安装php7+php5
Jul 31 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
Yii框架模拟组件调用注入示例
Nov 11 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 PHP
11个PHPer必须要了解的编程规范
Sep 22 #PHP
PHP正则替换函数preg_replace和preg_replace_callback使用总结
Sep 22 #PHP
php分页函数完整实例代码
Sep 22 #PHP
php中file_get_content 和curl以及fopen 效率分析
Sep 19 #PHP
PHP return语句另类用法不止是在函数中
Sep 17 #PHP
php使用$_POST或$_SESSION[]向js函数传参
Sep 16 #PHP
PHP正则表达式替换站点关键字链接后空白的解决方法
Sep 16 #PHP
You might like
PHP 5.3.0 安装分析心得
2009/08/07 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
php二分查找二种实现示例
2014/03/12 PHP
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
PHP文件与目录操作示例
2016/12/24 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
详解JavaScript数组的操作大全
2015/10/19 Javascript
js表单验证实例讲解
2016/03/31 Javascript
使用jquery.qrcode.js生成二维码插件
2016/10/17 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
Angular中实现树形结构视图实例代码
2017/05/05 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
使用vue-cli+webpack搭建vue开发环境的方法
2017/12/22 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
跟老齐学Python之dict()的操作方法
2014/09/24 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python实现KNN(K-近邻)算法的示例代码
2019/03/05 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
python 统计文件中的字符串数目示例
2019/12/24 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
英国定做窗帘和纺织品面料一站式商店:Dekoria
2018/08/29 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
小学生成长感言
2014/01/30 职场文书
工作表现自我评价
2014/02/08 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
杭州黄龙洞导游词
2015/02/10 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
Python如何让字典保持有序排列
2022/04/29 Python