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

这一生的挚爱 提交于 2019-12-02 04:52:09

什么是ice

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

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

ice安装与配置

因为我在winodws上面开发,开发完成后才放到linux上面去跑程序,所以开发与配置都是在winodws上面完成的,等到对ice了解的基本差不多了,会放到linux上面去。

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

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

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

 

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

            如果设置个jdk的环境变量,那这个也是一样的,如我把这个添加到环境变量“C:/ZeroC/Ice-3.4.1/bin”,设置环境变量的文章google下会很多。

第二步,让php支持ice

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

            把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来互相调用是最好的证明了。

 一、写的个java程序,作为Server

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

          

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

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

     3、你将造成一个Demo的文件夹,里面有很多的java文件

     4、新建一个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. }  

      5、新建一个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. }  

 

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

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

 二、php调用java方法

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

    2、新建一个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. ?>  
     

 

 三、运行

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

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

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

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!