如何远程关闭 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 服务器 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • 如何将本机库链接到 IntelliJ 中的 jar?

    我正在尝试在 IntelliJ 中设置 OpenCV 但是我一直在弄清楚如何告诉 IntelliJ 在哪里可以找到本机库位置 在 Eclipse 中 添加 jar 后 您可以在 Build Config 屏幕中设置 Native 库的位置
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • .properties 中的通配符

    是否存在任何方法 我可以将通配符添加到属性文件中 并且具有所有含义 例如a b c d lalalala 或为所有以结尾的内容设置一个正则表达式a b c anything 普通的 Java 属性文件无法处理这个问题 不 请记住 它实际上是
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 如何在java中将一个数组列表替换为另一个不同大小的数组列表

    我有两个大小不同的数组列表 如何从此替换 ArrayList
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • java.lang.IllegalStateException:提交响应后无法调用 sendRedirect()

    这两天我一直在尝试找出问题所在 我在这里读到我应该在代码中添加一个返回 我做到了 但我仍然得到 java lang IllegalStateException Cannot call sendRedirect after the respo
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类

随机推荐

  • 即使关闭 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