您现在的位置是:首页 >

如何通过接口调用实现方法 JAVA调用ICE接口实践

火烧 2021-08-02 12:58:14 1051
JAVA调用ICE接口实践   最近刚开发了一个需求 使用ICE调用服务器端的接口 过程如下    首先是准备环境 通过下载得到安装包 这次我用的是 版本(目前最新是 )   接着使用 i 目录下 l

JAVA调用ICE接口实践  

如何通过接口调用实现方法 JAVA调用ICE接口实践

  最近刚开发了一个需求 使用ICE调用服务器端的接口 过程如下

   首先是准备环境 通过下载得到安装包 这次我用的是 版本(目前最新是 )

   接着使用bin目录下slice java将得到的ice文件转化为Java类 命令为slice java    **** ice

   将lib目录下Ice jar引入Java工程内 开始编写客户端代码

  Java代码

  public abstract class AbstractIceAgent {

  protected Logger         logger           = LoggerFactory getLogger(AbstractIceAgent class getName());

  private static final int DEFAULT_TIME_OUT = ;

  String                   identId;

  public AbstractIceAgent(){

  }

  public AbstractIceAgent(String identId){

  this identId = identId;

  }

  public String getIdentId() {

  return identId;

  }

  public void setIdentId(String identId) {

  this identId = identId;

  }

  public Object executeProxy(Object bean) {

  Communicator municator = Ice Util initialize();

  Object returnValue = null;

  try {

  ObjectPrx objPrx = municator stringToProxy(identId);

  objPrx ice_timeout(DEFAULT_TIME_OUT);

  returnValue = methodAction(objPrx bean);

  } catch (Exception e) {

  logger error( execute proxy cause error: + e);

  throw new RuntimeException(e);

  } finally {

  if (municator != null) {

  try {

  municator destroy();

  municator = null;

  } catch (Exception e) {

  // do nothing

  }

  }

  }

  return returnValue;

  }

  /**

  * ice接口方法的定义

  *

  * @param base

  */

  abstract Object methodAction(ObjectPrx base Object bean);

  }

  这是一个虚基类 子类只需覆蓋methodAction即可

  Java代码

  package alibaba china brmms remind;

  public interface AIMFriendBO {

  int[] isFriend(String memberId String[] friendIds);

  }

  这是本次需要实现的接口

  Java代码

  public class AIMFriendAgent extends AbstractIceAgent implements AIMFriendBO {

  // private static final String ICE_INTERFACE = ADPushAgentId:default h p ;

  // private static BrmmsRemindAgent brmmsIceAgent = new BrmmsRemindAgent(ICE_INTERFACE);

  protected Logger logger = LoggerFactory getLogger(AIMFriendAgent class getName());

  private String              strCaller;

  private String              strServiceType;

  public void setStrCaller(String strCaller) {

  this strCaller = strCaller;

  }

  public void setStrServiceType(String strServiceType) {

  this strServiceType = strServiceType;

  }

  public AIMFriendAgent(){

  };

  public AIMFriendAgent(String identId){

  super(identId);

  }

  @Override

  Object methodAction(ObjectPrx base Object bean) {

  WWContactInterfacePrx ctWebInterfacePrx = WWContactInterfacePrxHelper checkedCast(base);

  AliIMContact contact = (AliIMContact) bean;

  IntSeqHolder isFriendSeq=new IntSeqHolder();

  StringHolder retMsgHolder=new StringHolder();

  int result  = ctWebInterfacePrx IsFriend(strCaller strServiceType contact getMemberId() contact getContactIds() isFriendSeq retMsgHolder);

  // means ok normally

  if(result== ){

  return isFriendSeq value;

  }else{

  logger error( check contact error in AIMFriendAgent cause : + retMsgHolder value);

  return null;

  }

  }

  public int[] isFriend(String memberId String[] friendIds) {

  if (memberId == null||friendIds==null) {

  throw new RuntimeException( ice contact relation check parameters are empty );

  }

  int[] returnValue=(int[]) this executeProxy(new AliIMContact(memberId friendIds));

  return returnValue;

  }

  }

lishixinzhi/Article/program/Java/hx/201311/26695  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码