一个关于ice中间件客户端调用服务器的小事例java语言
一个关于ice中间件客户端调用服务器的小例子java语言
前几天熟悉项目时,看到项目要用到ice因此就写了一个ice版本的helloworld程序看似简单但是还是耗费了不少的经历.
首先第一点要确认你的机器上面已经安装了ice 我安装的是ice3.4.2 建立一个名为slice的文件夹最好用集成开发环境比如myeclipse
设置好你的环境变量ICE_HOME 设置为你的ice的安装目录比如我的是C:\Program Files (x86)\ZeroC\Ice-3.4.2
刚才说到建立一个slice的文件夹里面建立一个Printer.ice的文件
这个Printer.ice文件里面定义了一个接口里面定义了一个add方法和一个printString的方法
然后进行对这个ice文件的编译我用的是java ice应用
首先进入你的电脑的slice文件的那个地方比如我的就是D:\Workspaces\hlw\TestIce\slice
然后打开命令行执行mkdir aaa 这句话的意思是建立一个名为aaa的文件夹 然后输入slice2java --output-dir aaa Printer.ice这样就会在aaa文件夹下出现很多java源文件
然后我们就可以正式进行客户端调用服务端的开发了
首先我们把刚刚ice自己生成的java文件用集成开发环境装入一个包中我用的是myeclipse
比如com.sjy
然后建立一个名为PrinterI.java的类当然名字可以随便取
这里注意_PrinterDisp这个类是ice自己生成的
然后是Server.java
然后是client端
运行的时候直接run as java application注意先起server在起client而且一定要等到server端完全起起来再起client端
好了至此一个简单的ice客户端调用服务器端的小例子已经做好了.
再复杂的技术也是要先从helloworld写起嘛
前几天熟悉项目时,看到项目要用到ice因此就写了一个ice版本的helloworld程序看似简单但是还是耗费了不少的经历.
首先第一点要确认你的机器上面已经安装了ice 我安装的是ice3.4.2 建立一个名为slice的文件夹最好用集成开发环境比如myeclipse
设置好你的环境变量ICE_HOME 设置为你的ice的安装目录比如我的是C:\Program Files (x86)\ZeroC\Ice-3.4.2
刚才说到建立一个slice的文件夹里面建立一个Printer.ice的文件
这个Printer.ice文件里面定义了一个接口里面定义了一个add方法和一个printString的方法
interface{ void printString(String s); void add(int a ,int b); }
然后进行对这个ice文件的编译我用的是java ice应用
首先进入你的电脑的slice文件的那个地方比如我的就是D:\Workspaces\hlw\TestIce\slice
然后打开命令行执行mkdir aaa 这句话的意思是建立一个名为aaa的文件夹 然后输入slice2java --output-dir aaa Printer.ice这样就会在aaa文件夹下出现很多java源文件
然后我们就可以正式进行客户端调用服务端的开发了
首先我们把刚刚ice自己生成的java文件用集成开发环境装入一个包中我用的是myeclipse
比如com.sjy
然后建立一个名为PrinterI.java的类当然名字可以随便取
import Ice.Current; import com.energyfuture._PrinterDisp; public class PrinterI extends _PrinterDisp { public void add(int a, int b, Current current) { System.out.println(a + b); } public void printString(String s, Current current) { System.out.println(s); } }
这里注意_PrinterDisp这个类是ice自己生成的
然后是Server.java
public class Server { public static void main(String[] args) { int status = 0; Ice.Communicator ic = null; try { ic = Ice.Util.initialize(args); Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("SimplePrinterAdapter","default -p 10000"); Ice.Object object = new PrinterI(); adapter.add(object, Ice.Util.stringToIdentity("SimplePrinter")); adapter.activate(); ic.waitForShutdown(); } catch (Ice.LocalException e) { e.printStackTrace(); status = 1; }catch (Exception e){ System.err.println(e.getMessage()); }finally{ if(ic != null){ ic.destroy(); } } System.exit(status); } }
然后是client端
public class Client { public static void main(String[] args) { int status = 0; Ice.Communicator ic = null; try { ic = Ice.Util.initialize(args); Ice.ObjectPrx base = ic.stringToProxy("SimplePrinter:default -p 10000"); PrinterPrx printer = PrinterPrxHelper.checkedCast(base); if(printer == null){ System.err.println("Ivalid proxy"); } printer.add(1, 2); printer.printString("Hello World"); } catch (Ice.LocalException e) { status = 1; e.printStackTrace(); }catch (Exception e) { status = 1; System.err.print(e.getMessage()); }finally{ if(ic != null){ ic.destroy(); } } System.exit(status); } }
运行的时候直接run as java application注意先起server在起client而且一定要等到server端完全起起来再起client端
好了至此一个简单的ice客户端调用服务器端的小例子已经做好了.
再复杂的技术也是要先从helloworld写起嘛