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 session应用实例 登录验证
Mar 16 PHP
php获取数组中重复数据的两种方法
Jun 28 PHP
PHP APC缓存配置、使用详解
Mar 06 PHP
php实现的替换敏感字符串类实例
Sep 22 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
PHP面试题之文件目录操作
Oct 15 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
PHP实现的观察者模式实例
Jun 21 PHP
php创建多级目录与级联删除文件的方法示例
Sep 12 PHP
阿里对象存储OSS在laravel框架中的使用方法
Oct 13 PHP
解决laravel 表单提交-POST 异常的问题
Oct 15 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无限级栏目分类读取的实现代码
2014/02/19 PHP
php获取指定日期之间的各个周和月的起止时间
2014/11/24 PHP
用PHP代码给图片加水印
2015/07/01 PHP
Laravel 修改默认日志文件名称和位置的例子
2019/10/17 PHP
30个最佳jQuery Lightbox效果插件分享
2011/04/11 Javascript
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
常见的jQuery选择器汇总
2014/11/24 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
javascript精确统计网站访问量实例代码
2015/12/19 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
Vue实现百度下拉提示搜索功能
2017/06/21 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
解决layui表格的表头不滚动的问题
2019/09/04 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
python脚本实现查找webshell的方法
2014/07/31 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
Python FFT合成波形的实例
2019/12/04 Python
深入理解Tensorflow中的masking和padding
2020/02/24 Python
动态设置django的model field的默认值操作步骤
2020/03/30 Python
2013的个人自我评价
2013/12/26 职场文书
办理居住证介绍信
2014/01/15 职场文书
先进德育工作者事迹材料
2014/01/24 职场文书
高中生操行评语
2014/04/25 职场文书
社区端午节活动总结
2015/02/11 职场文书
青年教师个人总结
2015/02/11 职场文书
opencv 分类白天与夜景视频的方法
2021/06/05 Python
MySQL配置主从服务器(一主多从)
2021/08/07 MySQL
python playwright 自动等待和断言详解
2021/11/27 Python
HTML怎么设置下划线?html文字加下划线方法
2021/12/06 HTML / CSS
使用Postman测试需要授权的接口问题
2022/06/21 Java/Android