【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第二部分-HelloWorld(Linux socket)
2009-09-29 19:48
585 查看
【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】[/code]Linux下的socket模式hello world
安装之前:
系统要求: Linux,安装好Apache、PHP环境
Java JDK:1.5以上。
安装配置:
下载 lajp-socket_9.09.zip
或lajp-socket_9.09.tar.gz
,解压:
lajp-socket_9.09 //socket版
|
|--java
| |
| |--hello //Hello World示例程序
| | |
| | |--HelloClass.class
| | +--HelloClass.java
| |
| |--lajp_9.09.jar //Java服务端主程序
| |--run.sh //运行脚本(Unix/Linux)
| +--run.bat //运行脚本(Windows)
|
+--php
|
+--php_java.php //PHP脚本
解开后有两个子目录,将php目录中的php_java.php文件复制到Apache+php环境中的发布目录,备用。
编写PHP文件:
001 <?php header("Content-Type:text/html;charset=utf-8"); ?>
002
003 <?PHP
004 require_once("php_java.php"); //引用下载的php_java.php文件
005
006 $name = "Ali";
007
008 try
009 {
010 //调用Java的hello.HelloClass类中的hello方法
011 $ret = lajp_call("hello.HelloClass::hello", $name);
012 echo "{$ret}<br>";
013 }
014 catch (Exception $e)
015 {
016 echo "Err:{$ret}<br>";
017 }
018 ?>
运行:
1. 运行脚本程序run.sh,显示:
-------------------------------------------
- Start LAJP-JAVA(socket)...
- time:Tue Sep 22 22:56:09 CST 2009
-------------------------------------------
Listen port: 21230
set charser: UTF-8
以上信息表示Java服务已经运行。
2. 打开浏览器,访问刚创建的php程序地址,页面显示:"Hello World! Ali"。
OK,Hello World程序演示结束。
解释:
在下载的zip文件的Java程序中,带有一个LAJP服务,服务类是HelloClass.class,我们看它的源代码HelloClass.java:
001 package hello;
002
003 public class HelloClass
004 {
005 public static final String hello(String userName)
006 {
007 return "Hello World! " + userName;
008 }
009 }
当php程序执行到 $ret = lajp_call("hello.HelloClass::hello", $name)语句时,发生如下事情:
1. lajp_call函数参数"hello.HelloClass::hello"告诉LAJP,我要访问hello.HelloClass类中的hello方法,并且传给它一个参数$name。
2. 在lajp_call函数内部将请求包装为消息包,通过socket发送给Java服务
3. Java端的LAJP程序接收消息报,解析调用含义,找到HelloClass类和hello方法,执行方法调用,再将方法返回值包装为消息包,socket回PHP程序
4. PHP端lajp_call函数解析返回消息包,得到其中的字符串"Hello World! Ali"
相关文章推荐
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第二部分-HelloWorld(Linux 消息队列)
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第二部分-HelloWorld(windows)
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第一部分-简介
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第四部分-增删改查示例程序
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第三部分-LAJP规范用法
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】Linux下消息队列和socket绝对速度比拼
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】新瓶装老酒--PHP结合Java构建Web应用的新思路
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】在PHP中通过系统信号量加锁方式获取递增序列ID
- LAJP系列教程-第二部分-HelloWorld
- Linux (x86) Exploit 开发系列教程之七 绕过 ASLR -- 第二部分
- LAJP系列教程-第四部分-增删改查示例程序
- 【Linux C/C++系列教程】 第一讲 HelloWorld程序内存分区详解
- Linux (x86) Exploit 开发系列教程之八 绕过 ASLR -- 第三部分
- 转载自http://www.programmer.com.cn/8435/ 本文链接: 编程技术面试的五大要点
- Linux socket 编程,第二部分
- PHP程序员玩转Linux系列 CentOS安装使用教程
- LAJP系列教程-第三部分-LAJP使用注意事项
- 【树莓派】RTC时钟模块安装教程第二部分:Rasbian(linux)下配置工作
- 易语言自绘系列教程(美易自绘)(第二部分)
- LAJP系列教程-第五部分-架构设计