当前位置: 首页 > 知识库问答 >
问题:

如何关闭RMI-Server没有得到Unmarshall异常?

唐修诚
2023-03-14

我编写了一个RMI示例,现在我的程序的问题是,如果用户输入“closeBookManager()”,我将尝试终止或关闭服务器。考虑下面的代码:

if(in.equals("closeBookManager()")) {
    service.closeBookManager();
    break;
}

这段代码位于while循环中,在用户键入“closeBookManager()”

现在的问题是,如果用户输入上述字符串,我想关闭服务器。我用系统试过了。在服务器端退出(0)

public void closeBookManager() throws RemoteException {
    ...
    System.exit(0);
}

但它会在客户端抛出此错误:

线程“main”java中出现异常。马绍尔群岛共和国。解组异常:解组返回头时出错;嵌套的例外是:java。木卫一。太阳时的EOFEException。马绍尔群岛共和国。运输StreamRemoteCall。sun上的executeCall(StreamRemoteCall.java:229)。马绍尔群岛共和国。服务器UnicastRef。在java上调用(UnicastRef.java:162)。马绍尔群岛共和国。服务器RemoteObjectInvocationHandler。在java上调用远程方法(RemoteObjectInvocationHandler.java:227)。马绍尔群岛共和国。服务器RemoteObjectInvocationHandler。在com上调用(RemoteObjectInvocationHandler.java:179)。太阳代理$Proxy0。客户端的closeBookManager(未知源)。main(Client.java:66)由:java引起。木卫一。java中的EOFEException。木卫一。数据输入流。sun上的readByte(DataInputStream.java:267)。马绍尔群岛共和国。运输StreamRemoteCall。executeCall(StreamRemoteCall.java:215)。。。还有5个

我也试图解除绑定和导出对象,但它不会工作。

请告诉我我做错了什么或者我能做什么。我会感谢任何帮助:)

共有1个答案

皇甫飞跃
2023-03-14

让它在一个单独的线程中在短时间延迟后退出,以便让远程方法有时间完成并返回其结果。

 类似资料:
  • 我有以下代码

  • 我想用for循环写一个代码,但我无法得到背后的逻辑。有人能帮助我在这个代码问题:问题的图片

  • 问题内容: 我一直在对我们的一个宠物项目进行代码审查(通常使用诸如FindBugs之类的工具),并且FindBugs将以下代码标记为错误的(伪代码): 错误是此代码可能不会释放资源。我发现ResultSet和Statement没有关闭,所以我最终将它们关闭: 但是我在许多项目(来自许多公司)中遇到了上述模式,没有人关闭ResultSets或Statements。 关闭连接时,是否关闭了Result

  • 问题内容: 关闭。 这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 7年前关闭。 我有一个包含大量数据的 SQL Server 数据库和一个空的 MySQL 数据库。现在,我想将SQL Server数据库的所有数据(包括数据库架构)复制到MySQL数据库。 我曾考虑过使用原始SQL转储,但是SQL Server的SQL语法与MyS

  • 我创建了一个类来保存一些@ExceptionHandler,这样我就可以捕捉InvalidWSUserException,并用一个JSON字符串响应,通知请求客户机请求中的令牌无效。 我已经在另一个项目中工作了这个,但我似乎无法在这个新项目中工作。 InvalidWSUserException为空,因为处理程序应该处理响应; 为了确认,我在浏览器中看到的输出是错误500 json响应;其中应该是来

  • 问题内容: 如标题所示:是否可以在SQL Server中关闭隐式类型转换? 我希望以下简单的SQL生成错误 问题答案: 无法禁用它。 不过已经提出了要求:请参阅来自Erland Sommarskog 的建议的MS Connect请求 但是,根据数据类型优先规则完全可以预测 您的外键示例很有趣,因为实际的FOREIGN KEY约束需要相同的数据类型,长度和排序规则。