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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
第四节--构造函数和析构函数
Nov 16 PHP
php实现的MySQL通用查询程序
Mar 11 PHP
php下使用无限生命期Session的方法
Mar 16 PHP
自动生成文章摘要的代码[PHP 版本]
Mar 20 PHP
redis 队列操作的例子(php)
Apr 12 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
Oct 09 PHP
PHP利用递归函数实现无限级分类的方法
Mar 22 PHP
PHP设计模式之外观模式(Facade)入门与应用详解
Dec 13 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自定义大小验证码的方法详解
2013/06/07 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
php根据某字段对多维数组进行排序的方法
2015/03/07 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
一个刚完成的layout(拖动流畅,不受iframe影响)
2007/08/17 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
详解JavaScript中jQuery和Ajax以及JSONP的联合使用
2015/08/13 Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
2016/05/21 Javascript
js将json格式的对象拼接成复杂的url参数方法
2016/05/25 Javascript
javaScript手机号码校验工具类PhoneUtils详解
2017/12/08 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
vue做移动端适配最佳解决方案(亲测有效)
2018/09/04 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
在Django同1个页面中的多表单处理详解
2017/01/25 Python
python 实现矩阵按对角线打印
2019/11/29 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
Python实现迪杰斯特拉算法过程解析
2020/09/18 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
会展策划与管理专业大学生职业生涯规划
2014/02/07 职场文书
毕业生个人求职自荐信
2014/02/26 职场文书
外贸员简历中的自我评价
2014/03/04 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
学习十八大的感悟
2015/08/11 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
Python中的min及返回最小值索引的操作
2021/05/10 Python
javascript拖曳互换div的位置实现示例
2021/06/28 Javascript