要!而且客户端要指定codebase(即stub的位置,可用http或ftp)

解决方案 »

  1.   

    有没有搞错?stub是给服务器的,客户机通过http port80或其他途径从网络上下载stub到本地,你搞反了
      

  2.   

    look this
    http://www.csdn.net/expert/topic/1056/1056604.xml?temp=.8046533
      

  3.   

    stub是给客户机的,而skeleton是给服务器的,
    我没有用到80port,就实现了客户机和服务器的异步通讯.你说的这种情况和java tutorial中的好像一样,我正在看.
    谢谢你们!
      

  4.   

    我想,我应该说得更清楚一些skeleton是旧的东西,如果你是用rmic -v1.2 就只生成stub,只有在JDK1.1上才使用skeleton.你现在应该不会在用JDK1.1。所以不用管skeleton。
    客户机用stub进行调度和反调度,你当然可以把stub放在客户机上,但是习惯上stub并不放在客户机上,而是通过port80或其他方法临时下载到客户机上,这是因为,一旦你的服务器代码被修改或扩展,返回类型和异常的类不断增加,那样更新客户机代码将是很痛苦的事情(如果你的网络有2300个客户,想想看吧)。所以RMI可以自动装入别的地方的stub,为此你还要使用SecurityManager,防止恶意访问。
      

  5.   

    谢谢你详细的解释,我前几天看到你所说的rmi的使用方法了.
    我按照资料所说的,将生成的stub放在web目录下,并且让java无法从搜索路径下找到他们.运行服务器的时候使用了codebase 和policy两个参数.但是奇怪的是为什么系统仍然需要是使用stub,这与我看到的资料不同.资料上说如果classpath中包含stub,则不能把stub下载到客户机上.
    我用的是jdk1.3,但是rmic 仍然生成skeleton
    可以告诉我你的qq么?谢谢!
      

  6.   

    我做了个试验发现,classpath中必须添加web路径,也就是说必须让java能够找到stub文件,否则会报告错误.不知道你有没有遇到相同的情况!
      

  7.   

    我不信rmic -v1.2还会生成skeleton,我用过JDK1.3 1.3.1 1.4都没问题