【问题标题】:Java RMI, Tomcat problem!Java RMI,Tomcat问题!
【发布时间】:2011-08-18 18:17:54
【问题描述】:

我正在学习 Java RMI,并且有一个示例代码来展示如何使用 RMI 通过网络将对象传递给另一个虚拟机。

这是我正在使用的类和代码;

//interface
    import java.rmi.*;

public interface MyRemote extends Remote
{ 
    public String sayHello() throws RemoteException;

}

//My Remote Implementation Class
import java.rmi.*;
import java.rmi.server.*;

public class MyRemoteImpl extends UnicastRemoteObject implements MyRemote
{
    public String sayHello()
    {
        return "Server says, 'Hey' ";
    }

    public MyRemoteImpl() throws RemoteException
    {

    }

    public static void main (String[] args)
    {
        try
        {
            MyRemote service = new MyRemoteImpl();
            Naming.rebind("Remote Hello", service);

        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

//My Remote Client Class
import java.rmi.*;

public class MyRemoteClient
{
    public static void main (String [] args)
    {
        new MyRemoteClient().go();
    }

    public void go()
    {
        try{
            MyRemote service = (MyRemote) Naming.lookup("rmi://127.0.0.1/Remote Hello");

            String s = service.sayHello();

            System.out.println(s);
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

我不断收到 java.net.MalformedURLException: invalid URL String: rmi://127.0.0.1/Remote Hello 我知道这是由于 'Naming.lookup("rmi://127.0.0.1/Remote Hello" )' 最后一课的代码。

我已经安装了 tomcat 并尝试将文件放在一个目录中,试图让它在我的本地机器上运行,但我没有任何乐趣。

我已经为我的项目创建了一个 JAR 文件,并尝试将它也放在一个目录中,但仍然没有成功。我听说过战争文件,但目前我正在学习的书还没有出现...

关于如何在不调用异常的情况下解决此问题的任何提示?我是否将文件错误地放置在 Tomcat 中?我已将它们放在我的 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps 目录中。

任何帮助或提示将不胜感激。

更新

感谢您的建议,字符串异常似乎已经消失,但现在我对此感到很困惑。

java.rmi.ConnectException:连接拒绝主机:127.0.0.1;嵌套异常是: java.net.ConnectException:连接被拒绝:连接 在 sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619) 在 sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216) 在 sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202) 在 sun.rmi.server.UnicastRef.newCall(UnicastRef.java:340) 在 sun.rmi.registry.RegistryImpl_Stub.lookup(未知来源) 在 java.rmi.Naming.lookup(Naming.java:101) 在 MyRemoteClient.go(MyRemoteClient.java:13) 在 _SHELL57.run(_SHELL57.java:10) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:623) 在 bluej.runtime.ExecServer$3.run(ExecServer.java:774) 引起:java.net.ConnectException:连接被拒绝:连接 在 java.net.DualStackPlainSocketImpl.connect0(本机方法) 在 java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:69) 在 java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:316) 在 java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:177) 在 java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:164) 在 java.net.PlainSocketImpl.connect(PlainSocketImpl.java:154) 在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:352) 在 java.net.Socket.connect(Socket.java:569) 在 java.net.Socket.connect(Socket.java:519) 在 java.net.Socket.(Socket.java:416) 在 java.net.Socket.(Socket.java:199) 在 sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40) 在 sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:146) 在 sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)

【问题讨论】:

  • Remote Hello中没有空格可以试试

标签: java tomcat rmi


【解决方案1】:

两件事:

  1. 将远程对象的名称更改为不带空格的名称。
  2. 您是先运行服务器代码吗?

【讨论】:

    【解决方案2】:

    Tomcat 与 RMI 有什么关系? Tomcat是一个servlet/JSP引擎,默认监听8080端口的HTTP请求。

    RMI 是一个完全不同的协议,与 HTTP 无关。 RMI 守护进程默认使用端口 1099。

    我建议查看this

    【讨论】:

      【解决方案3】:

      在服务器上检查您的 /etc/hosts 文件。它应该将 localhost 映射到 127.0.0.1 并将您的真实主机名映射到您的真实 IP 地址。如果您有需要相反的配置,请在导出远程对象之前将系统属性 java.rmi.server.hostname 设置为服务器 JVM 上的正确 IP 地址。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-06
        • 2012-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-20
        相关资源
        最近更新 更多