从组件中删除后,VirtualHost仍处于活动状态

时间:2013-08-10 12:58:37

标签: restlet

当我从正在运行的组件的主机列表中删除以前添加的VirtualHost时,虚拟主机仍在继续使用。

    Component component = new Component();
    component.getServers().add(Protocol.HTTP, 8080);
    component.getDefaultHost().attachDefault(DefaultResource.class);

    VirtualHost host = new VirtualHost(new Context());
    host.setHostDomain("myhost\\.org");
    host.attachDefault(MyHostResource.class);
    component.getHosts().add(host);
    component.start();
    Thread.currentThread().sleep(5000);
    System.out.println("Stopping myhost");
    component.getHosts().remove(host);

5秒后,对http://myhost.org的GET查询应该给出DefaultResource的输出,但是它会一直给出MyHostResource的输出,但只有在前5秒内提交GET之后。似乎某些路由信息会保留在缓存中。

我目前正在构建一个动态插入/删除VirtualHosts的OSGi应用程序。但是如果虚拟主机没有正确断开连接,我会得到ServiceUnavailableExeptions。

我应该如何删除虚拟主机并正确更新路由缓存?

谢谢!

1 个答案:

答案 0 :(得分:0)

我找到了。调用

 component.updateHosts()

做了这个伎俩。