您的位置:

包含testnewjavaphp的词条

本文目录一览:

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 的配置问题(linux)下

语法错误

不是 new class java

而是这样用

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

echo 'Java version=' . $system-getProperty('java.version') . 'br /';

如果是 new class java

则是你自己定义一个类名叫 java

基于ICE的PHP与java间的通信

PHP与JAVA融合的开发环境

一.系统环境

1.初始安装

防火墙开放接口:21,22,80,2401,8009,10000,eth0

Redhat Linux 9.0

Development Tools

Network Servers

VSFtp

CVS-1.11.2-10

MySQL 3.23.54

2.包安装

JDK 1.5

下载地址:

Tomcat 5.0.19

下载地址:

3.脚本安装

Webmin 1.110

下载地址:

ZendOptimizer 2.5.1

下载地址:

4.手工编译

Apache 2.0.49

下载地址:

PHP 4.3.5

下载地址:

JK 2-2.0.4

下载地址:

5.客户机环境

Windows XP Professional

Absolute Telnet 3.0

Zend Encoder

Macromedia Dreamweaver MX 2004

Borland JBuilder 9 Enterprise

WinCVS 1.3

下载地址:

二.系统安装

启动Linux安装光盘,安装基本系统:FTP、开发工具和MySQL3.23.54。如果你是手工编译安装MySQL,要记得以后在编译PHP等程序时要指明MySQL的具体路径,否则会因找不到路径而导致编译出错。

三.安装webmin1.110

用Webmin来配置系统,傻瓜化,可以节省不少力气,所以一般我都先安装它。安装过程很简单,执行setup.sh脚本后照提示一步一步来就可以了。

# cd webmin*

# ./setup.sh

四.安装JDK1.5

1.编辑如下三个文件,没有指明全路径的放在你自己的home目录就可以。

/etc/profile

JAVA_HOME=/usr/java/j2sdk1.4.2_04

CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

CVSROOT=/usr/local/cvsroot

PATH=.:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

export JAVA_HOME CLASSPATH CVSROOT PATH

/etc/ld.so.conf

/usr/java/j2sdk1.4.2_04/jre/lib/i386

/usr/java/j2sdk1.4.2_04/jre/lib/i386/server

HelloWorld.java

class HelloWorld

{

public static void main(String[] args)

{

//本文件测试Java环境是否安装成功。

System.out.println("Hello World!");

}

}

2.执行以下命令:

# rpm -ivh j2sdk*.rpm //安装JDK包。

# source /etc/profile //重载profile环境。

# ldconfig //创建动态链接库缓存文件。

# javac -d . HelloWorld.java //编译测试文件。

# java HelloWorld //运行程序测试安装是否成功。

五.安装Apache

# tar xvzf httpd* //解压源码包。

# cd httpd* //进入安装目录。

# ./configure --prefix=/usr/local/apache --enable-so --enable-mods-shared=most --enable-rewrite

# make;make install //编译并安装。

说明:

--enable-so选项:让Apache可以支持DSO模式,注意,我们在这里采用的是Apache2.0的语法。如果你的Apache是1.3版本,应改为--enable-module=so。

--enable-mods-shared=most选项:告诉编译器将所有标准模块都编译为DSO模块。你要是用的是Apache1.3,改为--enable-shared=max就可以。

--enable-rewrite选项:支持地址重写功能,使用1.3版本的朋友请将它改为--enable-module=rewrite。

六.编译安装PHP

1.执行命令

#tar xvzf php* //解压源码包

#cd php* //进入PHP安装命令

#./configure --prefix=/usr/local/php --with-mysql --with-apxs2=/usr/local

/apache/bin/apxs --with-java=/usr/java/j2sdk1.4.2_04

#make;make install //编译并安装

#cp php.ini-dist /usr/local/php/lib/php.ini //复制php配置文件

#cd /usr/local/php/lib/php/extensions/no-debug-non-zts-20020429 //extensions目录

#ln -s java.so libphp_java.so //建立连接,忘记了会出错哦

#cd Zend* //进入ZendOptimizer目录

#./install //安装PHP加速器

说明:

--with-apxs2=/usr/local/apache/bin/apxs是Apache2的语法,1.3版本的用户请使用--with-apxs=/usr/local/apache/bin/apxs。

2.编辑下面三个文件

/usr/local/apache/conf/httpd.conf

LoadModule php4_module modules/libphp4.so

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

AddDefaultCharset gb2312

/usr/local/apache/htdocs/test.php

?php

//本程序测试PHP的JAVA环境是否可用,

代码是从摘录下来的。

// get instance of Java class java.lang.System in PHP

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

// demonstrate property access

echo 'Java version=' . $system-getProperty('java.version') . 'br /';

echo 'Java vendor=' . $system-getProperty('java.vendor') . 'br /';

echo 'OS=' . $system-getProperty('os.name') . ' ' .

$system-getProperty('os.version') . ' on ' .

$system-getProperty('os.arch') . ' br /';

// java.util.Date example

$formatter = new Java('java.text.SimpleDateFormat',

"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter-format(new Java('java.util.Date'));

?

/usr/local/php/lib/php.ini

register_globals=On

[Java]

java.class.path=/usr/local/php/lib/php/php_java.jar:/home/jim/myclass

java.home=/usr/java/j2sdk1.4.2_04

java.library=/usr/java/j2sdk1.4.2_04/jre/lib/i386/libjava.so

java.library.path=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429

extension_dir=/usr/local/php/lib/php/extensions/no-debug-non-zts-20020429

extension=libphp_java.so

注意:

(1).如果你刚刚从以前老版本的PHP转换到新版本,可能会发现你的PHP程序很多都不能用了。别紧张!把register_globals打开就一切正常啦!这是因为老版本的PHP,它的register_globals默认是开着的,而新版本,却把它关了的缘故。

(2)./home/jim/myclass是我存放JAVA组件的路径,你可以根据实际情况修改,但是为了安全起见,可不要放在web目录下哦。

php类的静态方法中可以用new吗?原因 ?

1、Java的静态方法中可以新建其他类对象。可以new,没有不许。

2、php的静态方法也可以新建对象。首例中的$s是个局部变量,方法执行完后,在系统需要的时候,这块内存就会被回收。

3、静态方法中只是不许写 己类的非静态的属性、方法。

4、对程序的影响,new实例化对象是一项基本功能,就会实例化一个对象,多占一点内存

包含testnewjavaphp的词条

2022-12-02
包含python使用笔记24的词条

2022-11-21
包含java基础笔记day1的词条

2022-11-20
php第三节笔记,php读书笔记

2022-12-02
包含golangbreak的词条

2022-11-26
包含php://inputjson的词条

本文目录一览:...

2023-12-08
包含golangfmt的词条

2022-11-26
包含pythonjsondump的词条

本文目录一览: 1、【Python】浅谈python中的json 2、Python用json模块时怎么才能用dump存数据时自动换行呢 3、python 用json.dumps处理字典后如何还原? 4

2023-12-08
php基础学习笔记下,细说php读书笔记

2022-11-18
包含golangdate的词条

2022-11-27
包含php敏感词处理的词条

2022-11-09
包含socketio.jsclose的词条

本文目录一览: 1、nodejs socket 怎么检测客户端主动断开连接 2、javascript怎么操作socket 3、socketio 不是标准的websocket?为什么java写的clie

2023-12-08
包含phptodays的词条

2022-11-26
包含concentjs的词条

本文目录一览: 1、js向页面插入div 2、php怎么抓取其它网站数据 js向页面插入div 内容加单引号,去掉空格。concent='div style="layout-grid:19px"p s

2023-12-08
php教程笔记复习1(细说php读书笔记)

2022-11-10
包含loopphp的词条

2022-11-22
包含cao1234js的词条

本文目录一览: 1、帮忙给个ps的教程 2、哪里有专门的日本综艺节目观看和下载的网站? 3、跪求健身操的视频网站 4、哪里有下载健身操视频的? 5、@163.com邮箱怎么登录 帮忙给个ps的教程 让

2023-12-08
包含小程序发送json后被php转移的词条

本文目录一览: 1、php怎么微信小程序发送过来的json数据 2、php如何发送和接收JSON数据 3、php json_encode 后, 汉字被转移了 4、php处理微信小程序request请求

2023-12-08
包含phpfindone的词条

2022-11-23
包含并同时支持php的词条

2022-11-20