Java-ICE入门教程(2-2:Java实例)
2015-04-17 10:40
465 查看
1.安装ICE
下载地址:https://zeroc.com/download.html
需要配置环境变量:
classPath添加:
%ICE_HOME%/lib/db.jar;%ICE_HOME%/lib/Ice.jar
path添加:%ICE_HOME%/bin;
cmd命令:slice2java 出现如下画面表示安装成功:
.
3.手写ICE文件,注意后缀名为 .ice:
message.ice,文件内容如下:
module message
{
interface messageDemo{//接口类
int maxNum(int a,int b);//接口方法,参数和返回值为int
};
};
4.生成JAVA文件:
cmd:slice2java message.ice
5.接下来要写接口实现类,需要继承这么一个类:_XXXXXXXXDisp:
package ice.message.impl;
import Ice.Current;
import message._messageDemoDisp;
public class MessageI extends _messageDemoDisp {
@Override
public int maxNum(int a, int b, Current __current) {
// TODO Auto-generated method stub
if(a>b)
return a;
else if(a<b)
return b;
else {
System.out.println("妹的,他俩居然一样大!!!");
return 0;
}
}
}
6.服务端代码:
package ice.message.server;
import ice.message.impl.MessageI;
import com.bean.PrinterI;
public class IceInit {
public static void init()
{
int status = 0;
Ice.Communicator ic = null;
try {
//初使化连接,args可以传一些初使化参数,如连接超时时间,初使化客户连接池的数量等
ic = Ice.Util.initialize();
//创建名为meaaageDemoAdapter的适配器,并要求适配器使用缺省的协议(TCP/IP侦听端口为10000的请求)
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("meaaageDemoAdapter", "default -h 10.0.67.106
-p 10000");
//实例化一个MessageI对象,为Message接口创建一个服务对象
Ice.Object object = new MessageI();
//将服务单元增加到适配器中,并给服务对象指定名称为meaaageDemo,该名称用于唯一确定一个服务单元
adapter.add(object, Ice.Util.stringToIdentity("meaaageDemo"));
//激活适配器,这样做的好处是可以等到所有资源就位后再触发
adapter.activate();
System.out.println("已启动 meaaageDemoAdapter default -h 10.0.67.106 -p 10000");
//让服务在退出之前,一直持续对请求的监听
ic.waitForShutdown();
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
if (ic != null) {
// Clean up
//
try {
ic.destroy();
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
}
System.exit(status);
}
}
7:客户端调用代码:
package ice.message.client;
import java.lang.reflect.Method;
public class IceClient {
public int maxNum(int a,int b)
{
int status = 0;
int resultNum = 0;
Ice.Communicator ic = null;
try {
//初使化
ic = Ice.Util.initialize();
//传入远程服务单元的名称、网络协议、IP及端口,获取Printer的远程代理,这里使用的stringToProxy方式
Ice.ObjectPrx objectPrx = ic.stringToProxy("meaaageDemo:default -h 10.0.67.106 -p 10000");
//通过checkedCast向下转换,获取Printer接口的远程,并同时检测根据传入的名称获取的服务单元是否Printer的代理接口,如 果不是则返回null对象
Method method
= objectPrx.getClass().getMethod("maxNum", new Class[] {Integer.class,Integer.class});
resultNum= (Integer) method.invoke(objectPrx, new
Object[] {a,b});
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
if (ic != null) {
// Clean up
//
try {
ic.destroy();
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
}
// System.exit(status);
return resultNum;
}
}
****************************蓝色字体也可以这么写*,但是还是建议第一种方法********************************
message.messageDemoPrx messageDemoPrx = message.messageDemoPrxHelper.checkedCast(base);
if (messageDemoPrx == null) throw new Error("Invalid proxy");
//把Hello World传给服务端,让服务端打印出来,因为这个方法最终会在服务端上执行
resultNum= messageDemoPrx.maxNum(a, b);;
8.测试代码来敲门:
1)先启动服务端:
public class MessageTest {
public static void main(String[] args) {
IceInit.init();
}
}
2)测试调用:
public class MessageClientTest {
public static void main(String[] args) {
IceClient iceClient=new IceClient();
int rer=iceClient.maxNum(14,14);
System.out.println("结果:"+rer);
}
}
***********************************************************************
本人才疏学浅:如未看懂:请移驾:
/article/2658235.html
http://masterkey.iteye.com/blog/182954
下载地址:https://zeroc.com/download.html
需要配置环境变量:
classPath添加:
%ICE_HOME%/lib/db.jar;%ICE_HOME%/lib/Ice.jar
path添加:%ICE_HOME%/bin;
cmd命令:slice2java 出现如下画面表示安装成功:
.
3.手写ICE文件,注意后缀名为 .ice:
message.ice,文件内容如下:
module message
{
interface messageDemo{//接口类
int maxNum(int a,int b);//接口方法,参数和返回值为int
};
};
4.生成JAVA文件:
cmd:slice2java message.ice
5.接下来要写接口实现类,需要继承这么一个类:_XXXXXXXXDisp:
package ice.message.impl;
import Ice.Current;
import message._messageDemoDisp;
public class MessageI extends _messageDemoDisp {
@Override
public int maxNum(int a, int b, Current __current) {
// TODO Auto-generated method stub
if(a>b)
return a;
else if(a<b)
return b;
else {
System.out.println("妹的,他俩居然一样大!!!");
return 0;
}
}
}
6.服务端代码:
package ice.message.server;
import ice.message.impl.MessageI;
import com.bean.PrinterI;
public class IceInit {
public static void init()
{
int status = 0;
Ice.Communicator ic = null;
try {
//初使化连接,args可以传一些初使化参数,如连接超时时间,初使化客户连接池的数量等
ic = Ice.Util.initialize();
//创建名为meaaageDemoAdapter的适配器,并要求适配器使用缺省的协议(TCP/IP侦听端口为10000的请求)
Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("meaaageDemoAdapter", "default -h 10.0.67.106
-p 10000");
//实例化一个MessageI对象,为Message接口创建一个服务对象
Ice.Object object = new MessageI();
//将服务单元增加到适配器中,并给服务对象指定名称为meaaageDemo,该名称用于唯一确定一个服务单元
adapter.add(object, Ice.Util.stringToIdentity("meaaageDemo"));
//激活适配器,这样做的好处是可以等到所有资源就位后再触发
adapter.activate();
System.out.println("已启动 meaaageDemoAdapter default -h 10.0.67.106 -p 10000");
//让服务在退出之前,一直持续对请求的监听
ic.waitForShutdown();
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
if (ic != null) {
// Clean up
//
try {
ic.destroy();
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
}
System.exit(status);
}
}
7:客户端调用代码:
package ice.message.client;
import java.lang.reflect.Method;
public class IceClient {
public int maxNum(int a,int b)
{
int status = 0;
int resultNum = 0;
Ice.Communicator ic = null;
try {
//初使化
ic = Ice.Util.initialize();
//传入远程服务单元的名称、网络协议、IP及端口,获取Printer的远程代理,这里使用的stringToProxy方式
Ice.ObjectPrx objectPrx = ic.stringToProxy("meaaageDemo:default -h 10.0.67.106 -p 10000");
//通过checkedCast向下转换,获取Printer接口的远程,并同时检测根据传入的名称获取的服务单元是否Printer的代理接口,如 果不是则返回null对象
Method method
= objectPrx.getClass().getMethod("maxNum", new Class[] {Integer.class,Integer.class});
resultNum= (Integer) method.invoke(objectPrx, new
Object[] {a,b});
} catch (Ice.LocalException e) {
e.printStackTrace();
status = 1;
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
if (ic != null) {
// Clean up
//
try {
ic.destroy();
} catch (Exception e) {
System.err.println(e.getMessage());
status = 1;
}
}
// System.exit(status);
return resultNum;
}
}
****************************蓝色字体也可以这么写*,但是还是建议第一种方法********************************
message.messageDemoPrx messageDemoPrx = message.messageDemoPrxHelper.checkedCast(base);
if (messageDemoPrx == null) throw new Error("Invalid proxy");
//把Hello World传给服务端,让服务端打印出来,因为这个方法最终会在服务端上执行
resultNum= messageDemoPrx.maxNum(a, b);;
8.测试代码来敲门:
1)先启动服务端:
public class MessageTest {
public static void main(String[] args) {
IceInit.init();
}
}
2)测试调用:
public class MessageClientTest {
public static void main(String[] args) {
IceClient iceClient=new IceClient();
int rer=iceClient.maxNum(14,14);
System.out.println("结果:"+rer);
}
}
***********************************************************************
本人才疏学浅:如未看懂:请移驾:
/article/2658235.html
http://masterkey.iteye.com/blog/182954
相关文章推荐
- 从零开始学习 webservice第一集,java webservice简单实例入门教程
- SpringMVC教程/实例(一):java SpringMVC之入门配置篇
- 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例
- ICE Java语言开发入门教程
- java入门教程-3.1Java类的定义及其实例化
- 【JAVA开发框架】Hibernate框架知识点详解入门教程与测试实例
- Java网络编程基础教程之Socket入门实例
- 微信开发从入门到精通教程大全 资料大全 java和php版本;教程文档、代码、视频 微信商城实例
- (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail
- Java-ICE入门教程(2-1:ICE基础知识)
- java入门教程
- Thrift入门及Java实例演示
- spring快速入门实例教程
- 4000 JMeter入门(4):Java Request实例
- Java中实现可拖放图片剪裁入门教程
- Android APP开发入门教程-Button 分类: JAVA 2015-01-15 14:25 360人阅读 评论(0) 收藏
- Thrift入门及Java实例演示<转载备用>
- Java 入门教程一[相关Java类]
- Thrift入门及Java实例演示
- Thrift入门及Java实例演示