知识大全 JAVA调用ICE接口实践

Posted

篇首语:读书是学习,摘抄是整理,写作是创造。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JAVA调用ICE接口实践相关的知识,希望对你有一定的参考价值。

JAVA调用ICE接口实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近刚开发了一个需求 使用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;

  

  

cha138/Article/program/Java/hx/201311/26695

相关参考