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的方法。

相關文章
相關標籤/搜索