我主要使用http的80端口方式传输,其他方法,如ftp,classfileserver暂时没时间说了
 
1。 首先,保证你正在打开http服务,如果你是在用windows2000, 先到添加安装程序里添加
windows组件,安装IIS,然后点击资源管理器里的管理工具,点击service,保证IIS Admin Service已经打开了,
这是你就可以设定你的http服务了,点击资源管理器里的管理工具,点击Internet Service Manager,
右键单击默认http服务,点击属性,你会看到一些相关信息,比如端口号 80等,home directory那页,
保证read复选框被选定,最好把Directory Browsing也打开(调试方便)。
这些都做完了,你在C:\Inetpub\wwwroot里建一个目录download,把Product.class,ProductImpl_Stub.class
拷进去,这时你可以测试一下,http服务是否可以下载你的stub, 
你打开一个IE浏览器,输入http://localhost:80/download, (如果刚才你没改80,那么http://localhost/download这样也可以)
这时,如果刚才你打开了Directory Browsing,你就可以看到类似这样的东西
localhost - /download/--------------------------------------------------------------------------------[To Parent Directory] Saturday, September 14, 2002  9:08 PM          219 Product.class Saturday, September 14, 2002  9:09 PM         2876 ProductImpl_Stub.class-------------------------------------------------------------------------------- 
点击ProductImpl_Stub.class,会谈出一个对话框让你下载,http80这就搞定了!这表示你的web服务可以
让你写的rmi程序的客户端下载stub了。
 
 
2。 把服务端需要的类放到一个server目录里,这个目录不用放到wwwroot里,放到你任何的地方,比如d:\server,
以Core Java的第5章为例,你要放入这些文件:
Product.class
ProductServer.class
ProductImpl.class
ProductImpl_Stub.class
 
3。 随便找个地方建一个client目录,如d:\client,把客户端程序放进去
Product.class
ProdcutClient.class
client.policy
 
其中client.policy要保证允许客户端访问http服务,默认情况下,http用80断口,所以,你的client.policy一般可以这样写
grant 
{  permission java.net.SocketPermission 
      "*:1024-65535", "connect,accept";
   permission java.net.SocketPermission 
      "*:80", "connect,accept";
};4。 然后开一个dos窗口,键入set classpath=回车,这时你的CLASSPATH被清空,防止混乱
例如
C:\>set classpath=
 
C:\>set classpath
Environment variable classpath not defined
 
C:\>rmiregistry
 
5。 然后再server目录里启动服务端:
 
E:\Server>java -Djava.rmi.server.codebase=http://localhost/download/ ProductServerConstructing server implementations...
Binding server implementations to registry...
Waiting for invocations from clients...
 
6。 然后再client目录里启动客户端
 
E:\Client>java -Djava.security.policy=client.policy ProductClientI am a Blackwell Toaster. Buy me!
I am a ZapXpress Microwave Oven. Buy me!结束

解决方案 »

  1.   

    to :DanielYWoo(绿色毒汁) 
    朋友,难道你没发现,你给的例子中文件名 错了很多吗?
    呵呵,帮帮忙吧,按照我给的路径给我个可行的方案,
    如果成功,我再加100分.呵呵.
      

  2.   

    我是用的Core Java Chapter5 的 Product 例子,你用的是Warehouse例子,
    这段解释是我很久以前写给别人的,至于Warehouse实在是没时间写了,最近比较忙,真的是很抱歉。
      

  3.   

    Java Turorial李的例子也不错
      

  4.   

    好像是server端找不到 WarehouseImpl_Stub 文件,你把codebase指向它的目录位置试试!
      

  5.   

    错误信息是在我输入一下命令时出的。这样指定难道还不行吗?
    C:\warehouse>java WarehouseServer -Djava.rmi.server.codebase=file:c:\Warehouse\
    -Djava.security.policy=WarehouseClient.properties
      

  6.   

    强烈建议用http协议,不用file,放在http目录内很方便,省事,百利无一害..
    java.rmi.server.codebase=一定要写对,是包的路径上一级,一般放在http比如的classes目录内(随你便.)务必别忘了/这个符号结束,如果需要客户端动态传给服务端执行代码,那么建议客户端也放在客户机的http目录内,道理一样,让后也写正确的java.rmi.server.codebase=,有的文档上说这个参数的意思说的很模糊,呵呵,不过俺经过了一个月的折磨,领悟了..你那个例子用不着声明客户端codebase.呵呵,在加上正确的policy,绝对ok..