如何远程关闭 Java RMI 服务器

2024-01-01

我有一个非常简单的 Java RMI 服务器,如下所示:

    import java.rmi.*;
    import java.rmi.server.*;

    public class CalculatorImpl extends UnicastRemoteObject implements Calculator {

        private String mServerName;

        public CalculatorImpl(String serverName) throws RemoteException
        {
            super();
            mServerName = serverName;
        }

        public int calculate(int op1, int op2) throws RemoteException
        {
            return op1 + op2;
        }

        public void exit() throws RemoteException
        {
            try{
                Naming.unbind(mServerName);
                System.out.println("CalculatorServer exiting.");
            }
            catch(Exception e){}

            System.exit(1);
        }

        public static void main(String args[]) throws Exception
        {
            System.out.println("Initializing CalculatorServer.");

            String serverObjName = "rmi://localhost/Calculator";

            Calculator calc = new CalculatorImpl(serverObjName);

            Naming.rebind(serverObjName, calc);

            System.out.println("CalculatorServer running.");
        }
}

当我调用 exit 方法时,System.exit(1) 抛出以下异常:

CalculatorServer exiting.
java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
        java.io.EOFException
        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:203)
        at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:126)
        at CalculatorImpl_Stub.exit(Unknown Source)
        at CalculatorClient.<init>(CalculatorClient.java:17)
        at CalculatorClient.main(CalculatorClient.java:29)
Caused by: java.io.EOFException
        at java.io.DataInputStream.readByte(DataInputStream.java:243)
        at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:189)
        ... 4 more
[2]+  Exit 1                  java CalculatorImpl

我在这个方法中做错了什么?


如果有人遇到类似的问题,我自己找到了答案。这是我的 exit() 方法:

public void exit() throws RemoteException
{
    try{
        // Unregister ourself
        Naming.unbind(mServerName);

        // Unexport; this will also remove us from the RMI runtime
        UnicastRemoteObject.unexportObject(this, true);

        System.out.println("CalculatorServer exiting.");
    }
    catch(Exception e){}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何远程关闭 Java RMI 服务器 的相关文章

随机推荐

  • 即使关闭 SSH 终端后,如何保持 Websocket 服务器运行?

    因此 我将 Ratchet 与 PHP 结合使用 并且目前已将一个成功的 websocket 示例上传到我的服务器 它在我进入 SSH 后起作用 然后只需手动运行 php bin chat server php 我想知道的是 在商业情况下
  • 更改 VSCode 用户设置位置

    我想将我的用户设置文件置于版本控制之下 最好是一个单独的文件夹 但我找不到告诉 VSCode 我的设置文件所在位置的选项 有没有办法更改 Visual Studio Code 查找的位置settings json file Update 由
  • 在多台 Mac 上开发 iPhone 应用程序

    这可能非常愚蠢 但我可以使用多台具有不同开发配置文件的 Mac 来制作应用程序吗 如果我带着我朋友的 Macbook 去旅行 而他也是一名开发人员并拥有自己的开发配置文件 我可以使用我自己的开发人员配置文件来处理我的应用程序而不干扰他的应用
  • 在 JavaScript 中初始化对象的空属性的正确方法是什么

    我有一个具有属性的对象 其中 1 个属性prop2只会在稍后初始化并在准备好时添加到该对象 我想将其显示为对象的属性 纯粹是为了人类可读性 这样当我稍后查看代码时 我就会知道它存在并且将 可以使用 所以我的问题是什么 是什么正确的方法初始化
  • 如何查看/更新数据库版本?有类似“fallbackToDestructiveMigration”之类的东西吗?

    修改后sq通过重命名其中一个表并添加另一个表来更改我的文件 我没有找到任何地方来指定数据库架构或版本已更改 并且我不想迁移 只需重新创建数据库 有关的文档官方网站 https cashapp github io sqldelight mul
  • 阻止访问 php.ini 文件

    我们在 Web 树的根目录中有一个自定义的 php ini 和 htaccess 文件 默认情况下 htaccess无法访问 但php ini可以访问 例如 http example com php ini 阻止访问 php ini 文件的
  • 在 Qt Creator 中进入 Qt 源代码(在 Ubuntu Linux 中)

    我在 Ubuntu 中使用 Qt Creator 它是从存储库安装的 但就像现在一样 调试时无法进入 Qt 源代码 我怎样才能启用它 由于Qt Creator使用gdb 因此需要配置gdb 首先要做的是安装 Qt 调试符号 apt get
  • 服务器时区值“CDT”无法识别或代表多个时区

    当尝试连接到我网站上的 mySQL 时 我收到此消息java sql SQLException 服务器时区值 CDT 无法识别或 代表多个时区 您必须配置服务器或 JDBC 驱动程序 通过 serverTimezone 配置属性 使用更多
  • MPMoviePlayerViewController 定制

    我正在使用 MPMoviePlayerViewController 播放器控件设置为 MPMovieControlStyleFullscreen 我对 MPMovieControlStyleFullscreen 中的一些按钮有问题 前进 后
  • 如何将原点置于 imshow() 图的中心

    作为模拟通过孔径的衍射的长程序的一部分 我正在摆弄尝试得到我的结果plt imshow 使其原点位于绘图的中心 即我希望更改轴 相关代码部分是 n 40 lam 0 0006 k 2 np pi lam z float input Type
  • 使用 PHP MySQL PDO 通过 OTP/2FA 登录

    它工作正常 除了 如果我在 otp 字段中输入一个数字 即使它与数据库中的数字不匹配 它也会转到 home php 您能告诉我代码有什么问题或丢失吗 谢谢你 if empty POST authenticate POST otp try o
  • 图像文件副本,正在被另一个进程使用

    我正在尝试创建一个用户 perfil 编辑窗口 在此窗口中有一个图像控件当我选择一个图像文件时 它将显示在这个图像控件中 并将该文件复制到我的图像文件夹中 第一次没问题 但第二次 它显示错误 该进程无法访问文件 C 1 jpg 因为它正在被
  • Qt 4.8.2 与 GCC 4.7.0.1 不断崩溃

    我已经下载了 Qt 4 8 2 库 Qt Creator 2 5 2 并使用 w32api 版本 3 13 和 GCC g 版本 4 7 0 1 手动安装了 MingW 我的操作系统是 Windows 7 Ultimate x64 我可以在
  • 在表达式主体属性中调用新的 RelayCommand (ICommand) 是否安全

    通过表达式主体属性 我们可以创建一个RelayCommand如下 public RelayCommand Command gt command command new RelayCommand CommandExecute 然而这也是可能的
  • 如何在预定时间运行 PHP 脚本

    我需要每天在预定时间运行 php 脚本来更新数据库中的一些字段并发送自动电子邮件 我怎样才能做到这一点 是否可以在 XAMP 服务器中编写一些服务以每天在预定时间运行脚本 我不知道如何更新数据库并在预定时间自动发送电子邮件 任何人都可以分享
  • gayi 未定义 - Google 登录问题与gapi.auth2.init

    我正在尝试实施 Google Sign In 并检索用户的个人资料信息 错误是 Uncaught ReferenceError gapi未定义 这是为什么
  • KnockoutJS 选择选项和选定值

    类似的问题如 选择元素的初始值 https stackoverflow com questions 7516089 knockoutjs select initial value 我在设置选择元素的初始值时遇到问题 我基本上有一个从服务器传
  • 为什么我们在使用 JSF Web 应用程序时需要 beans.xml?

    在学习了一段时间 JSP 和 Servlet 之后 我开始使用 JSF 进行 Web 开发 当您创建 JSF Web 应用程序时 您总是 可能经常 但我不确定是否总是 必须创建 beans xml 并且您不需要在其中编写任何内容 但是 如果
  • php 文件上传错误 1 ​​- 使用 php_ini 的正确方法是什么?

    我在将 pdf 上传到服务器时遇到问题 upload max filesize 为 2M 文件大于此值 约为 4M 我在这里发现了一个与我的问题类似的帖子 即使 upload max size 大于文件大小 FILE 上传大文件也会出现错误
  • 如何远程关闭 Java RMI 服务器

    我有一个非常简单的 Java RMI 服务器 如下所示 import java rmi import java rmi server public class CalculatorImpl extends UnicastRemoteObje