Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1698228
  • 博文数量: 210
  • 博客积分: 10013
  • 博客等级: 上将
  • 技术积分: 2322
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-25 15:56
文章分类

全部博文(210)

文章存档

2011年(34)

2010年(121)

2009年(37)

2008年(18)

我的朋友

分类: 系统运维

2010-04-22 21:25:36

Php调用java说明

lajp实现)

名称含义

LAJP名称来源于著名的LAMP(Linux,Apache,Mysql,Php)LAMP是轻量级的开发Web程序的环境,在Internet上有广泛的应用,但对于企业开发,如金融、电信领域,LAMP显得能力不足,这些领域通常是Java(J2EE)的势力范围。LAJP是将LAMP的简便性和Java能力结合起来的一项技术,LAJP中的J指的是Java,由于数据库厂商对Java的广泛支持和LAJP针对的领域,数据库不再特别限制为Mysql

·     优势互补: PHP是非常流行的WEB编程脚本语言,有易学、易用、开发部署效率高的特点,非常适合WEB开发;JAVA适合编写具有复杂的业务功能和数据的程序,二者结合可发挥各自优势,适合开发B/S企业程序。

·     高效稳定Apache+PHP组合可带来优异的WEB服务稳定性,而JAVA可补充如连接池、事物管理、分布式、对象模型等高端特性。

·     创新的通信机制 PHPJava间的通讯方式采用系统消息队列和Socket两种机制,同时兼顾通讯效率和平台兼容性。

·     数据类型自动转换机制 PHP数据和Java数据可准确、自动匹配和转换。

·     易用LAJP安装配置简单,除了核心的几个Java类文件和Java JNI接口程序外,不需额外插件,PHP端和JAVA端编程符合各自的编程习惯。

·     轻量级LAJP架构非常轻量级,除了最基本的PHPJava环境,不需要任何扩充的、第三方的组件。

LAMPLAJP的简要对比

LAMP从传统技术架构上看属于2层结构,虽然在php5以后增强了面向对象的能力,有了形成业务逻辑层的语言基础,但对于复杂的企业级WEB应用,php语言能力仍显不足。LAJP继承了LAMPWEB领域编程的活力,并用java构建业务逻辑层,非常适合针对企业级WEB项目的开发。

 

java的互通

phpjava是两种不同的语言,在LAJP架构中二者之间的互通有两种机制。

·     一、消息队列

以操作系统的消息队列为沟通媒介,在通讯过程中php作为客户端调用java端服务。消息队列属于IPC技术(进程间通讯)php语言中内置了一组函数(msg_sendmsg_receive等)可以和System V消息队列通讯,而java中没有相似的方法,因此通过调用底层JNI接口使用C函数来实现。 使用消息队列有以下好处:

1.   使phpjava保持独立性

2.   有极高的传输速度,大于socket

3.   相对于socket方式,Java服务端只向本机提供服务(没有对外侦听端口),相对安全,易于管理。

·     二、Socket

消息队列技术只能适用于Unix/Linux/BSD系统,因此LAJP提供基于TCP/IP的通讯机制,从而适应各种平台。

PHPJava各有其语言内部定义的数据类型,当PHP数据传送到Java,或Java数据传送到PHP时,LAJP在内部自动地、准确地对他们进行转换,程序员无需进行任何的解码工作。

具体实现过程

1.下载lajp的包,地址,解压缩,然后修改make.sh文件,把里面的java_home修改过后,make通过把里面的so文件copyjava的库文件目录下面。

2.然后到java的目录下启动run.sh,注意如果用到了第三方包的话一定要在此处的otherclasspath里面注明,要用绝对路径。用命令nohup ./run.sh &启动

3./var/www/html/health/下面新建一个testphpjava.php,内容如下:

 

require_once("php_java.php");  //引用下载的php_java.php文件

 

$name = "Ali";

 

try

{

  //调用Javahello.HelloClass类中的hello方法

  $ret = lajp_call("hello.HelloClass::hello", $name);

  echo "{$ret}
";

}

catch (Exception $e)

{

  echo "Err:{$ret}
";

}

?>

4.在浏览器里输入

你会看到HelloWorld,这是java返回的字符串。

5.自己可以写一个新的类进行测试,但是一定要放在lajp下的java目录下,调用方式用lajp_call();,如果用到非常复杂的类,那么在phpjava中一定要有对应的类,具体请参考网站文档。

 

阅读(6343) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~