RMI程序是否只能运行在服务器

vage 2005-08-20 10:38:42
RMI程序是否只能运行在服务器,请老手指点一下。
...全文
122 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuweifanhao 2005-08-26
  • 打赏
  • 举报
回复
用rimic编译后,产生stub和skel类,客户端只要有stub类和对应接口类就可以了,server端要有stub,skel和接口实现类。服务端要启动rmiregistry,不要关闭这个进程,然后客户端就可以调用了
vage 2005-08-25
  • 打赏
  • 举报
回复
to sunshineforsun(一米阳光)

放心,如果我整出来了,一定把代码和如何设置给你。我查了查网上的资料,好像是要让rmiregistry能够找到stub,skeleton,如何设置还不清楚。也希望高手指点一下。
vage 2005-08-25
  • 打赏
  • 举报
回复
rmiregistry -Jjava.rmi.codebase=某个url
我前天看错了,这个不是哪个安全文件,但这个URL要怎样设置.我是这样设的:
rmiregistry -Jjava.rmi.codebase=g:/hello/hello
因为我的桩类在g:/hello/hello里面。
报告如下错误:
Error loading class java/rmi/codebase=g:/hello/hello: Bad major version number

我分别这样试了试:
rmiregistry -Jjava.rmi.codebase=g:/hello
rmiregistry -Jjava.rmi.codebase=g:/hello/
rmiregistry -Jjava.rmi.codebase=g:/hello/hello/
rmiregistry -Jjava.rmi.codebase=file://g:/hello
rmiregistry -Jjava.rmi.codebase=file://g:/hello/hello
rmiregistry -Jjava.rmi.codebase=file://g:/hello/
rmiregistry -Jjava.rmi.codebase=file://g:/hello/hello/
都不行,报一样的错误。
vage 2005-08-25
  • 打赏
  • 举报
回复
我放了,我的源程序在g:\hello\hello下,执行rmic时我的当前位置是g:\hello,我把桩类放在g:\hello里和g:\hello\hello里各一份,还有那个安全文件也是。
sunshineforsun 2005-08-25
  • 打赏
  • 举报
回复
to vage(秋叶纷纷)
你会了把代码发给我啊,这个问题困扰我好长时间了
kingfish 2005-08-24
  • 打赏
  • 举报
回复
如果找不到相关类文件, 最好把文件放在运行的相关目录中, 而不是每个都去配置classpath
vage 2005-08-24
  • 打赏
  • 举报
回复
to sunshineforsun(一米阳光)

同病相怜啊,如果你解快了,千万要再帮帮我啊
sunshineforsun 2005-08-24
  • 打赏
  • 举报
回复
java.rmi.StubNotFoundException: Stub class not found: testrmi.RemoteObject_Stub; nested exception is:
java.lang.ClassNotFoundException: testrmi.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:142)
at sun.rmi.server.UnicastServerRef.exportObject(UnicastServerRef.java:129)
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:75)
at java.rmi.server.UnicastRemoteObject.<init>(UnicastRemoteObject.java:61)
at testrmi.RemoteObject.<init>(RemoteObject.java:14)
at testrmi.RemoteObject.main(RemoteObject.java:30)
Caused by: java.lang.ClassNotFoundException: testrmi.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
我也出现这样的问题,急待高手解决啊
vage 2005-08-22
  • 打赏
  • 举报
回复
是不是hello.HelloImpl_Stub类找不到,可我的类明明有啊,我用java执行时,也已经把它的相关位置设进了-classpath中了。
vage 2005-08-22
  • 打赏
  • 举报
回复
去掉后报下面的异常:
HelloImpl.main: an exception occured:
java.rmi.ServerException: Server RemoteException; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested excep
tion is:
java.lang.ClassNotFoundException: hello.HelloImpl_Stub
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Stream
RemoteCall.java:247)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:
223)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:350)
at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
at java.rmi.Naming.rebind(Naming.java:160)
at hello.HelloImpl.main(HelloImpl.java:27)
Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested ex
ception is:
java.lang.ClassNotFoundException: hello.HelloImpl_Stub
Caused by: java.lang.ClassNotFoundException: hello.HelloImpl_Stub

这是怎么回事啊?
kingfish 2005-08-22
  • 打赏
  • 举报
回复
System.setSecurityManager(new RMISecurityManager());这句去掉,否则要建策略文件
vage 2005-08-22
  • 打赏
  • 举报
回复
我编写了一个简单的RMI程序,报如下错误:
java.security.AccessControlException: access denied (java.net.SocketPermission 1
27.0.0.1:1099 connect,resolve)
at java.security.AccessControlContext.checkPermission(AccessControlConte
xt.java:270)
at java.security.AccessController.checkPermission(AccessController.java:
401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:542)
at java.lang.SecurityManager.checkConnect(SecurityManager.java:1044)
at java.net.Socket.connect(Socket.java:428)
at java.net.Socket.connect(Socket.java:384)
at java.net.Socket.<init>(Socket.java:291)
at java.net.Socket.<init>(Socket.java:119)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirect
SocketFactory.java:22)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMaster
SocketFactory.java:128)
等等......

程序摘自Java编程思想,如下:
import java.rmi.*;
import java.rmi.server.*;
import java.rmi.registry.*;
import java.net.*;

interface PerfectTimeI extends Remote
{
long getPerfectTime() throws RemoteException;
} ///:~


public class PerfectTime implements PerfectTimeI
{
// Implementation of the interface:
public long getPerfectTime() throws RemoteException
{
return System.currentTimeMillis();
}

public PerfectTime() throws RemoteException
{
// super(); // Called automatically
}
// Registration for RMI serving:
public static void main(String[] args)
{
System.setSecurityManager(new RMISecurityManager());
try
{
LocateRegistry.createRegistry(2006);
PerfectTime pt = new PerfectTime();
Naming.bind("////jjbobo:1099//PerfectTime", pt); //jjbobo是我的主机名
System.out.println("Ready to do time");
}
catch(Exception e)
{
System.out.println("ERROR");
e.printStackTrace();
}
}
} ///:~

我的机器系统是win2000
vage 2005-08-22
  • 打赏
  • 举报
回复
哦,我查了一下,rmiregistry -Jjava.rmi.codebase=安全管理配置文件.
我运行服务端时,是这样的:java -Djava.security.policy=my.policy hello.HelloImpl
不行啊
vage 2005-08-22
  • 打赏
  • 举报
回复
这个“某个URL”,到底应该怎样设置啊
是本机的IP,还是其他什么啊
treeroot 2005-08-22
  • 打赏
  • 举报
回复
rmiregistry -Jjava.rmi.codebase=某个url
kingfish 2005-08-21
  • 打赏
  • 举报
回复
RMI client端从RMI server端获得stub对象...

不明白你的问题.

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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