【发布时间】:2013-05-06 23:06:14
【问题描述】:
我已经使用此代码和组件创建了多个路由:
Component component = new Component();
component.getServers().add(Protocol.HTTP, port);
component.getDefaultHost().attach(pair.uriPattern, pair.restlet);
component.getDefaultHost().attach("/heartbeat", new HeartbeatRestlet());
我的心跳代码有效。
但是当我使用路由器作为上面的pair.restlet 时,它不起作用:
Router router = new Router();
Restlet fooHandler = new FooRouter();
Restlet barHandler = new BarRouter();
router.attach("/foo/{fooId}", fooHandler);
router.attach("/bar/{barId1}/{barId2}", barHandler);
Restlet 文档仅给出了使用带有Application 类的路由器的示例:
public class FirstStepsApplication extends Application {
@Override
public synchronized Restlet createInboundRoot() {
Router router = new Router(getContext());
router.attach("/hello", HelloWorldResource.class);
return router;
}
}
实际上使用我的基于路由器的代码与点击一个不存在的 URL 的效果相同。
所以我问:
- 基于路由器的方法应该实现的目标与基于组件的方法之间有什么区别吗?
- 我可以使用基于路由器的方法使此代码工作吗?到目前为止,我唯一的解决方案是废弃多个路由器并附加多个组件,这需要处理更多遗留代码。
【问题讨论】: