【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第二部分-HelloWorld(windows)

【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】江湖人言”光说不练假把式,光练不说傻把式“,上文讲了LAJP的种种优点好处,但对于一门新语言或技术,程序员最关心如何快速的在实践中了解这项技术的特点,因此还是从千锤百炼也不变的HelloWorld入手。

LAJP有两种通信模式:消息队列和socket,针对windows和linux平台本节教程共分为三篇: windows下的socket模式hello world,linux下的socket模式hello world,和linux下的消息队列hello world。

windows下的socket模式hello world


安装之前:
系统要求: windows,安装好Apache、PHP环境
Java JDK:1.5以上。

安装配置:
下载 lajp-socket_9.09.zip ,解压:
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. 打开CMD黑窗口,CD进入解压目录的java子目录,运行其中的脚本程序run.bat,黑窗口中显示:
-------------------------------------------
- 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"

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值