ice(Internet Communications Engine) window 安装与配置

什么是ice

ice是一个面向对像的中间件平台,所以,这意味着ice提供了一个工具,一些api和一些类库用来构造面向对像蝗基于client-server 的应用程序,所以,ICE适用于在异构环境中使用,他的client和server能够用不一样的语言来写,好比server用java来做开发,client用php来做展示,这样php和java能够能过ice来进行操做。更有意思的是ice能够运行于不一样的操做系统和机器架构,如 winodws,linux,unix...php

我认为最重要的一点就是ice是开源的,他的文档很是的完善,当你看他的文档的时候,你就会感到无比的痛苦,由于他的文档太完善了。java

ice安装与配置

由于我在winodws上面开发,开发完成后才放到linux上面去跑程序,因此开发与配置都是在winodws上面完成的,等到对ice了解的基本差很少了,会放到linux上面去。linux

在windows上面安装很简单,先去ice的官网下载一个windows安装版本就能够。apache

要注意的是最新版本ice 3.4.1支持的php版本是php5.3.1 下载地址 windows

在windows上面安装很简单,下一步就能够了,要记注你的安装目录,我把它安装到了C:/ZeroC 下面,这里假设你已经安装好了apache和php环境api

 

第一步,把ice的bin目录添加到环境变量架构

            若是设置个jdk的环境变量,那这个也是同样的,如我把这个添加到环境变量“C:/ZeroC/Ice-3.4.1/bin”,设置环境变量的文章google下会不少。工具

第二步,让php支持iceui

            修改php.ini文件,在文件中添加以下扩展 extension = php_ice.dllgoogle

            把ice下面bin目录下的php_ice.dll copy到了php ext目录

第三步,再php.ini文件中添加 ice对php支持的库

            ice对php支持的库文件在ice的安装目录下面的php文件夹中

            在php.ini的inclue_path中添加此目录便可如:include_path = ".;E:/php/xampp3/xampp/php/PEAR;C:/ZeroC/Ice-3.4.1/php"

至此,安装与配置已经完成

 

检验是否安装正确

 若是要检验是否安装正确,最好就是来一个“Hello world”

 所以ice最主要的目标就是让不一样语言写的程序互通,因此用java 和 php能过ice来互相调用是最好的证实了。

 1、写的个java程序,做为Server

       一、定义一个Printer.ice格式的文件,在文件中添加以下代码

          

  1. module Demo  
  2. {  
  3.   interface Printer  
  4.   {  
  5.    void printString(string s);  
  6.   };  
  7. };  

     二、运行slice2java命令:slice2java  Printer.ice

     三、你将形成一个Demo的文件夹,里面有不少的java文件

     四、新建一个PrinterI.java文件,添加以下代码

         

public class PrinterI extends Demo._PrinterDisp   
  1. {  
  2.   public void printString(String s, Ice.Current current)  
  3.   {  
  4.      System.out.println(s);  
  5.   }  
  6. }  

      五、新建一个Server.java文件,添加以下代码

         

public class Server {  
  1. public static void  
  2. main(String[] args)  
  3. {  
  4. int status = 0;  
  5. Ice.Communicator ic = null;  
  6. try {  
  7. ic = Ice.Util.initialize(args);  
  8. Ice.ObjectAdapter adapter  
  9. = ic.createObjectAdapterWithEndpoints(  
  10. "SimplePrinterAdapter""default -p 10000");  
  11. Ice.Object object = new PrinterI();  
  12. adapter.add(  
  13. object,  
  14. ic.stringToIdentity("SimplePrinter"));  
  15. adapter.activate();  
  16. ic.waitForShutdown();  
  17. catch (Ice.LocalException e) {  
  18. e.printStackTrace();  
  19. status = 1;  
  20. catch (Exception e) {  
  21. System.err.println(e.getMessage());  
  22. status = 1;  
  23. }  
  24. if (ic != null) {  
  25. // Clean up?  
  26. //?  
  27. try {  
  28. ic.destroy();  
  29. catch (Exception e) {  
  30. System.err.println(e.getMessage());  
  31. status = 1;  
  32. }  
  33. }  
  34. System.exit(status);  
  35. }  
  36. }  

 

      六、编译java代码,要注意的是要编译和运行都依赖与ice.jar这jar包,因此编译和运行的时候都要把它添加到classpath中去,

           编译很简单,我是这样弄的 javac  -classpath classes;C:/ZeroC/Ice-3.4.1/lib/Ice.jar; Server.java PrinterI.java       Demo/*.java

 2、php调用java方法

    一、运行命令:slice2php printer.ice  会生成Printer.php文件,

    二、新建一个client.php文件,添加以下代码

    

<?php  
  1. require 'Ice.php';  
  2. require 'Printer.php';  
  3. $ic = null;  
  4. try  
  5. {  
  6. $ic = Ice_initialize();  
  7. $base = $ic->stringToProxy("SimplePrinter:default -p 10000");  
  8. $printer = Demo_PrinterPrxHelper::checkedCast($base);  
  9. if(!$printer)  
  10. throw new RuntimeException("Invalid proxy");  
  11. $printer->printString("Hello World!");  
  12. }  
  13. catch(Exception $ex)  
  14. {  
  15. echo $ex;  
  16. }  
  17. if($ic)  
  18. {  
  19. // Clean up?  
  20. try  
  21. {  
  22. $ic->destroy();  
  23. }  
  24. catch(Exception $ex)  
  25. {  
  26. echo $ex;  
  27. }  
  28. }  
  29. ?>  
     

 

 3、运行

      一、首先运行java的Server文件,运行时必定要注意classpath问题

           java  -classpath classes;C:/ZeroC/Ice-3.4.1/lib/Ice.jar; Server

           这时你将不会看到任何输出

       二、访问php的client页面,你也看不到有任何输出,可是当你经过访问php的client的时候,你会看到 server的运行窗口输出

          “Hello World!”,这证实你的php已经成功的调用了java的方法。

相关文章
相关标签/搜索