Java RMI程序输出Ready后直接关闭,无法等待客户端连接求助
问题:RMI服务启动输出“Ready”后直接退出
我已经被这个问题困扰数小时了。以下是我的主程序代码:
public class Main { public static void main(final String[] args) { try { System.setProperty("java.rmi.server.hostname", "127.0.0.1"); ServerInterface server = (ServerInterface) UnicastRemoteObject.exportObject(new Server(), 0); Registry registry = LocateRegistry.createRegistry(Configuration.rmiPort); registry.bind("server", server); System.out.println("Ready"); } catch(Exception e) { e.printStackTrace(); } } }
Server类包含业务逻辑(目前仅实现一个输出文本的方法)。每次编译运行该程序,输出“Ready”后就直接关闭。我在Stack Overflow上找到类似问题的帖子,已尝试以下方案:
- 将注册表对象保存到静态字段
- 使用外部rmiregistry(出现反序列化异常)
- 用rebind替代bind
- 在导出前将待导出对象保存到静态字段
我原本以为,一旦将对象导出到注册表,线程应保持存活并等待连接,无论导出对象是否为本地声明。这个问题会不会是Maven导致的?因为这段代码来自YouTube教程,我本地用javac和java命令运行正常,但在服务器上用mvn clean install exec:java运行时就出现此问题。
内容的提问来源于stack exchange,提问作者Ceriana
相关产品推荐
相关产品推荐

