php调用java代码 php调用Java

PHP如何调用JAVA类 - PHP进阶讨论

在php.ini里设置。有java设置的块。下面是我以前的一个配置做为示例,可以参考一下。[ol][*][*][Java][*]java.class.path = /usr/local/lib/php/php_java.jar:/usr/local/apache/htdocs/java[*]java.home = /usr/local/j2sdk_nb/j2sdk1.4.2/jre[*]java.library = /usr/local/j2sdk_nb/j2sdk1.4.2/jre/lib/i386/libjava.so[*]java.library.path = /usr/local/lib/php/extensions/no-debug-non-zts-20020429[*]extension_dir = /usr/local/lib/php/extensions/no-debug-non-zts-20020429[*]extension = libphp_java.so[*][/ol]Java的两个安装包好象都是默认的安装。PHP要引用的Java Class要存在于java.class.path指定的路径区域中。记得当时试了大半天才大致搞明白,呵呵。关于调用直接参考PHP官方文档里的即可。[[i] 本帖最后由 seraph 于 2006-3-27 16:28 编辑 [/i]]

在延安等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计制作、成都网站制作 网站设计制作按需开发,公司网站建设,企业网站建设,成都品牌网站建设,成都全网营销,外贸营销网站建设,延安网站建设费用合理。

php怎么调用java接口?

这跟java无关,WebService哪种语言开发的都可以,php都是一样调用

调用方法网上很多例子,就不搬运了:

如何实现在PHP中调用JAVA

if rv is not None and rsv is not None:

# extract version/subversion

self._nmap_version_number = int(line[rv.start():rv.end()])

self._nmap_subversion_number = int(line[rsv.start()+1:rsv.end()])

break

}

如何用PHP代码实现这个Java代码所实现的

JavaAes类,用php实现方法:importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.KeyGenerator;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;publicclassAESSecurityUtil{privatestaticfinalStringAES="AES";privatestaticfinalStringCHARSET_NAME="utf-8";privatestaticSecretKeySpecgetKey(Stringpassword)throwsNoSuchAlgorithmException{KeyGeneratorkgen=KeyGenerator.getInstance(AES);SecureRandomrandom=SecureRandom.getInstance("SHA1PRNG");random.setSeed(password.getBytes());kgen.init(128,random);SecretKeysecretKey=kgen.generateKey();byte[]enCodeFormat=secretKey.getEncoded();SecretKeySpeckey=newSecretKeySpec(enCodeFormat,AES);returnkey;}publicstaticStringencode(Stringstr,Stringpassword){byte[]arr=encodeToArr(str,password);returnbyteArrToString(arr);}privatestaticbyte[]encodeToArr(Stringstr,Stringpassword){try{Ciphercipher=Cipher.getInstance(AES);byte[]byteContent=str.getBytes(CHARSET_NAME);cipher.init(Cipher.ENCRYPT_MODE,getKey(password));byte[]result=cipher.doFinal(byteContent);returnresult;}catch(Exceptione){e.printStackTrace();}returnnull;}publicstaticStringdecode(StringhexStr,Stringpassword){byte[]arr=string2ByteArr(hexStr);returndecode(arr,password);}privatestaticStringdecode(byte[]arr,Stringpassword){try{Ciphercipher=Cipher.getInstance(AES);cipher.init(Cipher.DECRYPT_MODE,getKey(password));byte[]result=cipher.doFinal(arr);returnnewString(result,CHARSET_NAME);}catch(Exceptione){e.printStackTrace();}returnnull;}privatestaticStringbyteArrToString(byte[]arr){StringBuffersb=newStringBuffer();for(inti=0;i

php怎么调用java的https方式的webservice接口

webservice 发展了好久了,有好多种客户端部署调用方式 ,流程大致是先创建服务,再调用。

下面的代码是创建一个简单的Webservice服务.

server.php

?php

require_once "lib/nusoap.php";

function webserver() {

return "This is a Webservice Server";

}

$soap = new soap_server;

$soap-register('webserver');

$soap-service($HTTP_RAW_POST_DATA);

?

上面的代码就创建了一个Webservice服务程序,接下来创建调用Webservice接口的程序:

?php

require_once "soap/lib/nusoap.php";

$web_url = "127.0.0.1";

$client = new soapclient($web_url."/server.php");

$param = array();

$ret = $client-call('webserver', $param, $web_url, $web_url);

echo $ret;

?

基本上流程就是这样,当然,实际应用上能写出很复杂的东西,这个你可以找找相关资料学习一下,上面的php调用Webservice程序是通用的,适合于PHP调用其它ASP.NET及Java等各类语言的Webservice接口。一些技术博文里有很详细的介绍和学习。

java怎么调用php的语句是什么

PHP调用JAVA方式

1. 背景

在开发招商银行信用卡分期付款功能过程中,在支付成功之后需要对银行的返回数据进行签名验证,因签名加密方式招商银行是不提供的,只提供了相应的JAVA验证类测试例子,而本项目采用的是PHP架构方式,因此需要PHP调用JAVA的验证类来测试签名是否正确。

2. 目的

本文档提供一种PHP调用JAVA类的方式来进行招行的支付成功签名验证,本方法也可用于其他银行的JAVA签名验证方式。

3. 名词解释

名词

解释说明

php-java-bridge

PHP和JAVA的连接桥

4. php-java-bridge安装和配置介绍

4.1 安装

Php-java-bridge下载路径:

最新php-java-bridge版本是php-java-bridge_6.2.1.tar.gz解压之后采用/usr/local/php/phpize进行模块编译,提示Cannot find config.m4,版本过高问题,采用了5.4.4.2版本。

编译及安装:

tar zxvf php-java-bridge_5.4.4.2.tar.gz

cd php-java-bridge-5.4.4.2/

/usr/local/php/bin/phpize

./configure --disable-servlet --with-java=/usr/local/java/,/usr/local/java/jre --with-php-config=/usr/local/php/bin/php-configmake make install

4.2 配置

vim /usr/local/php/etc/php.ini

[新增]

extension=java.so

[java]

java.java_home="/usr/local/java/"

java.java="/usr/local/java/jre/bin/java"

java.log_file="/var/log/php-java-bridge.log"java.classpath="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/JavaBridge.jar"java.libpath="/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/"java.log_level="3"

java.hosts="10.204.79.232:8081"

4.3 启动

重新启动nginx或者apache,输入?php phpinfo();?可以看到java support

Enabled

java bridge

5.4.4.2

java.log_level

2

手动启动javaBridge

java -jar JavaBridge.jar SERVLET:8080

也可以尝试使用java -jar JavaBridge.jar SERVLET_LOCAL:80814.4 测试

解压javaBridge.jar,取出java目录下相关的Java.inc文件测试代码:

require_once("java/Java.inc");

$string = new Java("java.lang.String", "HelloWorld");echo $string;

$system=new Java("java.lang.System");

echo "Java version=".$system-getProperty("java.version")." ";注意:java/Java.inc记得从javaBridge.jar解压出来放在相关php代码中注意取值:java_is_true java_is_false java_values5. 注意事项及配置过程中的问题

下述描述在实际配置测试过程中可能会碰到的问题及解决方法:

5.1 问题

问题1:

configure: error: host_alias is not set. Make sure to run config.guessBack-end configuration failed.

Please install the recommended autoconf, libtool and automake versionsor disable back-end configuration and use the pre-compiled J2EE back-end:

./configure --disable-backend --with-java=JAVA_HOME

configure: error: ./configure.gnu failed for server安装yum install libtool即可

5.2 注意事项

事项1:

远程调用require_once(‘‘);需要设置php.ini的allow_url_include参数为on,同时编辑 JavaBridge 部署的 Web 应用程序目录中的 web.xml 文件,如下:

取消对这个部分的注释,以便允许对您的 Java 类进行远程访问init-param

param-namepromiscuous/param-name

param-valueOn/param-value

/init-param

事项2:

在实际生产环境中,考虑到如果每台机器都部署一个JavaBridge服务的话,不好维护。故考虑在单台或2台左右机器上部署,其他机器连接到部署机器上,可以做分流承压的功效并且易监控。在外网环境下发现在调用部署环境的内外网IP都无法获取到指定文档。实际require_once本质就是调用部署环境的java.inc文件,可以考虑把相关文件放在本地生产环境上,但在引用Java_require相关JAR包会提示连接不到JavaBridge服务,阅读Java.inc可以查看它会通过几个地方设置JAVA_HOST宏变量,第一种是通过require_once里面的IP或者域名和端口,另外一种是在未设置JAVA_HOST宏变量的前提下读取php.ini,如果都没有java.hosts参数则默认为127.0.0.1:8080。

排除第一种方式如果采用读取php.ini的话,因为本身java.hosts参数不属于PHP可人为设置的参数,采用ini_set函数并不能指定java.hosts的值,所以一种方式是在所有项目的生产环境的php.ini都指定内网IP和端口,如java.hosts=10.204.79.231:8080。还有一种方式,查阅Java.inc可以看到是在未设置JAVA_HOST变量的前提下是去读取php.ini,我们可以在require_once(‘java/Java.inc‘)之前新增一行define ("JAVA_HOSTS", $host)。

5.3 参考例子

个人的实际测试代码如下:

private function _checkSign($strText, $strSign){$ret = false;

try{

$host = ConfigWrapper::load()-services-phpjava-host;if($host != NULL){

define ("JAVA_HOSTS", $host);

}

require_once(‘java/Java.inc‘);

java_require(self::CMBJAR);

$pay = new Java(‘testCdpaySign‘, self::CERFILE);$result = $pay-checkSign((string)$strText, (string)$strSign);if(java_is_true($result) == 1){

$ret = true;

}

}catch (\Exception $e) {

Logger::debug("_checkSign = " . $e-getMessage());}

return $ret;

}


本文标题:php调用java代码 php调用Java
转载来源:http://ybzwz.com/article/doojocg.html