首页 > 技术 > 在 Java 程序中释放 RMI 端口

在 Java 程序中释放 RMI 端口

2009年9月14日 1,006 views 发表评论 阅读评论

通过 LocateRegistry.createRegistry(port) 创建了一个 rmiregistry 监听 port 所在端口,

如果想要在程序中把这个端口关闭,也就是关闭 RMI registry 服务,可以参考以下的代码。

注:似乎在2003年的时候,这个方法还行不通,到了 JDK6 的版本才解决这个问题的。

参考 Sun bug 4457683bug 4508962, 以及 这个 mail archive


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.rmi.NoSuchObjectException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
 
public class RMITest {
 
	public void testRMIPortRelease() {
		System.out.println("Testing port release");
 
		System.out.println("Acquiring port... ");
		Remote reg = null;
		try {
			reg = LocateRegistry.createRegistry(1102);
		} catch (RemoteException ex) {
			ex.printStackTrace();
		}
 
		System.out.println("releasing port... ");
		try {
			java.rmi.server.UnicastRemoteObject.unexportObject(reg, true);
		} catch (NoSuchObjectException ex1) {
			ex1.printStackTrace();
		}
		reg = null;
	}
 
	public static void main(String[] args) {
		RMITest s = new RMITest();
		s.testRMIPortRelease();
	}
}


分类: 技术 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.