会RMI的帮帮我,到我提供的连接里去领分(分不多,还请各路好汉都来瞧瞧)

qazxsw1982103 2005-06-27 08:13:20
能回答这个问题的 请到http://community.csdn.net/Expert/topic/4107/4107941.xml?temp=8.457583E-02这个连接里去拿分


rmi的java.rmi.server.codebase问题


我在本机上写了个RMI程序,运行成功。现在我想在本机上模拟实际的分布式环境(即:让客户端程序从服务器端指定的java.rmi.server.codebase路径上下载代码存根,而不是通过CLASSPATH来查找代码存根)


我是这样做的(我的服务端程序是rmiServerApp.RmiServer.java ,
          远程对象类为rmiServerApp.RemoteObject.java
             远程接口类为rmiServerApp.RemoteInterface.java
                我以下提供的信息足以让各位帮我解决问题,
                   贴代码只会增加复杂性):

1。 启动TOMCAT服务器,我的TOMCAT占据的是80端口

2。 编译我写的所有类

3。 在命令行下rmic rmiServerApp.RmiServer 这时rmiServerApp目录下会出现代码存根和Skel

4. 在TOMCAT的根目录下(即http://127.0.0.1/ 所访问的目录)创建文件夹rmiServerApp,然后将  代码存根剪切到该rmiServerApp目录中,我保证CLASSPATH下没有TOMCAT的根目录路径.

5.在e:/下创建名为policy.txt的安全管理器配置文件,内容如下:
            
       grant {

        permission java.security.AllPermission;
          };

6.在命令行下输入以下命令以运行RmiServer

java -Djava.security.policy=file:e:/policy.txt
-Djava.rmi.server.codebase=http://127.0.0.1/ rmiServerApp.RmiServer


结果运行出错,异常内容如下:

Exception in thread "main" java.rmi.StubNotFoundException: Stub class not found:
rmiServerApp.RemoteObject_Stub; nested exception is:
java.lang.ClassNotFoundException: rmiServerApp.RemoteObject_Stub
at sun.rmi.server.RemoteProxy.getStub(RemoteProxy.java:98)
at sun.rmi.server.RemoteProxy.getStub(RemoteProxy.java:55)
at sun.rmi.server.UnicastServerRef.setSkeleton(UnicastServerRef.java:179
)
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:14
2)
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:12
9)
at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.
java:275)
at java.rmi.server.UnicastRemoteObject.exportObject(UnicastRemoteObject.
java:178)
at java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:7
5)
at java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:6
1)
at rmiServerApp.RemoteObject.<init>(RemoteObject.java:29)
at rmiServerApp.RmiServer.main(RmiServer.java:31)
Caused by: java.lang.ClassNotFoundException: rmiServerApp.RemoteObject_Stub
at java.net.URLClassLoader$1.run(URLClassLoader.java:198)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:265)
at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
at sun.rmi.server.RemoteProxy.loadClassFromClass(RemoteProxy.java:191)
at sun.rmi.server.RemoteProxy.getStub(RemoteProxy.java:93)
... 10 more


难道java.rmi.server.codebase只能指定客户端的下载地址而不能动态的扩展服务器端的CLASSPATH吗????????????????
...全文
45 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
off_line 2005-07-05
  • 打赏
  • 举报
回复
classpath怎么动态?不懂。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧