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 11 PHP
discuz程序的PHP加密函数原理分析
Aug 05 PHP
ThinkPHP 防止表单重复提交的方法
Aug 08 PHP
PHP的构造方法,析构方法和this关键字详细介绍
Oct 22 PHP
ThinkPHP中RBAC类的四种用法分析
Nov 24 PHP
微信公众平台开发实现2048游戏的方法
Apr 15 PHP
php中array_multisort对多维数组排序的方法
Jun 21 PHP
CI框架文件上传类及图像处理类用法分析
May 18 PHP
PHP微信开发之模板消息回复
Jun 24 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
4种Windows系统下Laravel框架的开发环境安装及部署方法详解
Apr 06 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
图书管理程序(三)
2006/10/09 PHP
php 过滤危险html代码
2009/06/29 PHP
PHP 远程关机实现代码
2009/11/10 PHP
分享php分页的功能模块
2015/06/16 PHP
Laravel下生成验证码的类
2017/11/15 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
2011/04/06 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
AngularJs动态加载模块和依赖注入详解
2016/01/11 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
JS+CSS实现的漂亮渐变背景特效代码(6个渐变效果)
2016/03/25 Javascript
jQuery的Cookie封装,与PHP交互的简单实现
2016/10/05 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
Vue指令实现OutClick的示例
2020/11/16 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
[00:33]2016完美“圣”典风云人物:BurNIng宣传片
2016/12/10 DOTA
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
基于python实现地址和经纬度转换
2020/05/19 Python
浅谈Keras参数 input_shape、input_dim和input_length用法
2020/06/29 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
html5标记文字_动力节点Java学院整理
2017/07/11 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
写给老师的表扬信
2014/01/21 职场文书
总经理任命书
2014/03/29 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
2015国庆节宣传语
2015/07/14 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL