你这个见解就不是很正确,比如,服务器端有很多类,但有些类本来就是服务器端和客户端公用的。举个例子,服务器端是用来访问database,你定义了一个DB.java的类,当然,这个类是关键的,对客户来说应该屏蔽,因此,这个类不应该导出到客户端;但是,又有一个叫DBRecord的类,是用来封装数据库的记录的,那么,这个类就应该可以导出到客户端,因为它不涉及到数据库访问的细节。举例:
public intreface DBInterface extends Remote{
  public DBRecord getRecord() throws RemoteException{
  }
}
如果客户端没有DBRecrord这个类,在调用这个方法的时候编译是无法通过的。一个解决办法是,你也可以定义一个common包,来把客户端和服务器端共享的类都放在这个包里头,这样就可以确保安全性。但是,由于包之间有访问控制权限,因此必须要合理的分配类的布局。那种认为服务器包里头的任何类都不为其他包,比如客户包共享的想法绝对是错误的。

解决方案 »

  1.   

    第一个是这样,一般RMI接口和类的实现是分在两个文件中完成的,因此你只需要将编译好的接口文件和客户端调用程序考给用户,而不用将a的类的实现和它们放在一起。对于第二个问题,这是java的设计者当时进行约定,必须带有这样的一个异常。确实没商量不知是否解释清楚了?
      

  2.   

    前一个问题知道了,后一个问题各位理解错了,我还不至于连必须带这个方法都不知道。
    我的意思是,实现接口时可以不抛出这个异常,编译是完全正常的,我的意思是假如不抛出这个异常,会有什么结果。比如rmic无法编译这个文件?或者客户无法访问,我问的是结果,不是它的必要性。
      

  3.   

    java有编译时异常检查和运行时异常检查,我也没有试过调用这些没有声明掷出RemoteException的方法,因而也不知道会有什么意想不到的后果。不过有一点是可以肯定的,缺乏异常处理的程序在设计上和安全上会存在问题。至于结果,回答只有一个,那就是实际的编程运行,看看是什么样子。