在ubuntu上通过公共IP设置RMI引发NotBoundException
试图在ubuntu上通过公共IP设置RMI,但徒劳无功。我已经设置了http隧道。RMI服务器/小程序客户端在局域网上成功运行,ubuntu作为RMI服务器。通过internet,我能够在1099上将对象导出到固定端口1100上成功地运行服务器。我已经将1099和1100端口转发到ubuntu 192.168.1.XXX的本地IP。我还在rmi服务器和客户端上设置了以下内容在ubuntu上通过公共IP设置RMI引发NotBoundException,ubuntu,applet,rmi,static-ip-address,Ubuntu,Applet,Rmi,Static Ip Address,试图在ubuntu上通过公共IP设置RMI,但徒劳无功。我已经设置了http隧道。RMI服务器/小程序客户端在局域网上成功运行,ubuntu作为RMI服务器。通过internet,我能够在1099上将对象导出到固定端口1100上成功地运行服务器。我已经将1099和1100端口转发到ubuntu 192.168.1.XXX的本地IP。我还在rmi服务器和客户端上设置了以下内容 [rmiHostName = public ip] //configuration System.setProperty
[rmiHostName = public ip]
//configuration
System.setProperty("java.security.policy","http://"+rmiHostName+"/basedir/rmi/java.policy");
System.setProperty("java.rmi.server.hostname", rmiHostName);//external ip address
System.setProperty("java.rmi.server.codebase",http://"+rmiHostName+"/basedir/rmi/xxx-xxx-1.0.jar");
然而,我得到了以下例外:
network: Connecting public-ip/cgi-bin/java-rmi.cgi?forward=1099 with proxy=DIRECT
java.rmi.NotBoundException: //public-ip:1099/MyServer
at sun.rmi.registry.RegistryImpl.lookup(RegistryImpl.java:136)
at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:409)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:267)
at sun.rmi.transport.Transport$1.run(Transport.java:177)
at sun.rmi.transport.Transport$1.run(Transport.java:174)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:173)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:553)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:772)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(Unknown Source)
at sun.rmi.transport.StreamRemoteCall.executeCall(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source)
at rmi.source.StellarMessageClient.init(StellarMessageClient.java:99)
at com.sun.deploy.uitoolkit.impl.awt.AWTAppletAdapter.init(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
basic: Applet initialized
basic: Starting applet
basic: completed perf rollup
basic: Applet made visible
basic: Applet started
basic: Told clients applet is started
你们能帮我解决这个问题吗
java.rmi.NotBoundException: //public-ip:1099/MyServer
您没有以MyRegistry的名义将远程对象绑定到位于//public ip:1099的注册表中。谢谢您的快速响应。实际上,我已按如下方式绑定:rmiReg.rebind(“/”+rmiHost+”:“+rmiPort+”/“+”MyServer“,remoteObj);其中rmiHost是ubuntu服务器192.168.1.XX的本地静态ip客户端通过公共静态ip 59.192.XX.zz访问非常感谢。我现在可以将其与公共ip正确绑定。现在客户端小程序正在尝试连接到我的ubuntu服务器上的随机端口。我将客户端小程序引发的错误粘贴到下面:网络:连接到代理=直接网络:连接代理=直接网络:连接代理=直接网络:连接代理=直接java.rmi.ConnectException:连接拒绝主机:公共ip;嵌套的异常是:java.net.ConnectException:Connection拒绝:connect at sun.rmi.transport.tcp.TCPEndpoint.newSocket(未知源代码)at java.net.AbstractPlainSocketImpl.connectToAddress(未知源代码)I服务器上只有两个端口打开,即1099和1100。如何修复aplet请求中的端口,使其始终像公共ip:1099一样连接服务器?请帮助。谢谢。我将远程对象绑定到公共ip上,可以从客户端连接注册表。但是,客户端正在尝试通过服务器上的随机端口进行连接,因此无法与服务器通信,因为这些端口未打开。您能帮我吗?