一、php如何调取java方法:
php调用java的方法有Javabridge,也有rpc。php里调用java平台封装好的jar包里的class类和方法推荐使用php-java-bridge做桥接。
二、Javabridge工作原理:
通过服务端打开一个java的监听端口,php调用java时,将对应的方法调用转发给java的指定端口,由java执行完成后将结果返回给php。可以简单的理解php在这里扮演的角色是代理转发,把调用的类方法转交给后端java执行,是一种较为典型的代理模式。
三、使用步骤:
**1、**服务端部署Apache/Nginx+PHP+JDK+Tomcat
**2、**下载本文附件Javabridge,文件说明:
(1)JavaBridge.jar:用于搭建WEB服务器接口的核心JAVA应用程序包(本文附带的版本是7.2.1)。
(2)Java.inc:供PHP语言调用的方法包,主要是Java类。
**3、**修改配置文件(如果你需要通过IP或域名形式引入java.inc的话)
打开php的配置文件php.ini,查找到allow_url_include属性,若 allow_url_include = Off 那么将其改成 allow_url_include = On ,然后重启Apache服务。 若依然无法支持URL访问方式,再检查 allow_url_fopen 属性,将其也设置成开启状态:allow_url_fopen = On (这个属性默认应该是开启的:On),然后重启Apache服务。
**4、**解压打开下载后的php_java_bridge目录,拷贝JavaBridge目录到Tomcat的Webapps目录下。然后再将demo文件夹拷贝到PHP服务器的网站根目录下。之后访问:http://localhost/demo/index.php
,若能正确显示JavaBridge的相关介绍信息,说明JavaBridge配置成功。
**5、**使用php调通java的类方法
<?php
$ip = GetHostByName($_SERVER['SERVER_NAME']); //获取本机IP
require_once("http://".$ip.":8080/JavaBridge/java/Java.inc"); //php调用java的接口,路径问题需要注意
java_set_file_encoding("UTF-8");//设置JAVA编码,GBK/UTF-8请设置正确的编码
$encryptor = new Java("COM.CDB.EnDecryptAlgorithm.MCipherEncryptor",'012345678');//初始化java类。第一个参数是JAVA开发的类的名字包含包路径;第二个参数为可选参数,如果JAVA下的类需要使用构造函数,可以使用第二个参数传入
$cdbParam = 'userid=2018&site=www.fity.cn';
$encryResult = $encryptor->doEncrypt($cdbParam);
$result = java_values($encryResult);
**6、**Javabridge常用函数说明: (1)java_value()用于获取值,而且必须使用该函数获取值 (特别注意:如果该值需要存入数据库,那么必须使用该java_value函数,不然会报错,或者无法存入数据库) (2)java_inspect()对实例化或者方法进行print_r类似的输出 (注:请不要直接使用var_dump这样的输出方法输出java的类、方法、变量,需要使用java_inspect或者java_value,例如:var_dump(java_inspect($abc)))