remote object implements illegal remote interface

来源:互联网 发布:java 锁 synchronized 编辑:程序博客网 时间:2024/04/29 16:04

      最近在学习EJb,用EJB写一个使用远程对象完成计算时抛出的异常remote object implements illegal remote interface

      程序如下:

/***********接口*****************/

public interface calc extends Remote {

 
 public int calc(int a,int b); 
}

 

/***********实现类*****************/

public class calcImpl extends UnicastRemoteObject implements calc {
 public calcImpl() throws RemoteException {
  super();
 }
 public int calc(int a, int b) {
  if(a>b){
        return a-b;   
  }else if(a==b){
   return a*b;
  }else{
  return a+b;
  }
 }
}

/****************测试类*****************/

 public static void main(String[] args) {
            try {
    Registry re=LocateRegistry.createRegistry(2000);
    calcImpl calc=new calcImpl();
    re.bind("calc", calc);
    System.out.println("服务器已经启动了");
   } catch (Exception e) {
    e.printStackTrace();
   }
 }

然后就是将接口导出,放到另一个工程里测试,测试工程的代码如下:

public static void main(String[] args) {
  String url="rmi://localhost:2000/calc";
  try {
   calc c=(calc) Naming.lookup(url);
   int result=c.calc(10, 5);
   System.out.println("计算的结果是:"+result);
  } catch (Exception e) {
   e.printStackTrace();
     }
 
 }

很简单的一个问题,当我启动服务器的时候,程序报了一个异常:


我到网上查了一下,很多都是英文的,有中文的也没有说一个所以然来,所以只好自己去出问题,我把抛出的异常仔细看了一下子,原来原来异常信息告诉我,自己定义的接口里面的方法有问题,我仔细看了一下方法,方法好像少了点什么,原来使用远程方法调用都必须抛出一个RemoteException,因为 网络出现类似机器故障或者网络阻塞等问题时会产生RemoteException。在接口定义的方法里throws RemoteException,问题就解决了。

原创粉丝点击