Zeroc Ice Slice语言使用 HelloWorld
Slice介绍
|
Range of Mapped Type |
Size of Mapped Type |
|
|
|
|
≥ 1bit |
|
|
-128-127 or 0-255 a |
≥ 8 bits |
|
|
-2 15 to 2 15 -1 |
≥ 16 bits |
|
|
-2 31 to 2 31 -1 |
≥ 32 bits |
|
|
-2 63 to 2 63 -1 |
≥ 64 bits |
|
|
IEEE single-precision |
≥ 32 bits |
|
|
IEEE double-precision |
≥ 64 bits |
|
|
All Unicode characters, excluding |
Variable-length |
其他类型
|
Range of Mapped Type |
Size of Mapped Type |
|
|
|
二进制数组 |
除了基本数据类型,还定义了复合数据类型:
第一个程序Hello World
|
1
2
3
4
5
6
7
|
[["java:package:com.my.demo"]]module demo{ //module demo模块名,module和Java的Package是对应的,当前默认package是demo //如果需要生成和Java对应的package的话,在module上面新增[["java:package:com.my.demo"]]即可,包名为com.my.demo.demo interface MyService{ string hello(); };}; |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package service;import com.my.demo.demo._MyServiceDisp;import Ice.Current;public class MyServiceImpl extends _MyServiceDisp { private static final long serialVersionUID = 7114601588161119171L; @Override public String hello(Current __current) { return "Hello Jerome"; //只是简单的返回 }} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package service;public class MyServiceStarter { public static void main(String[] args) { int status = 0; Ice.Communicator ic = null; try { // 初始化Communicator对象,args可以传一些初始化参数,如连接超时,初始化客户端连接池的数量等 ic = Ice.Util.initialize(args); // 创建名为MyServiceAdapter的ObjectAdapter,使用缺省的通信协议(TCP/IP端口为10001的请求) Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints("MyServiceAdapter", "default -p 10001"); // 实例化一个MyService服务对象(Servant) MyServiceImpl servant = new MyServiceImpl(); // 将Servant增加到ObjectAdapter中,并将Servant关联到ID为MyService的Ice Object adapter.add(servant, Ice.Util.stringToIdentity("MyService")); // 激活ObjectAdapter adapter.activate(); // 让服务在退出之前,一直持续对请求的监听 System.out.println("server is started ... "); ic.waitForShutdown(); } catch (Exception e) { e.printStackTrace(); status = 1; } finally { if (ic != null) { ic.destroy(); } } System.exit(status); }} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package client;import com.my.demo.demo.MyServicePrx;import com.my.demo.demo.MyServicePrxHelper;public class MyClient { public static void main(String[] args) { int status = 0; Ice.Communicator ic = null; try { // 初始化通信容器 ic = Ice.Util.initialize(args); // 传入远程服务单元的名称、网络协议、IP及端口,构造一个Proxy对象 Ice.ObjectPrx base = ic.stringToProxy("MyService:default -p 10001"); // 通过checkCast向下转型,获取MyService接口的远程,并同时检测根据传入的名称获取服务单元是否OnlineBook的代理接口 MyServicePrx prxy = MyServicePrxHelper.checkedCast(base); if (prxy == null) { throw new Error("Invalid proxy"); } // 调用服务方法 String rt = prxy.hello(); System.out.println(rt); } catch (Exception e) { e.printStackTrace(); status = 1; } finally { if (ic != null) { ic.destroy(); } } System.exit(status); }} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
#!/usr/bin/env python# **********************************************************************## Copyright (c) 2003-2013 ZeroC, Inc. All rights reserved.## This copy of Ice is licensed to you under the terms described in the# ICE_LICENSE file included in this distribution.## **********************************************************************import sys, traceback, IceIce.loadSlice("D:\\Java\\workspace\\workspace-temp\\test_ice\\slice\\myservice.ice")import demostatus = 0ice = Nonetry: ic = Ice.initialize(sys.argv) base = ic.stringToProxy("MyService:default -p 10001") printer = demo.MyServicePrx.checkedCast(base) if not printer: raise RuntimeError("Invalid proxy") result = printer.hello() print resultexcept: traceback.print_exc() status = 1if ic: # Clean up try: ic.destroy() except: traceback.print_exc() status = 1sys.exit(status) |
参考
资料
Zeroc Ice Slice语言使用 HelloWorld的更多相关文章
- ICE:slice语言常识整理
ICE:Slice语言(二)--源文件和词法规则: 文件命名 Slice的源文件以.ice为扩展名. 对于大小写不区分的系统(例如DOS),文件的扩展名可以大写,也可以小写,例如Cli ...
- ICE学习第三步-----Slice语言
ICE:Slice语言(一)-编译 Introduce简介 Slice(Specification language for ice)是分离对象和对象的实现的基础的抽象机制.Slice在客户端和服务器 ...
- ZeroC ICE的远程调用框架 Slice如何帮助我们进行Ice异步编程(AMI,AMD)
Slice最大的用处就是为我们使用Ice进行编程,代劳绝大部分的重复性代码,并提供一些帮助性的框架代码,如用于AMI和AMD方式进行异步编程的回调框架. 当Slice不为我们生成代码时,我们仍然可以按 ...
- ZeroC Ice 暂记
摘自: http://weibo.com/p/1001603869896789339575 原文地址: http://www.oschina.net/question/865233_242146 吴治 ...
- ZEROC ICE 跨平台间程序调用 java版
前言: 本来建博客是为了和大家分享一些前端的开发经验和心得呢,但是阴差阳错,第一篇技术博客确实关于跨平台,跨语言服务端调用的解决方案---ZEROC ICE. 最近一个项目涉及到java.python ...
- Zeroc Ice原理介绍
Ice介绍 Ice(Internet Communications Engine)是ZeroC公司的杰作,继承了CORBA的血统,是新一代的面向对象的分布式系统中间件.Ice是RPC通 ...
- Zeroc Ice开发环境搭建
搭建Ice环境 1. Linux(推荐,更接近真实生产环境) 2. Windows(方便学习开发) 下载安装包:https://zeroc.com/downloads (百度网盘链接:http ...
- Ubuntu16.04下ZeroC ICE的安装与使用示例(Qt C++ 和 Java)
项目需求:在Ubuntu16.04系统下安装并使用ICEgrid 3.7进行c++和Java Springboot开发环境的通信,下面逐一介绍各个步骤的详解: 一:Ice Lib的安装 参考官网地址: ...
- 用Python开发Zeroc Ice应用
Zeroc Ice简介 Zeroc ICE(Internet Communications Engine ,互联网通信引擎)是目前功能比较强大和完善的RPC框架,支持跨平台.跨语言调用.它非常灵活 ...
随机推荐
- Cloud TPU Demos(TensorFlow 云 TPU 样例代码)
Cloud TPU Demos 这是一个Python脚本的集合,适合在开源TensorFlow和 Cloud TPU 上运行. 如果您想对模型做出任何修改或改进,请提交一个 PR ! https:// ...
- sqlserver 判断字段是否为空字符串或者null
isnull(f.mzm,'')<>'' 不为null且不为‘’ not(f.mzm is null) 不为null
- 关于一些基础的Java问题的解答(三)
11. HashMap和ConcurrentHashMap的区别 从JDK1.2起,就有了HashMap,正如上一个问题所提到的,HashMap与HashTable不同,不是线程安全的,因此多线程 ...
- IOI2016Day2. paint
题目链接:http://uoj.ac/problem/238 题目大意: 有一个长度为n的黑白序列,告诉你所以k个极长连续黑段长度和顺序.有一些位置的颜色已知,需要判断剩下未知的位置哪些颜色 一定是白 ...
- jvm(四):垃圾回收
垃圾回收我们主要从以下三个方面进行描述 垃圾对象的判断 目前判断对象为垃圾对象有两种方法:引用计数法,可达性分析法,目前普遍是的是可达性分析法 可达性分析法的实现原理: 定义gcroot一直往下找,如 ...
- 安利三款提升幸福感的chrome插件
谷歌访问助手 chrome浏览器一直是各大码农推荐的比较好用的浏览器,速度快.插件多. 但是由于众所周知的原因导致了谷歌账号同步.扩展商店访问慢甚至打不开的情况. 谷歌访问助手就是用来解决此问题的. ...
- 利用Filter和拦截器,将用户信息动态传入Request方法
前言: 在开发当中,经常会验证用户登录状态和获取用户信息.如果每次都手动调用用户信息查询接口,会非常的繁琐,而且代码冗余.为了提高开发效率,因此就有了今天这篇文章. 思路: 用户请求我们的方法会携带一 ...
- Django REST Framework 最佳实践
Django REST framework 是一个强大且灵活的工具包,用以构建Web APIs. 为什么要使用REST framework? - 在线可视的API,对于赢得你的开发者们十分有用 - 验 ...
- Antlr v4入门教程和实例
1 重逢ANTLR 最早知道ANTLR是当年学习Apache Derby数据库源码时,在看到SQL解析那一层时,第一次看到编译原理在实际项目中的应用,惊叹之余也只能望而却步.之前也根据网上一些资料尝试 ...
- Launcher3 HotSeat显示名称
今天闲的无聊,研究了下launcher代码,看到Hotseat.java的时候,想起来以前有做过显示hotseat中应用名称,因为换了公司代码都没拿出来,就想在试着修改,看了很久发现无从下手,记得ho ...