`

Ice helloworld

阅读更多
Hello.ice
#ifndef SIMPLE_ICE
#define SIMPLE_ICE
//名字空间 or 包名
module demo.slice.Hello
{
  interface Hello{
      void printString(string s);
  };
};
#endif

  服务器:
  
HelloI.java
package demo.ice.Hello.server;
import demo.slice.Hello._HelloDisp;
import Ice.Current;
/**
* @author MudfishCN
*
* servant class: HelloI
* _HelloDisp 基类由slice2java编译器生成,它是一个抽象类。
* _HelloDisp 抽象类包含一个printString()方法。
*/
  public class HelloI extends _HelloDisp {
   /* (non-Javadoc)
   * @see demo._HelloOperations#printString(java.lang.String, Ice.Current)
   */
   public void printString(String s, Current __current) {
   // TODO Auto-generated method stub
   System.out.println(s);
   }
  }

  HelloServer.java
  
package demo.ice.Hello.server;
  import Ice.LocalException;
  /**
  * @author MudfishCN
  * version: 1.0.1 
  */
  public class HelloServer {
   public static void main(String[] args) {
   // 定义status变量,用来控制服务器.
   int status = 0;
   Ice.Communicator ic = null; //声明一个Communicator 对象ic
   try {
   // 初始化Ice运行时
   ic = Ice.Util.initialize(args);
   /*
   * 创建一个对象适配器(ObjectAdapter)对象IOAdapter,并初始化之。
   * 参数"HelloWorldAdapter":表示适配器的名字。
   * 参数"default -p 10000":表示适配器使用缺省协议(TCP/IP)在端口10000处监听到来的请求。
   * 服务器配置完成.
   */
   Ice.ObjectAdapter IOAdapter = ic.createObjectAdapterWithEndpoints(
   "HelloWorldAdapter", "default -p 10000");
   /*
   * 为Hello接口创建一个servant.
   */
   Ice.Object IObject = (Ice.Object) new HelloI();
   
   /*
   * 将新的servant添加到适配器,
   * 并将这个新的servant命名为"HelloWorld"
   */
   IOAdapter.add(IObject, Ice.Util.stringToIdentity("HelloWorld"));
   
   /*
   * 激活适配器,以使服务器开始处理来自客户的请求
   */ 
   IOAdapter.activate();
   /*
   * 挂起发出调用的线程,直到服务器实现终止为止.
   * 或者是通过发出一个调用关闭运行时(run time)的指令来使服务器终止.
   */
   ic.waitForShutdown();
   } catch (LocalException e) {
   // 捕捉ICE运行时可能抛出的所有异常
   e.printStackTrace();
   status = 1;
   } catch (Exception e) {
   // 捕捉串常量
   e.printStackTrace();
   status = 1;
   } finally {
   if (ic != null) {
   ic.destroy();
   }
   }
   System.exit(status);
   }
  }

  HelloClient.java
  
package demo.ice.Hello.client;
  import Ice.ObjectPrx;
  import Ice.Util;
  import demo.slice.Hello.HelloPrx;
  import demo.slice.Hello.HelloPrxHelper;
  /**
  * @author MudfishCN 
  */
  public class HelloClient {
   public static void main(String[] args) {
   int status = 0;
   String s;
   //创建一个通信器的对象ic
   Ice.Communicator ic = null;
   try {
   // 初始化ICE运行时
   ic = Util.initialize(args);
   
   /*
   * 获取远程对象的代理
   * 创建一个代理对象,并用通信器的stringToProxy()方法初始化之。
   * 参数:"HelloWorld:default -p 10000"
   * 表示:
   */
   ObjectPrx base = ic.stringToProxy("HelloWorld:default -p 10000");
   /*
   * 关键点
   */
   HelloPrx hello = HelloPrxHelper.checkedCast(base);
   //测试向下转换是否成功。如果不成功抛出异常信息"Invalid proxy".
   if (hello == null) {
   throw new Error("Invalid proxy");
   }
   //向服务器发送十条消息
   for(int i=1;i<=10;i++){
   s = "Hello,world!"+Integer.toString(i);
   hello.printString(s);
   } 
   } catch (Ice.LocalException e) {
   e.printStackTrace();
   status = 1;
   } catch (Exception e) {
   e.printStackTrace();
   status = 1;
   } finally {
   if (ic != null) {
   //销毁通信连接
   ic.destroy();
   }
   }
   System.exit(status);
   }
  }
分享到:
评论

相关推荐

    ice hello world

    一个简单的ice hello world,对于刚刚入手的ice的人有帮助,运行起来,了解其中的原理

    HelloWorld_ICE分布式应用开发入门

    ICE文档作者写的关于实例程序的开发过程。很基础,不是很深,建议刚入门的同志可以看看,学学怎么使用ICE编程。

    java实现ice例子

    Ice 是一种面向对象的中间件平台。从根本上说,这意味着Ice 为构建面 向对象的客户-服务器应用提供了工具、API 和库支持。Ice 应用适合在异 种环境中使用:客户和服务器可以... 本例子是用java写的ice实现的HelloWorld

    zero ICE快速入门java版

    public abstract class _HelloWorldDisp extends Ice.ObjectImpl implements HelloWorld{} servant类是ice所定义的接口,在服务器端的实现类。我们在该类中可以编写服务器端对请求的具体处理。 代码如下: package ...

    Test_ice.rar

    这是用java开发的ice的helloworld

    Ice 分布式程序设计

    第 3 章 Hello World 应用 第 4 章 Slice 语言 第 5 章 一个简单文件系统的 Slice 定义 第 6 章 客户端的 Slice-to-C++ 映射 第 7 章开发 C++ 文件系统客户 第 8 章 客户端的 Slice-to-Java 映射 第 9 章开发 Java ...

    ICE分布式程序设计中文版

    第 3 章 Hello World 应用 33 3.1 本章综 33 3.2 编写 Slice 定义 33 3.3 编写使用 C++ 的 Ice应用 34 3.4 编写使用 Java的 Ice 应用 41 3.5 总结 48 第 Ice 核心概念 51 第 4 章 Slice 语言 53 4.1 本章综 53 4.2 ...

    ICE 学报 第一期

    Hello World—Really! .............................................7 Output to Unix Syslog .........................................8 Sending Email .................................................8...

    天线扫描仿真matlab代码-HelloWorld:演示版

    天线扫描仿真matlab代码图案标签AMS设计模拟和数字电路tanner模拟设计模拟布局角JS角JS框架角天线设计ARM验证ASIC设计器ASIC建模ASIC解决方案架构...Calibration嵌入式系统软件和驱动程序Linux上的Arium和ICE Audio AP

    i18n从字面上看::soft_ice_cream:将国际化引入JS的简单方法

    从字面上看 一种将国际化引入JS的简单方法。 安装 $ npm install i18n-literally 用法 ...i18n `Hello ${ 'World' } !` // =&gt; Hello World! // 2. Add/update your translations for a language "$

    PHP调用.NET的WebService 简单实例

    public string HelloWorld() {  return “Hello World”; } ok,一切就绪。在某php文件中如下写法: php5本身就支持SOAP调用Web Service: &lt;?php //get localization strings from C# webs

    常常会用到的截取字符串substr()、substring()、slice()方法详解

    var str ="helloWorld"; // 一个参数,则将字符串长度作为结束位置 alert&#40;str.slice(3&#41;); // "loWorld" // 两个参数,7位置上的字符为"r",但不包括结束位置的字符 alert&#40;str.slice(3,7&#41;); // "loWo...

    SwiftCLI:在Swift中开发CLI的强大框架

    Hello world ! 使用SwiftCLI,您将自动获得: 命令路由 选项解析 帮助信息 使用说明 错误使用命令时的错误消息 Zsh完成 目录 安装 &gt; ice add jakeheis/SwiftCLI 迅捷软件包管理器 将SwiftCLI添加为项目的依赖项: ...

    jsx-runtime:JSX运行时

    jsx运行时 ... return &lt; h1&gt; Hello World &lt; / h1 &gt; ; } 示例gulpfile.js 安装gulp 4,browserify,babelify和好友: npm i gulp@4 browserify babelify @babel/core @babel/preset-env @babel/pl

    appc-liveviewer-app:一个可从任何URL,GitHub存储库和摘要中加载和运行Titanium和Alloy代码的应用程序

    我们可以在我们的主要网站上添加一个页面,人们可以在其中下载该应用程序并扫描唯一的QR码以运行和编辑hello world示例。服务器GitHub存储库中的项目和需要在云端用Alloy编译的源将通过实例下载源。 目前,该应用...

    C#使用HttpPost请求调用WebService的方法

    之前调用 WebService 都是直接添加服务引用,然后调用 WebService 方法的,最近发现还可以使用 Http 请求调用 ... public string HelloWorld() { return Hello World; } [WebMethod] public string Sum(str

    排除JQuery通过HttpGet调用WebService返回Json时“parserror”错误

    如今问题被顺利解决,下面是解决过程 首先看客户端使用JQuery调用WebService的代码: 代码如下: getHellobyAjax: function(callabckFun) { $.ajax({ type: “GET”, url: “WebService.asmx/HelloWorld”, //...

    go-micro examples 中web & form 代码学习(web类 网站的微服务架构:micro api + micro web + web service + api service)

    以下对应 example/web 例子: main.go 代码如下: package main import ( fmt log net/http github.com/micro/go-micro/web ) func helloWorldHandler... fmt.Fprint(w, ` ... web.Name(helloworld), ) service.Ha

Global site tag (gtag.js) - Google Analytics