rmi远程对象调用错误

kxl1021416743 2010-04-04 05:21:24
String url="rmi://localhost/";
System.setSecurityManager(new RMISecurityManager());
Context namingContext=new InitialContext();
User u=(User)namingContext.lookup(url+"User");
Register reg=(Register)Naming.lookup(url+"Register");

报错:javax.naming.NameNotFoundException: User
at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:99)
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at RegisterClient.<init>(RegisterClient.java:16)
at Client$1.actionPerformed(Client.java:102)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
...全文
122 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxl1021416743 2010-04-04
  • 打赏
  • 举报
回复
String url="rmi://localhost/";
try {
System.setSecurityManager(new RMISecurityManager());
User u=(User)Naming.lookup(url+"User");
u.setNo(a);
u.setName(b);
u.setSex(c);
u.setPassword(d);
// Context namingContext=new InitialContext();
// Register reg=(Register)namingContext.lookup(url+"Register");
// reg.zhuce(u);
System.out.println("注册成功");
System.out.println(u.getPassword());
System.out.println(url);

} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}


为什么我把那些屏蔽的代码弄成屏蔽的就能运行。为什么不把他们屏蔽就报错。
报错代码:javax.naming.NameNotFoundException: Register
kxl1021416743 2010-04-04
  • 打赏
  • 举报
回复
不过还是没用。谁能帮忙看一下。谢谢了
kxl1021416743 2010-04-04
  • 打赏
  • 举报
回复
哦 先谢过了
奔跑哥 2010-04-04
  • 打赏
  • 举报
回复
User ui=new UserImpl();
LocateRegistry.createRegistry(1099); //指定端口号
Naming.rebind("User", ui); //这个地方不用url,只是指定你的name,即“user”,只是在调用的时候才加url的,请记住了。
kxl1021416743 2010-04-04
  • 打赏
  • 举报
回复
这是我的服务器的代码:

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;


public class Server {


public static void main(String[] args) {
try {
User ui=new UserImpl();
LocateRegistry.getRegistry();
Naming.rebind("rmi://localhost/User", ui);
Register reg=new registerImpl();
Registry register2=LocateRegistry.getRegistry();
register2.rebind("rmi//localhost/Register", reg);
System.out.println("服务器已经启动!");
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
能帮我看一下吗?急啊!
kyone2010 2010-04-04
  • 打赏
  • 举报
回复
什么东东?
zuoguodang 2010-04-04
  • 打赏
  • 举报
回复
我觉得你没注册对
服务端

try {
IHello h=new Hello();
LocateRegistry.createRegistry(8888);
Naming.bind("rmi://localhost:8888/RHello",h);
} catch (RemoteException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (AlreadyBoundException e) {
e.printStackTrace();
}

客户端

IHello rhello =(IHello) Naming.lookup("rmi://localhost:8888/RHello");
System.out.println(rhello.sayHelloFromClient("leo"));

IHello是接口,继承了Remote
Hello是实现类,并且继承了UnicastRemoteObject

62,624

社区成员

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

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