一个关于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的方法

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写起嘛
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值