首页 / JAVA / 终止Java RMI服务器应用程序
终止Java RMI服务器应用程序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了终止Java RMI服务器应用程序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2217字,纯文字阅读大概需要4分钟。
内容图文
![终止Java RMI服务器应用程序](/upload/InfoBanner/zyjiaocheng/658/dc2eb4ad30af405fb8b595f4c301793a.jpg)
我已经使用Java RMI设置了客户端/服务器项目.下面我显示了部分实现.一世
使用启动服务器
ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/C", "start /B java -jar myServer.jar --start);
this.myProcess = processBuilder.start();
我向服务器添加了一个main方法来处理命令行调用.
服务器启动并正常运行.客户端能够按照我的预期进行连接和执行.
当我尝试杀死服务器时,出现了我的问题.这需要从外部完成.哪个对象
先前启动的过程不再可用.实际停止服务器的主要方法
服务器类的实例调用stop方法(请参见下文).现在,此方法会杀死RMI,但不会
至少停止JVM的运行.该过程仍然可用,需要从
任务管理器(在Windows上).
我在实现过程中会错过某些事实吗?为什么进程不停止运行?
public class MyServer {
// ...
public void startServer() throws RemoteException {
// the RMI registry
Registry registry;
try {
// find the registry
registry = LocateRegistry.createRegistry(portRMI);
} catch (Exception e) {
// if the registry does not yet exist, try to create a new registry
// entry or use an existing one
registry = LocateRegistry.getRegistry(MyConstants.HOST_NAME, portRMI);
}
// create the object
servantObject = new MyServant();
// bind the object to the server
registry.rebind(MyConstants.SERVER_NAME, servantObject);
}
public void stopServer() throws RemoteException {
try {
// access the service
Registry rmiRegistry = LocateRegistry.getRegistry(MyConstants.HOST_NAME, portRMI);
MyService myService = (MyService) rmiRegistry.lookup(MyConstants.SERVER_NAME);
rmiRegistry.unbind(MyConstants.SERVER_NAME);
// get rid of the service object
UnicastRemoteObject.unexportObject(myService, true);
// get rid of the rmi registry
UnicastRemoteObject.unexportObject(rmiRegistry, true);
} catch (NoSuchObjectException e) {
// ...
} catch (NotBoundException e) {
// ...
}
}
public static void main(String[] args) {
// handle arguments and call either startServer or stopServer
}
}
public class MyServant extends UnicastRemoteObject implements MyService {
// ...
}
public interface MyService extends Remote {
// ...
}
解决方法:
您应该在RMIServer中添加可用的自写RMIService接口,以便希望停止正在运行的服务器的程序指示其停止.
您尝试停止服务器的应用只是解除了某些对象的绑定,因为它不是正在运行的rmi服务器进程本身,所以不会产生很大的影响.
如果您的rmi服务器是进程a,则应编写一个以进程b运行的应用程序(使用rmi),以发送消息以使进程a停止它.
内容总结
以上是互联网集市为您收集整理的终止Java RMI服务器应用程序全部内容,希望文章能够帮你解决终止Java RMI服务器应用程序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。