当前位置:编程学习 > JAVA >>

Zeroc Ice返回值类型对象的实现

引言:

    最近比较搓,忙得没空写写博客,回想一下又好像没忙什么事。得反省一下了,当然此是后话。

    本文就Zeroc Ice方法返回复杂类的对象(return by-value, not by-reff),做以简单说明。之所以有这篇文章,只因笔者发现网上流传的中文文章中有这么个空白,英文的也没个直接的说明。

    此文用BBCode编写。

内容:

    一、ICE方法返回对象的实现
    二、机制的简要说明
    三、一个Exception的解决
    四、资源信息

正文:

一、ICE方法返回对象的实现。

    1,模型设计。

 \

    如上图“class_diagram.JPG”所示,Bond(债券)为JavaBean,MainOperator(主操作者)有一个方法“Bond getBean(String beanUID)”返回一个JavaBean。

    2,具体实现。(各代码所在文件名,请参看首注释中的“file”注释)

    A)slice定义

Java代码 
/*
 * file:    BondDef.ice
 * by:      zhaoningbo
 * date:    2011-07-25 15:51
 */ 
#ifndef BEAN_BOND_DEF 
#define BEAN_BOND_DEF 
module com{ 
    module number{ 
        module bean{ 
             
            // 债券Bean 
            class Bond{ 
             
                // Files 
                string bName; 
                string bCode; 
                 
                // Methods 
                string getbName(); 
                void setbName(string bName); 
                 
                string getbCode(); 
                void setbCode(string bCode); 
                 
            }; 
         
        }; 
    }; 
}; 
#endif 


Java代码 
/*
 * file:    MainOperatorDef.ice
 * by:      zhaoningbo
 * date:    2011-07-25 16:02
 */ 
#ifndef OPERATOR_MAINOPERATOR_DEF 
#define OPERATOR_MAINOPERATOR_DEF 
module com{ 
    module number{ 
     
        // 预定义 
        module bean{ 
            class Bond; 
        }; 
     
        module operator{ 
         
            // 总执行者 
            interface MainOperator{ 
                // 获取Bond对象 
                idempotent com::number::bean::Bond getBean(string beanUID); 
            }; 
        }; 
    }; 
}; 
#endif 


    B)slice2java生成ice的java接口类集

    C)编写服务方

    (i)实现Bond。因为Bond是个抽象类,需要给定一个实现BondI。

Java代码 
/*
 * file:    BondI.java
 */ 
package com.number.bond; 
 
import java.io.Serializable; 
import Ice.Current; 
import com.number.bean.Bond; 
 
/**
 * 自定义债券Bean
 * 注:实现Bond时,直接实现Override即可,无需添加其他的类元素。
 * @author zhnb
 *
 */ 
public class BondI extends Bond implements Serializable { 
     
    private static final long serialVersionUID = 8758902536680272427L; 
     
    @Override 
    public String getbCode(Current current) { 
        return this.bCode; 
    } 
 
    @Override 
    public String getbName(Current current) { 
        return this.bName; 
    } 
 
    @Override 
    public void setbCode(String bCode, Current current) { 
        this.bCode = bCode; 
    } 
 
    @Override 
    public void setbName(String bName, Current current) { 
        this.bName = bName; 
    } 
 


    (ii)加个dao层数据提供者(仅图好看)

Java代码 
/*
 * file:    BondLCData.java
 */ 
package com.number.dao; 
 
import java.io.Serializable; 
import com.number.bond.BondI; 
 
/**
 * 数据提供类
 * @author zhnb
 *
 */ 
public class BondLCData implements Serializable { 
 
    private static final long serialVersionUID = -5413237344986060553L; 
 
    // 单值 
    public static BondI BONDLC_DATA_SINGLE = null; 
    static{ 
        BondI bondI= new BondI(); 
        bondI.setbCode("600006"); 
    

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,