idea使用java整合ice

一.下载ice3.6

http://download.zeroc.com/Ice/3.6/Ice-3.6.4.msi

二.配置环境变量

ICE_HOME= D:\project\ZeroC\Ice-3.6.4

Path= %ICE_HOME%\bin;

cmd打开dos窗口查看是否安装成功: slice2java -v

三.idea创建ice文件

pom.xml

        <dependency>
            <groupId>com.zeroc</groupId>
            <artifactId>ice</artifactId>
            <version>3.6.3</version>
        </dependency>

先创建slice文件夹然后创建包路径最后创建Hello.ice

 如果不能创建ice文件可以先创建file文件以.ice结尾,idea会提示下载ice插件,然后重启就行了

Hello.ice:

[["java:package:com.test.ice.service"]] // 定义java包名  父结构
module demo    //模块包名
{
interface Hello   //接口服务名称
    {
        string sayHello(string s);   //具体的方法
    };
};

四.使用slice2java编译ice文件生成java代码

打开cmd窗口进入Hello.ice目录下执行:

slice2java .\Hello.ice --output-dir ..\src\main\java

执行成功之后会在java目录下生成10个java文件

 

五.编写程序 HelloI  Client  Server

public class HelloI extends _HelloDisp {
    private static final long serialVersionUID = -3966457693815687559L;
    private Logger log = Logger.getLogger(this.getClass().getSimpleName());


    public String sayHello(String s, Current __current) {
        log.info("具体的服务接口实现类中的sayHello方法被调用了。。。");
        return "Hello " + s;
    }
}
public class Client {
    private static Logger log = Logger.getLogger(Client.class.getSimpleName());

    public static void main(String[] args) {
        log.info("客户端启动...");
        // 通信器
        Communicator ic = null;
        // 初始化这个通信器
        ic = Util.initialize(args);
        // 根据地址生成一个服务代理对象
        // HelloIce -- 服务端那边自己定义的名字
        ObjectPrx proxy = ic.stringToProxy("HelloIce:default -p 1888");
        // 转换成HelloService类型的代理服务
        HelloPrx hello = HelloPrxHelper.checkedCast(proxy);
        //调用方法
        String s = hello.sayHello("World!");
        System.out.println(">>"+s);
    }

}
public class Server {
    private static Logger log = Logger.getLogger(Server.class.getSimpleName());

    public static void main(String[] args) {
        // 通信器
        Communicator ic = null;
        // 初始化这个通信器
        ic = Util.initialize(args);
        // 创建ice适配器,将服务调用地址和服务映射起来
        // "HelloServiceAdapter"是适配器名, "default -p 1888"是服务调用的地址
        ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("HelloServiceAdapter","default -p 1888");
        // 将服务的具体实现类servant交给这个适配器
        Object servant = new HelloI();
        // "HelloIce"--服务接口在ice中注册名,转成唯一标识identity
        Identity id = Util.stringToIdentity("HelloIce");
        adapter.add((Ice.Object) servant, id);
        // 激活这个适配器
        adapter.activate();

        log.info("server服务容器启动成功。。。");
    }
}

六.启动程序

先启动server

 再启动client

一个简单的java开发ice案例完成 

猜你喜欢

转载自www.cnblogs.com/chong-zuo3322/p/12802472.html
ice